n8n-editor-ui
Version:
Workflow Editor UI for n8n
559 lines (558 loc) • 44.5 kB
JavaScript
;
(function () {
System.register(["./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./overlay-legacy-o1gtoD8p.js", "./empty-legacy-CA9D6itE.js", "./useMessage-legacy-M2m6s8Ce.js", "./dialog-legacy-Bm1i_4WP.js", "./ModalDrawer-legacy-BQYdNhEp.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./retry-legacy-CTwsGM7o.js", "./CredentialIcon-legacy-hdZE46El.js", "./constants-legacy-DjFSod4r.js", "./chat.store-legacy-2uSv5jQT.js", "./fileUtils-legacy-BbiGYBne.js", "./MainSidebarUserArea-legacy-OWY4Ang_.js", "./ChatAgentAvatar-legacy-CHbDC3oB.js", "./useChatHubSidebarState-legacy-CuwRhs3K.js"], function (_export, _context) {
"use strict";
var computed, toDisplayString, createElementBlock, createCommentVNode, nextTick, unref, ref, onBeforeUnmount, createVNode, defineComponent, createBlock, onMounted, Fragment, watch, renderSlot, withCtx, openBlock, withModifiers, renderList, createTextVNode, createSlots, useTemplateRef, resolveComponent, normalizeClass, createBaseVNode, useIntersectionObserver, useEventListener, useMediaQuery, useI18n, N8nLogo_default, N8nText_default, N8nIcon_default, N8nScrollArea_default, N8nActionDropdown_default, N8nIconButton_default, N8nInput_default, __plugin_vue_export_helper_default, useRoute, useRouter, useMessage, ModalDrawer_default, useUIStore, useSettingsStore, useCredentialsStore, useTelemetry, useToast, CHAT_HUB_SIDE_MENU_DRAWER_MODAL_KEY, VIEWS, MODAL_CONFIRM, CHAT_VIEW, CHAT_AGENTS_VIEW, CHAT_CONVERSATION_VIEW, MOBILE_MEDIA_QUERY, unflattenModel, groupConversationsByDate, useChatStore, MainSidebarUserArea_default, ChatAgentAvatar_default, useChatHubSidebarState, __vite_style__, ChatSidebarLink_vue_vue_type_script_setup_true_lang_default, menuItem, active, menuItemLink, label, actionDropdown, actionDropdownTrigger, ChatSidebarLink_vue_vue_type_style_index_0_lang_module_default, cssModules$3, ChatSidebarLink_default, ChatSessionMenuItem_vue_vue_type_script_setup_true_lang_default, ChatSessionMenuItem_default, skeletonItem, skeletonAvatar, skeletonText, SkeletonMenuItem_vue_vue_type_style_index_0_lang_module_default, _sfc_main, cssModules$2, SkeletonMenuItem_default, ChatSidebarContent_vue_vue_type_script_setup_true_lang_default, component, isMobileDevice, header, logo, items, group, groupHeader, loadMoreTrigger, loading, empty, ChatSidebarContent_vue_vue_type_style_index_0_lang_module_default, cssModules$1, ChatSidebarContent_default, EDGE_TRIGGER_DISTANCE, ChatSidebar_vue_vue_type_script_setup_true_lang_default, drawer, inDrawer, ChatSidebar_vue_vue_type_style_index_0_lang_module_default, cssModules, ChatSidebar_default;
function _sfc_render(_ctx, _cache) {
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.$style.skeletonItem)
}, [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.skeletonAvatar)
}, null, 2), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.skeletonText)
}, null, 2)], 2);
}
return {
setters: [function (_vueRuntimeEsmBundlerLegacy003Js) {
computed = _vueRuntimeEsmBundlerLegacy003Js.C;
toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn;
createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E;
nextTick = _vueRuntimeEsmBundlerLegacy003Js.G;
unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
ref = _vueRuntimeEsmBundlerLegacy003Js.It;
onBeforeUnmount = _vueRuntimeEsmBundlerLegacy003Js.J;
createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
onMounted = _vueRuntimeEsmBundlerLegacy003Js.Z;
Fragment = _vueRuntimeEsmBundlerLegacy003Js._;
watch = _vueRuntimeEsmBundlerLegacy003Js._t;
renderSlot = _vueRuntimeEsmBundlerLegacy003Js.at;
withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
withModifiers = _vueRuntimeEsmBundlerLegacy003Js.h;
renderList = _vueRuntimeEsmBundlerLegacy003Js.it;
createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
createSlots = _vueRuntimeEsmBundlerLegacy003Js.k;
useTemplateRef = _vueRuntimeEsmBundlerLegacy003Js.mt;
resolveComponent = _vueRuntimeEsmBundlerLegacy003Js.ot;
normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn;
createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
}, function (_MapCacheLegacy005Js) {
useIntersectionObserver = _MapCacheLegacy005Js.A;
useEventListener = _MapCacheLegacy005Js.D;
useMediaQuery = _MapCacheLegacy005Js.M;
useI18n = _MapCacheLegacy005Js.gt;
}, function (_srcLegacy007Js) {
N8nLogo_default = _srcLegacy007Js.N;
N8nText_default = _srcLegacy007Js.Vn;
N8nIcon_default = _srcLegacy007Js.Wn;
N8nScrollArea_default = _srcLegacy007Js.i;
N8nActionDropdown_default = _srcLegacy007Js.nt;
N8nIconButton_default = _srcLegacy007Js.xt;
N8nInput_default = _srcLegacy007Js.yt;
}, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
__plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
}, function (_truncateLegacy00hJs) {
useRoute = _truncateLegacy00hJs.v;
useRouter = _truncateLegacy00hJs.y;
}, function (_iconLegacy00nJs) {}, function (_overlayLegacy00rJs) {}, function (_emptyLegacy00vJs) {}, function (_useMessageLegacy00xJs) {
useMessage = _useMessageLegacy00xJs.t;
}, function (_dialogLegacy00DJs) {}, function (_ModalDrawerLegacy00FJs) {
ModalDrawer_default = _ModalDrawerLegacy00FJs.t;
}, function (_useTelemetryLegacy00HJs) {
useUIStore = _useTelemetryLegacy00HJs.Fi;
useSettingsStore = _useTelemetryLegacy00HJs.Ho;
useCredentialsStore = _useTelemetryLegacy00HJs.Ht;
useTelemetry = _useTelemetryLegacy00HJs.t;
}, function (_useToastLegacy00JJs) {
useToast = _useToastLegacy00JJs.t;
}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) {
CHAT_HUB_SIDE_MENU_DRAWER_MODAL_KEY = _constantsLegacy00TJs.Bo;
VIEWS = _constantsLegacy00TJs.Io;
MODAL_CONFIRM = _constantsLegacy00TJs.ts;
}, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) {}, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_retryLegacy01lJs) {}, function (_CredentialIconLegacy02lJs) {}, function (_constantsLegacy03lJs) {
CHAT_VIEW = _constantsLegacy03lJs.l;
CHAT_AGENTS_VIEW = _constantsLegacy03lJs.n;
CHAT_CONVERSATION_VIEW = _constantsLegacy03lJs.r;
MOBILE_MEDIA_QUERY = _constantsLegacy03lJs.u;
}, function (_chatStoreLegacy03nJs) {
unflattenModel = _chatStoreLegacy03nJs.f;
groupConversationsByDate = _chatStoreLegacy03nJs.s;
useChatStore = _chatStoreLegacy03nJs.t;
}, function (_fileUtilsLegacy03pJs) {}, function (_MainSidebarUserAreaLegacy04jJs) {
MainSidebarUserArea_default = _MainSidebarUserAreaLegacy04jJs.t;
}, function (_ChatAgentAvatarLegacy051Js) {
ChatAgentAvatar_default = _ChatAgentAvatarLegacy051Js.t;
}, function (_useChatHubSidebarStateLegacy055Js) {
useChatHubSidebarState = _useChatHubSidebarStateLegacy055Js.t;
}],
execute: function () {
__vite_style__ = document.createElement('style');
__vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._menuItem_xggh1_123 {\n display: flex;\n align-items: center;\n border-radius: var(--spacing--4xs);\n padding-right: 0;\n}\n._menuItem_xggh1_123:focus-within, ._menuItem_xggh1_123:has([aria-expanded=true]), ._menuItem_xggh1_123._active_xggh1_129, ._menuItem_xggh1_123:hover {\n background-color: var(--color--foreground);\n}\n._menuItemLink_xggh1_133 {\n display: flex;\n align-items: center;\n padding: var(--spacing--3xs);\n gap: var(--spacing--3xs);\n cursor: pointer;\n color: var(--color--text);\n min-width: 0;\n flex: 1;\n text-decoration: none;\n outline: none;\n}\n._menuItemLink_xggh1_133:active {\n color: var(--color--text--shade-1);\n}\n._label_xggh1_149 {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n line-height: var(--font-size--lg);\n min-width: 0;\n}\n._actionDropdown_xggh1_158 {\n opacity: 0;\n transition: opacity 0.2s;\n flex-shrink: 0;\n width: 0;\n}\n._menuItem_xggh1_123:has([aria-expanded=true]) ._actionDropdown_xggh1_158, ._menuItem_xggh1_123:has(:focus) ._actionDropdown_xggh1_158, ._menuItem_xggh1_123:hover ._actionDropdown_xggh1_158, ._active_xggh1_129 ._actionDropdown_xggh1_158 {\n width: auto;\n opacity: 1;\n}\n._actionDropdownTrigger_xggh1_169 {\n box-shadow: none !important;\n outline: none !important;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._skeletonItem_zmho6_123 {\n display: flex;\n align-items: center;\n padding: var(--spacing--3xs);\n gap: var(--spacing--3xs);\n border-radius: var(--spacing--4xs);\n height: 30px;\n}\n._skeletonAvatar_zmho6_132,\n._skeletonText_zmho6_133 {\n background: var(--color--foreground);\n animation: _skeleton-pulse_zmho6_1 1s ease-in-out infinite;\n}\n._skeletonAvatar_zmho6_132 {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n._skeletonText_zmho6_133 {\n height: 14px;\n width: 80%;\n border-radius: var(--radius--sm);\n}\n@keyframes _skeleton-pulse_zmho6_1 {\n0%, 100% {\n opacity: 0.6;\n}\n50% {\n opacity: 0.3;\n}\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._component_3m9u4_123 {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding-block: var(--spacing--4xs);\n}\n._component_3m9u4_123._isMobileDevice_3m9u4_129 {\n padding-block: 0;\n}\n._header_3m9u4_133 {\n height: 56px;\n flex-grow: 0;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: var(--spacing--xs);\n gap: var(--spacing--2xs);\n}\n._logo_3m9u4_144 {\n /* Adjust vertical alignment */\n margin-top: -4px;\n}\n._items_3m9u4_149 {\n display: flex;\n flex-direction: column;\n padding: 0 var(--spacing--xs) var(--spacing--sm) var(--spacing--xs);\n gap: var(--spacing--xs);\n}\n._isMobileDevice_3m9u4_129 ._items_3m9u4_149 {\n gap: var(--spacing--sm);\n}\n._group_3m9u4_159 {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n._groupHeader_3m9u4_165 {\n padding: 0 var(--spacing--4xs) var(--spacing--3xs) var(--spacing--4xs);\n}\n._loadMoreTrigger_3m9u4_169 {\n height: 1px;\n width: 100%;\n}\n._loading_3m9u4_174,\n._empty_3m9u4_175 {\n padding: var(--spacing--xs);\n text-align: center;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._drawer_ox5ii_123 .el-drawer__header {\n padding: 0;\n margin: 0;\n}\n._inDrawer_ox5ii_128,\n._static_ox5ii_129 {\n height: 100%;\n background-color: var(--color--background--light-2);\n}\n._static_ox5ii_129 {\n width: 240px;\n position: relative;\n overflow: auto;\n margin-right: calc(-1 * var(--spacing--4xs));\n}/*$vite$:1*/";
document.head.appendChild(__vite_style__);
//#region src/features/ai/chatHub/components/ChatSidebarLink.vue?vue&type=script&setup=true&lang.ts
ChatSidebarLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "ChatSidebarLink",
props: {
active: {
type: Boolean,
default: false
},
to: {},
label: {},
menuItems: {
default: () => []
},
icon: {}
},
emits: ["actionSelect", "click"],
setup(__props, {
emit: __emit
}) {
const emit = __emit;
return (_ctx, _cache) => {
const _component_RouterLink = resolveComponent("RouterLink");
return openBlock(), createElementBlock("div", {
class: normalizeClass([_ctx.$style.menuItem, {
[_ctx.$style.active]: _ctx.active
}])
}, [_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", {
key: 0
}) : (openBlock(), createElementBlock(Fragment, {
key: 1
}, [createVNode(_component_RouterLink, {
to: _ctx.to,
class: normalizeClass(_ctx.$style.menuItemLink),
title: _ctx.label,
onClick: _cache[0] || (_cache[0] = $event => emit("click", $event))
}, {
default: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [_ctx.icon ? (openBlock(), createBlock(unref(N8nIcon_default), {
key: 0,
size: "large",
icon: _ctx.icon
}, null, 8, ["icon"])) : createCommentVNode("", true)]), createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.label)
}, {
default: withCtx(() => [createTextVNode(toDisplayString(_ctx.label), 1)]),
_: 1
}, 8, ["class"])]),
_: 3
}, 8, ["to", "class", "title"]), _ctx.menuItems.length > 0 ? (openBlock(), createBlock(unref(N8nActionDropdown_default), {
key: 0,
items: _ctx.menuItems,
class: normalizeClass(_ctx.$style.actionDropdown),
placement: "bottom-start",
onSelect: _cache[1] || (_cache[1] = $event => emit("actionSelect", $event)),
onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"]))
}, {
activator: withCtx(() => [createVNode(unref(N8nIconButton_default), {
icon: "ellipsis-vertical",
type: "tertiary",
text: "",
class: normalizeClass(_ctx.$style.actionDropdownTrigger)
}, null, 8, ["class"])]),
_: 1
}, 8, ["items", "class"])) : createCommentVNode("", true)], 64))], 2);
};
}
}); //#endregion
//#region src/features/ai/chatHub/components/ChatSidebarLink.vue?vue&type=style&index=0&lang.module.scss
menuItem = "_menuItem_xggh1_123";
active = "_active_xggh1_129";
menuItemLink = "_menuItemLink_xggh1_133";
label = "_label_xggh1_149";
actionDropdown = "_actionDropdown_xggh1_158";
actionDropdownTrigger = "_actionDropdownTrigger_xggh1_169";
ChatSidebarLink_vue_vue_type_style_index_0_lang_module_default = {
menuItem,
active,
menuItemLink,
label,
actionDropdown,
actionDropdownTrigger
}; //#endregion
//#region src/features/ai/chatHub/components/ChatSidebarLink.vue
cssModules$3 = {
"$style": ChatSidebarLink_vue_vue_type_style_index_0_lang_module_default
};
ChatSidebarLink_default = /* @__PURE__ */__plugin_vue_export_helper_default(ChatSidebarLink_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$3]]); //#endregion
//#region src/features/ai/chatHub/components/ChatSessionMenuItem.vue?vue&type=script&setup=true&lang.ts
ChatSessionMenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "ChatSessionMenuItem",
props: {
session: {},
isRenaming: {
type: Boolean
},
active: {
type: Boolean
}
},
emits: ["startRename", "cancelRename", "confirmRename", "delete"],
setup(__props, {
emit: __emit
}) {
const emit = __emit;
const input = useTemplateRef("input");
const editedLabel = ref("");
const chatStore = useChatStore();
const i18n = useI18n();
const agent = computed(() => {
const model = unflattenModel(__props.session);
if (!model) return null;
return chatStore.getAgent(model, __props.session.agentName);
});
const dropdownItems = computed(() => [{
id: "rename",
label: i18n.baseText("chatHub.session.actions.rename"),
icon: "pencil"
}, {
id: "delete",
label: i18n.baseText("chatHub.session.actions.delete"),
icon: "trash-2"
}]);
function handleActionSelect(action) {
if (action === "rename") {
editedLabel.value = __props.session.title;
emit("startRename", __props.session.id);
} else if (action === "delete") emit("delete", __props.session.id);
}
function handleBlur() {
const trimmed = editedLabel.value.trim();
if (trimmed && trimmed !== __props.session.title) emit("confirmRename", __props.session.id, trimmed);else emit("cancelRename");
}
function handleKeyDown(e) {
if (e.key === "Escape") {
emit("cancelRename");
return;
}
if (e.key === "Enter" && !e.isComposing) handleBlur();
}
watch(() => __props.isRenaming, async renaming => {
if (renaming) {
editedLabel.value = __props.session.title;
await nextTick();
input.value?.focus();
input.value?.select();
} else editedLabel.value = "";
}, {
immediate: true
});
return (_ctx, _cache) => {
return openBlock(), createBlock(ChatSidebarLink_default, {
to: {
name: unref(CHAT_CONVERSATION_VIEW),
params: {
id: _ctx.session.id
}
},
active: _ctx.active,
"menu-items": dropdownItems.value,
label: _ctx.session.title,
onActionSelect: handleActionSelect
}, createSlots({
icon: withCtx(() => [createVNode(ChatAgentAvatar_default, {
agent: agent.value,
size: "sm"
}, null, 8, ["agent"])]),
_: 2
}, [_ctx.isRenaming ? {
name: "default",
fn: withCtx(() => [createVNode(unref(N8nInput_default), {
size: "small",
ref_key: "input",
ref: input,
modelValue: editedLabel.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = $event => editedLabel.value = $event),
onBlur: handleBlur,
onKeydown: handleKeyDown
}, null, 8, ["modelValue"])]),
key: "0"
} : void 0]), 1032, ["to", "active", "menu-items", "label"]);
};
}
}); //#endregion
//#region src/features/ai/chatHub/components/ChatSessionMenuItem.vue
ChatSessionMenuItem_default = ChatSessionMenuItem_vue_vue_type_script_setup_true_lang_default; //#endregion
//#region src/features/ai/chatHub/components/SkeletonMenuItem.vue?vue&type=style&index=0&lang.module.scss
skeletonItem = "_skeletonItem_zmho6_123";
skeletonAvatar = "_skeletonAvatar_zmho6_132";
skeletonText = "_skeletonText_zmho6_133";
SkeletonMenuItem_vue_vue_type_style_index_0_lang_module_default = {
skeletonItem,
skeletonAvatar,
skeletonText,
"skeleton-pulse": "_skeleton-pulse_zmho6_1"
}; //#endregion
//#region src/features/ai/chatHub/components/SkeletonMenuItem.vue
_sfc_main = {};
cssModules$2 = {
"$style": SkeletonMenuItem_vue_vue_type_style_index_0_lang_module_default
};
SkeletonMenuItem_default = /* @__PURE__ */__plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render], ["__cssModules", cssModules$2]]); //#endregion
//#region src/features/ai/chatHub/components/ChatSidebarContent.vue?vue&type=script&setup=true&lang.ts
ChatSidebarContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "ChatSidebarContent",
props: {
isMobileDevice: {
type: Boolean
}
},
setup(__props) {
const route = useRoute();
const router = useRouter();
const chatStore = useChatStore();
const toast = useToast();
const message = useMessage();
const sidebar = useChatHubSidebarState();
const settingsStore = useSettingsStore();
const credentialsStore = useCredentialsStore();
const telemetry = useTelemetry();
const readyToShowSessions = computed(() => chatStore.sessionsReady && credentialsStore.allCredentialTypes.length > 0);
const i18n = useI18n();
const renamingSessionId = ref();
const loadMoreTrigger$1 = ref(null);
const currentSessionId = computed(() => typeof route.params.id === "string" ? route.params.id : void 0);
const groupedConversations = computed(() => groupConversationsByDate((chatStore.sessions.ids ?? []).reduce((acc, id) => {
const session = chatStore.sessions.byId[id];
if (session) acc.push(session);
return acc;
}, [])));
function handleStartRename(sessionId) {
renamingSessionId.value = sessionId;
}
function handleCancelRename() {
renamingSessionId.value = void 0;
}
async function handleConfirmRename(sessionId, newLabel) {
try {
await chatStore.renameSession(sessionId, newLabel);
renamingSessionId.value = void 0;
} catch (error) {
toast.showError(error, i18n.baseText("chatHub.session.updateTitle.error"));
}
}
async function handleDeleteSession(sessionId) {
if ((await message.confirm(i18n.baseText("chatHub.session.delete.confirm.message"), i18n.baseText("chatHub.session.delete.confirm.title"), {
confirmButtonText: i18n.baseText("chatHub.session.delete.confirm.button"),
cancelButtonText: i18n.baseText("chatHub.session.delete.cancel.button")
})) !== "confirm") return;
try {
await chatStore.deleteSession(sessionId);
toast.showMessage({
type: "success",
title: i18n.baseText("chatHub.session.delete.success")
});
if (sessionId === currentSessionId.value) router.push({
name: CHAT_VIEW
});
} catch (error) {
toast.showError(error, i18n.baseText("chatHub.session.delete.error"));
}
}
function handleNewChatClick() {
telemetry.track("User clicked new chat button", {});
sidebar.toggleOpen(false);
}
useIntersectionObserver(loadMoreTrigger$1, ([{
isIntersecting
}]) => {
if (isIntersecting) chatStore.fetchMoreSessions();
}, {
threshold: .1
});
onMounted(() => {
if (!chatStore.sessionsReady) chatStore.fetchSessions(true);
});
return (_ctx, _cache) => {
const _component_RouterLink = resolveComponent("RouterLink");
return openBlock(), createElementBlock("div", {
class: normalizeClass([_ctx.$style.component, {
[_ctx.$style.isMobileDevice]: _ctx.isMobileDevice
}])
}, [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.header)
}, [createVNode(_component_RouterLink, {
to: {
name: unref(VIEWS).HOMEPAGE
}
}, {
default: withCtx(() => [createVNode(unref(N8nLogo_default), {
class: normalizeClass(_ctx.$style.logo),
size: "small",
collapsed: false,
"release-channel": unref(settingsStore).settings.releaseChannel
}, null, 8, ["class", "release-channel"])]),
_: 1
}, 8, ["to"]), unref(sidebar).canBeStatic.value ? (openBlock(), createBlock(unref(N8nIconButton_default), {
key: 0,
title: unref(i18n).baseText("chatHub.sidebar.button.toggle"),
icon: "panel-left",
type: "tertiary",
text: "",
size: "small",
"icon-size": "large",
onClick: _cache[0] || (_cache[0] = $event => unref(sidebar).toggleStatic())
}, null, 8, ["title"])) : createCommentVNode("", true)], 2), createBaseVNode("div", {
class: normalizeClass(_ctx.$style.items)
}, [createVNode(ChatSidebarLink_default, {
to: {
name: unref(CHAT_VIEW),
force: true
},
label: unref(i18n).baseText("chatHub.sidebar.link.newChat"),
icon: "square-pen",
active: unref(route).name === unref(CHAT_VIEW),
onClick: handleNewChatClick
}, null, 8, ["to", "label", "active"]), createVNode(ChatSidebarLink_default, {
to: {
name: unref(CHAT_AGENTS_VIEW)
},
label: unref(i18n).baseText("chatHub.sidebar.link.customAgents"),
icon: "robot",
active: unref(route).name === unref(CHAT_AGENTS_VIEW),
onClick: _cache[1] || (_cache[1] = $event => unref(sidebar).toggleOpen(false))
}, null, 8, ["to", "label", "active"])], 2), createVNode(unref(N8nScrollArea_default), {
"as-child": "",
type: "scroll"
}, {
default: withCtx(() => [createBaseVNode("div", {
class: normalizeClass(_ctx.$style.items)
}, [!readyToShowSessions.value ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.group)
}, [(openBlock(), createElementBlock(Fragment, null, renderList(10, i => {
return createVNode(SkeletonMenuItem_default, {
key: `loading-${i}`
});
}), 64))], 2)) : (openBlock(true), createElementBlock(Fragment, {
key: 1
}, renderList(groupedConversations.value, (group$1, index) => {
return openBlock(), createElementBlock("div", {
key: group$1.group,
class: normalizeClass(_ctx.$style.group)
}, [createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.groupHeader),
size: "small",
bold: "",
color: "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(group$1.group), 1)]),
_: 2
}, 1032, ["class"]), (openBlock(true), createElementBlock(Fragment, null, renderList(group$1.sessions, session => {
return openBlock(), createBlock(ChatSessionMenuItem_default, {
key: session.id,
session,
active: currentSessionId.value === session.id,
"is-renaming": renamingSessionId.value === session.id,
onStartRename: handleStartRename,
onCancelRename: handleCancelRename,
onConfirmRename: handleConfirmRename,
onDelete: handleDeleteSession
}, null, 8, ["session", "active", "is-renaming"]);
}), 128)), index === groupedConversations.value.length - 1 && unref(chatStore).sessionsLoading ? (openBlock(), createElementBlock(Fragment, {
key: 0
}, renderList(10, i => {
return createVNode(SkeletonMenuItem_default, {
key: i
});
}), 64)) : createCommentVNode("", true)], 2);
}), 128)), createBaseVNode("div", {
ref_key: "loadMoreTrigger",
ref: loadMoreTrigger$1,
class: normalizeClass(_ctx.$style.loadMoreTrigger)
}, null, 2)], 2)]),
_: 1
}), createVNode(MainSidebarUserArea_default, {
"fully-expanded": true,
"is-collapsed": false
})], 2);
};
}
}); //#endregion
//#region src/features/ai/chatHub/components/ChatSidebarContent.vue?vue&type=style&index=0&lang.module.scss
component = "_component_3m9u4_123";
isMobileDevice = "_isMobileDevice_3m9u4_129";
header = "_header_3m9u4_133";
logo = "_logo_3m9u4_144";
items = "_items_3m9u4_149";
group = "_group_3m9u4_159";
groupHeader = "_groupHeader_3m9u4_165";
loadMoreTrigger = "_loadMoreTrigger_3m9u4_169";
loading = "_loading_3m9u4_174";
empty = "_empty_3m9u4_175";
ChatSidebarContent_vue_vue_type_style_index_0_lang_module_default = {
component,
isMobileDevice,
header,
logo,
items,
group,
groupHeader,
loadMoreTrigger,
loading,
empty
}; //#endregion
//#region src/features/ai/chatHub/components/ChatSidebarContent.vue
cssModules$1 = {
"$style": ChatSidebarContent_vue_vue_type_style_index_0_lang_module_default
};
ChatSidebarContent_default = /* @__PURE__ */__plugin_vue_export_helper_default(ChatSidebarContent_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$1]]); //#endregion
//#region src/features/ai/chatHub/components/ChatSidebar.vue?vue&type=script&setup=true&lang.ts
EDGE_TRIGGER_DISTANCE = 10;
ChatSidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "ChatSidebar",
setup(__props) {
const uiStore = useUIStore();
const isMobileDevice$1 = useMediaQuery(MOBILE_MEDIA_QUERY);
const route = useRoute();
const sidebar = useChatHubSidebarState();
watch(() => route.fullPath, () => uiStore.closeModal(CHAT_HUB_SIDE_MENU_DRAWER_MODAL_KEY));
useEventListener(window, "mousemove", event => {
if (sidebar.isCollapsed.value && event.clientX <= EDGE_TRIGGER_DISTANCE) sidebar.toggleOpen(true);
});
onBeforeUnmount(() => {
uiStore.closeModal(CHAT_HUB_SIDE_MENU_DRAWER_MODAL_KEY);
});
return (_ctx, _cache) => {
return unref(sidebar).isStatic.value ? (openBlock(), createBlock(ChatSidebarContent_default, {
key: 0,
class: normalizeClass(_ctx.$style.static),
"is-mobile-device": unref(isMobileDevice$1)
}, null, 8, ["class", "is-mobile-device"])) : (openBlock(), createBlock(ModalDrawer_default, {
key: 1,
direction: "ltr",
width: "min(240px, 80vw)",
name: unref(CHAT_HUB_SIDE_MENU_DRAWER_MODAL_KEY),
class: normalizeClass(_ctx.$style.drawer),
"close-on-click-modal": true,
"show-close": false
}, {
content: withCtx(() => [createVNode(ChatSidebarContent_default, {
class: normalizeClass(_ctx.$style.inDrawer),
"is-mobile-device": unref(isMobileDevice$1)
}, null, 8, ["class", "is-mobile-device"])]),
_: 1
}, 8, ["name", "class"]));
};
}
}); //#endregion
//#region src/features/ai/chatHub/components/ChatSidebar.vue?vue&type=style&index=0&lang.module.scss
drawer = "_drawer_ox5ii_123";
inDrawer = "_inDrawer_ox5ii_128";
ChatSidebar_vue_vue_type_style_index_0_lang_module_default = {
drawer,
inDrawer,
"static": "_static_ox5ii_129"
}; //#endregion
//#region src/features/ai/chatHub/components/ChatSidebar.vue
cssModules = {
"$style": ChatSidebar_vue_vue_type_style_index_0_lang_module_default
};
_export("default", ChatSidebar_default = /* @__PURE__ */__plugin_vue_export_helper_default(ChatSidebar_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
}
};
});
})();