2024-02-24 00:37:31 +08:00

3005 lines
140 KiB
JavaScript

exports.id = 7797;
exports.ids = [7797];
exports.modules = {
/***/ 7797:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
Chat: () => (/* binding */ Chat),
ChatActions: () => (/* binding */ ChatActions),
DeleteImageButton: () => (/* binding */ DeleteImageButton),
EditMessageModal: () => (/* binding */ EditMessageModal),
PromptHints: () => (/* binding */ PromptHints),
SessionConfigModel: () => (/* binding */ SessionConfigModel)
});
// EXTERNAL MODULE: external "next/dist/compiled/react/jsx-runtime"
var jsx_runtime_ = __webpack_require__(56786);
// EXTERNAL MODULE: ./node_modules/use-debounce/dist/index.module.js
var index_module = __webpack_require__(20238);
// EXTERNAL MODULE: external "next/dist/compiled/react"
var react_ = __webpack_require__(18038);
;// CONCATENATED MODULE: ./app/icons/send-white.svg
var _defs, _mask;
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var SvgSendWhite = function SvgSendWhite(props) {
return /*#__PURE__*/react_.createElement("svg", _extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), _defs || (_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "send-white_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, _mask || (_mask = /*#__PURE__*/react_.createElement("mask", {
id: "send-white_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#send-white_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#send-white_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#fff",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 4.71 6.67 6l1.67 6.67L12.67 0 0 4.71Z",
transform: "translate(1.333 2)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#fff",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 1.89 1.89 0",
transform: "translate(8.003 6.117)"
}))));
};
/* harmony default export */ const send_white = (SvgSendWhite);
;// CONCATENATED MODULE: ./app/icons/brain.svg
var brain_defs, brain_mask;
function brain_extends() { brain_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return brain_extends.apply(this, arguments); }
var SvgBrain = function SvgBrain(props) {
return /*#__PURE__*/React.createElement("svg", brain_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), brain_defs || (brain_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("path", {
id: "brain_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/React.createElement("g", null, brain_mask || (brain_mask = /*#__PURE__*/React.createElement("mask", {
id: "brain_svg__b",
fill: "#fff"
}, /*#__PURE__*/React.createElement("use", {
xlinkHref: "#brain_svg__a"
}))), /*#__PURE__*/React.createElement("g", {
mask: "url(#brain_svg__b)"
}, /*#__PURE__*/React.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M5.01 13.33c-.32-1.06-.82-1.86-1.48-2.38-.98-.78-2.56-.3-3.14-1.11-.58-.8.41-2.29.76-3.17.34-.88-1.33-1.19-1.13-1.44.13-.16.97-.64 2.53-1.44C3 1.26 4.63 0 7.47 0c4.24 0 5.86 3.6 5.86 5.89 0 2.29-1.96 4.76-4.75 5.29-.25.37.11 1.08 1.08 2.15",
transform: "translate(1.333 1.333)"
}), /*#__PURE__*/React.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M2.1 3.33c-.19 1.09.04 1.6.69 1.53.65-.07 1.05-.34 1.18-.81 1.02.28 1.57.04 1.66-.72.12-1.15-.5-2.07-.75-2.07s-.91-.03-.91-.38C3.97.52 3.2.33 2.5.33c-.69 0-.27-.47-1.23-.29C.64.17.26.44.13.88c-.22.84-.16 1.43.19 1.78.35.34.94.56 1.78.67Z",
transform: "translate(6.374 3.957)"
}), /*#__PURE__*/React.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M1.97 0c-.34.21-.8.56-1 .83-.49.69-.88 1.1-.97 1.54",
transform: "translate(8.193 8.5)"
}))));
};
/* harmony default export */ const brain = ((/* unused pure expression or super */ null && (SvgBrain)));
;// CONCATENATED MODULE: ./app/icons/rename.svg
var rename_defs, rename_mask;
function rename_extends() { rename_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return rename_extends.apply(this, arguments); }
var SvgRename = function SvgRename(props) {
return /*#__PURE__*/react_.createElement("svg", rename_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), rename_defs || (rename_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "rename_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, rename_mask || (rename_mask = /*#__PURE__*/react_.createElement("mask", {
id: "rename_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#rename_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#rename_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M2.83 13.2 13.2 2.83 10.37 0 0 10.37v2.83h2.83Z",
transform: "translate(1.775 1.3)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "m0 0 2.83 2.83",
transform: "translate(9.317 4.13)"
}))));
};
/* harmony default export */ const rename = (SvgRename);
;// CONCATENATED MODULE: ./app/icons/share.svg
var share_defs, share_mask;
function share_extends() { share_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return share_extends.apply(this, arguments); }
var SvgShare = function SvgShare(props) {
return /*#__PURE__*/react_.createElement("svg", share_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), share_defs || (share_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "share_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, share_mask || (share_mask = /*#__PURE__*/react_.createElement("mask", {
id: "share_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#share_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#share_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M6.67 3.67C1.67 3.67 0 7.33 0 13c0 0 2-5 6.67-5v3.67l6-5.67-6-6v3.67Z",
transform: "translate(2 1.333)"
}))));
};
/* harmony default export */ const icons_share = (SvgShare);
;// CONCATENATED MODULE: ./app/icons/return.svg
var return_defs, return_mask;
function return_extends() { return_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return return_extends.apply(this, arguments); }
var SvgReturn = function SvgReturn(props) {
return /*#__PURE__*/react_.createElement("svg", return_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), return_defs || (return_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "return_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, return_mask || (return_mask = /*#__PURE__*/react_.createElement("mask", {
id: "return_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#return_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#return_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M2.33 0 0 2l2.33 2.33",
transform: "translate(2 2.667)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 0h7.66c2.3 0 4.25 1.87 4.34 4.17.09 2.42-1.91 4.5-4.34 4.5H2",
transform: "translate(2 4.667)"
}))));
};
/* harmony default export */ const icons_return = (SvgReturn);
// EXTERNAL MODULE: ./app/icons/copy.svg
var copy = __webpack_require__(53231);
// EXTERNAL MODULE: ./app/icons/three-dots.svg
var three_dots = __webpack_require__(3076);
;// CONCATENATED MODULE: ./app/icons/loading.svg
var _rect, _g;
function loading_extends() { loading_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return loading_extends.apply(this, arguments); }
var SvgLoading = function SvgLoading(props) {
return /*#__PURE__*/react_.createElement("svg", loading_extends({
xmlns: "http://www.w3.org/2000/svg",
width: 16,
height: 16,
fill: "#fff"
}, props), _rect || (_rect = /*#__PURE__*/react_.createElement("rect", {
width: "100%",
height: "100%",
fill: "none"
})), _g || (_g = /*#__PURE__*/react_.createElement("g", {
className: "loading_svg__currentLayer"
}, /*#__PURE__*/react_.createElement("circle", {
cx: 4,
cy: 8,
r: 1.926,
fill: "#333"
}, /*#__PURE__*/react_.createElement("animate", {
attributeName: "r",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 2,
repeatCount: "indefinite",
to: 2,
values: "2;1.2;2"
}), /*#__PURE__*/react_.createElement("animate", {
attributeName: "fill-opacity",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 1,
repeatCount: "indefinite",
to: 1,
values: "1;.5;1"
})), /*#__PURE__*/react_.createElement("circle", {
cx: 8,
cy: 8,
r: 1.274,
fill: "#333",
fillOpacity: 0.3
}, /*#__PURE__*/react_.createElement("animate", {
attributeName: "r",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 1.2,
repeatCount: "indefinite",
to: 1.2,
values: "1.2;2;1.2"
}), /*#__PURE__*/react_.createElement("animate", {
attributeName: "fill-opacity",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 0.5,
repeatCount: "indefinite",
to: 0.5,
values: ".5;1;.5"
})), /*#__PURE__*/react_.createElement("circle", {
cx: 12,
cy: 8,
r: 1.926,
fill: "#333"
}, /*#__PURE__*/react_.createElement("animate", {
attributeName: "r",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 2,
repeatCount: "indefinite",
to: 2,
values: "2;1.2;2"
}), /*#__PURE__*/react_.createElement("animate", {
attributeName: "fill-opacity",
begin: "0s",
calcMode: "linear",
dur: "0.8s",
from: 1,
repeatCount: "indefinite",
to: 1,
values: "1;.5;1"
})))));
};
/* harmony default export */ const loading = (SvgLoading);
;// CONCATENATED MODULE: ./app/icons/prompt.svg
var prompt_defs, prompt_mask;
function prompt_extends() { prompt_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return prompt_extends.apply(this, arguments); }
var SvgPrompt = function SvgPrompt(props) {
return /*#__PURE__*/react_.createElement("svg", prompt_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), prompt_defs || (prompt_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "prompt_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, prompt_mask || (prompt_mask = /*#__PURE__*/react_.createElement("mask", {
id: "prompt_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#prompt_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#prompt_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "m1.367 1.367 1.41 1.41M4.667 0v2m0 0V0m3.295 1.367-1.41 1.41m0 0 1.41-1.41m1.371 3.3h-2m0 0h2m-1.37 3.295-1.41-1.41m0 0 1.41 1.41M4.666 9.333v-2m0 0v2m-3.3-1.37 1.41-1.41m0 0-1.41 1.41M0 4.666h2m0 0H0",
transform: "translate(5.333 1.333)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M8.01 0 0 8.01",
transform: "translate(1.848 6.138)"
}))));
};
/* harmony default export */ const icons_prompt = (SvgPrompt);
// EXTERNAL MODULE: ./app/icons/mask.svg
var mask = __webpack_require__(8181);
// EXTERNAL MODULE: ./app/icons/max.svg
var max = __webpack_require__(79746);
// EXTERNAL MODULE: ./app/icons/min.svg
var min = __webpack_require__(23380);
// EXTERNAL MODULE: ./app/icons/reload.svg
var reload = __webpack_require__(4925);
;// CONCATENATED MODULE: ./app/icons/break.svg
var break_defs;
function break_extends() { break_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return break_extends.apply(this, arguments); }
var SvgBreak = function SvgBreak(props) {
return /*#__PURE__*/react_.createElement("svg", break_extends({
xmlns: "http://www.w3.org/2000/svg",
width: 16,
height: 16,
fill: "none"
}, props), /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M13.275-.275c.261.26.392.576.392.945v10.66c0 .37-.131.684-.392.945a1.288 1.288 0 0 1-.945.392H1.67c-.37 0-.684-.13-.945-.392a1.288 1.288 0 0 1-.392-.945V.67c0-.37.13-.684.392-.945.26-.261.576-.392.945-.392h10.66c.369 0 .684.13.945.392zM1.667 11.33c0 .002 0 .003.003.003h10.66c.002 0 .003 0 .003-.003V.67c0-.002 0-.003-.003-.003H1.67c-.002 0-.003 0-.003.003z",
transform: "translate(1 2)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M9.763 7.507a.666.666 0 0 1-.867 0L7 5.878 5.104 7.506a.665.665 0 0 1-.867.001L2.331 5.878.434 7.506a.66.66 0 0 1-.485.16.66.66 0 0 1-.53-.338.665.665 0 0 1 .147-.834l2.33-2a.666.666 0 0 1 .867 0L4.67 6.123l1.897-1.629a.666.666 0 0 1 .868 0l1.897 1.629 1.906-1.63a.668.668 0 0 1 .867.002l2.33 2a.66.66 0 0 1 .23.455.661.661 0 0 1-.252.575.666.666 0 0 1-.846-.019l-1.897-1.628z",
transform: "translate(1 2)"
}), break_defs || (break_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "break_svg__a",
d: "M0 0h16v16H0z"
}))));
};
/* harmony default export */ const icons_break = (SvgBreak);
;// CONCATENATED MODULE: ./app/icons/chat-settings.svg
var chat_settings_mask, chat_settings_defs;
function chat_settings_extends() { chat_settings_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return chat_settings_extends.apply(this, arguments); }
var SvgChatSettings = function SvgChatSettings(props) {
return /*#__PURE__*/react_.createElement("svg", chat_settings_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), /*#__PURE__*/react_.createElement("g", null, chat_settings_mask || (chat_settings_mask = /*#__PURE__*/react_.createElement("mask", {
id: "chat-settings_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#chat-settings_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#chat-settings_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M6.728 14.598a.665.665 0 0 1-.828.434 7.294 7.294 0 0 1-3.187-1.945.666.666 0 0 1-.026-.896c.207-.241.31-.527.31-.857 0-.37-.13-.685-.389-.944A1.286 1.286 0 0 0 1.663 10h-.08a.662.662 0 0 1-.665-.288.665.665 0 0 1-.098-.235 7.234 7.234 0 0 1 .188-3.675.662.662 0 0 1 .635-.465h.02c.37 0 .684-.13.944-.392.26-.26.39-.574.39-.942 0-.215-.045-.415-.134-.6a.666.666 0 0 1 .148-.78A7.292 7.292 0 0 1 6.034.932a.666.666 0 0 1 .774.34c.11.219.272.394.483.524.216.135.454.202.712.202.254 0 .488-.067.703-.201.211-.131.372-.306.483-.524a.666.666 0 0 1 .773-.34 7.404 7.404 0 0 1 3.03 1.688.664.664 0 0 1 .143.8c-.09.174-.135.368-.135.583 0 .366.13.68.392.941.262.262.575.393.941.393h.03a.664.664 0 0 1 .636.465c.22.695.331 1.43.331 2.201a7.34 7.34 0 0 1-.143 1.474.66.66 0 0 1-.27.411.666.666 0 0 1-.478.115 1 1 0 0 0-.106-.003c-.367 0-.681.13-.941.39-.261.26-.392.574-.392.943 0 .322.106.61.317.865a.662.662 0 0 1 .1.686.671.671 0 0 1-.133.202 7.294 7.294 0 0 1-3.187 1.945.674.674 0 0 1-.503-.047.659.659 0 0 1-.325-.387 1.311 1.311 0 0 0-.477-.667 1.288 1.288 0 0 0-.789-.26c-.297 0-.564.087-.798.26-.23.17-.389.393-.477.667zm3.52-1.032c.626-.253 1.191-.6 1.696-1.042a2.603 2.603 0 0 1-.277-1.19 2.642 2.642 0 0 1 .784-1.888 2.646 2.646 0 0 1 1.51-.753 6.393 6.393 0 0 0-.118-2.067 2.655 2.655 0 0 1-1.394-.738 2.656 2.656 0 0 1-.782-1.884c0-.239.029-.468.087-.687a6.05 6.05 0 0 0-1.693-.954c-.182.22-.398.41-.65.566-.431.268-.9.402-1.408.402-.511 0-.983-.134-1.414-.401a2.632 2.632 0 0 1-.653-.567 5.936 5.936 0 0 0-1.69.957 2.74 2.74 0 0 1-.125 1.72c-.134.319-.324.601-.57.847a2.641 2.641 0 0 1-1.389.738 5.903 5.903 0 0 0-.12 2.069 2.642 2.642 0 0 1 1.509.753 2.654 2.654 0 0 1 .779 1.888c0 .433-.091.831-.274 1.192.504.44 1.068.787 1.692 1.04.172-.272.393-.507.664-.707.47-.348 1-.522 1.591-.522.587 0 1.115.174 1.584.523.27.2.49.435.661.705z"
}), /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M10.122 10.122a2.987 2.987 0 0 1-2.125.881 2.969 2.969 0 0 1-2.122-.883 2.983 2.983 0 0 1-.64-.955A2.984 2.984 0 0 1 5 7.997a2.974 2.974 0 0 1 .876-2.12A2.974 2.974 0 0 1 7.996 5c.407 0 .797.078 1.169.235.36.151.678.364.955.64a2.969 2.969 0 0 1 .883 2.122 2.987 2.987 0 0 1-.881 2.125zM7.997 6.333c-.461 0-.854.162-1.178.486a1.603 1.603 0 0 0-.486 1.178c0 .462.163.857.488 1.183.324.327.716.49 1.176.49.46 0 .855-.164 1.182-.491.327-.327.491-.721.491-1.182 0-.46-.163-.852-.49-1.176a1.618 1.618 0 0 0-1.183-.488z"
}))), chat_settings_defs || (chat_settings_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "chat-settings_svg__a",
d: "M0 0h16v16H0z"
}))));
};
/* harmony default export */ const chat_settings = (SvgChatSettings);
// EXTERNAL MODULE: ./app/icons/clear.svg
var clear = __webpack_require__(99449);
;// CONCATENATED MODULE: ./app/icons/pin.svg
var pin_mask, pin_defs;
function pin_extends() { pin_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return pin_extends.apply(this, arguments); }
var SvgPin = function SvgPin(props) {
return /*#__PURE__*/react_.createElement("svg", pin_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), /*#__PURE__*/react_.createElement("g", null, pin_mask || (pin_mask = /*#__PURE__*/react_.createElement("mask", {
id: "pin_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#pin_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#pin_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "m6.685 8.81-4 5.44-.537-.394-.397-.536 5.42-4.01a.666.666 0 0 1 .866.062l.532.528 2.07 2.063-.471.473-.472-.472c.3-.3.457-.62.472-.963.015-.353-.108-.798-.37-1.333a.665.665 0 0 1 .017-.616l2.36-4.25a.662.662 0 0 1 .679-.336l1.65.24-.096.66-.472.471-3.77-3.77.472-.471.66-.096.24 1.65a.664.664 0 0 1-.337.678l-4.25 2.36a.665.665 0 0 1-.646.001c-.479-.265-.903-.388-1.27-.369-.358.018-.69.18-.996.487l-.471-.471.471-.472 2.06 2.06.52.52a.665.665 0 0 1 .066.867zM5.61 8.02l.537.396-.472.471-.52-.52-2.06-2.06a.665.665 0 0 1 0-.943c.548-.548 1.172-.84 1.87-.875.622-.032 1.283.146 1.984.533l-.322.584-.324-.583 4.25-2.36.324.583-.66.096-.24-1.65a.664.664 0 0 1 .66-.763.665.665 0 0 1 .471.195l3.77 3.77a.666.666 0 0 1-.567 1.131l-1.65-.24.096-.66.583.324-2.36 4.25-.583-.323.599-.293c.36.738.527 1.396.503 1.974-.029.689-.316 1.305-.86 1.85a.664.664 0 0 1-.842.083.667.667 0 0 1-.101-.082l-2.068-2.062-.531-.527.47-.473.396.535-5.42 4.01a.663.663 0 0 1-.791.002.664.664 0 0 1-.142-.932z"
}))), pin_defs || (pin_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "pin_svg__a",
d: "M0 0h16v16H0z"
}))));
};
/* harmony default export */ const pin = (SvgPin);
// EXTERNAL MODULE: ./app/icons/confirm.svg
var icons_confirm = __webpack_require__(77365);
// EXTERNAL MODULE: ./app/icons/cancel.svg
var cancel = __webpack_require__(32064);
;// CONCATENATED MODULE: ./app/icons/image.svg
var image_rect, image_g;
function image_extends() { image_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return image_extends.apply(this, arguments); }
var SvgImage = function SvgImage(props) {
return /*#__PURE__*/react_.createElement("svg", image_extends({
xmlns: "http://www.w3.org/2000/svg",
fill: "none",
height: 16,
width: 16,
xmlSpace: "preserve"
}, props), image_rect || (image_rect = /*#__PURE__*/react_.createElement("rect", {
width: "100%",
height: "100%"
})), image_g || (image_g = /*#__PURE__*/react_.createElement("g", {
className: "image_svg__currentLayer"
}, /*#__PURE__*/react_.createElement("g", {
fill: "#333"
}, /*#__PURE__*/react_.createElement("path", {
d: "M2.47 2.47h1.977v-.782H1.688v2.76h.781zM11.553 1.688v.781h1.978v1.978h.78V1.688zM13.53 13.53h-1.977v.782h2.759v-2.76h-.781zM2.47 11.553h-.782v2.759h2.76v-.781H2.468zM8.83 6.243c.682 0 1.237-.555 1.237-1.236S9.512 3.77 8.83 3.77a1.238 1.238 0 0 0 0 2.473zM3.77 12.23h8.46V9.71l-1.527-1.611-1.85 1.077-2.578-1.842L3.77 9.977z"
})))));
};
/* harmony default export */ const icons_image = (SvgImage);
;// CONCATENATED MODULE: ./app/icons/light.svg
var light_defs, light_mask;
function light_extends() { light_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return light_extends.apply(this, arguments); }
var SvgLight = function SvgLight(props) {
return /*#__PURE__*/react_.createElement("svg", light_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), light_defs || (light_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "light_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, light_mask || (light_mask = /*#__PURE__*/react_.createElement("mask", {
id: "light_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#light_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#light_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M8.67 4.33C8.67 1.94 6.73 0 4.33 0 1.94 0 0 1.94 0 4.33a4.334 4.334 0 1 0 8.67 0Z",
transform: "translate(3.667 3.667)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(7.167 .333)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(12 2.333)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(14 7.167)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(12 12)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(7.167 14)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(2.333 12)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(.333 7.167)"
}), /*#__PURE__*/react_.createElement("path", {
fillRule: "evenodd",
style: {
fill: "#333"
},
d: "M1.67.83C1.67.37 1.29 0 .83 0 .37 0 0 .37 0 .83c0 .46.37.84.83.84.46 0 .84-.38.84-.84Z",
transform: "translate(2.333 2.333)"
}))));
};
/* harmony default export */ const light = (SvgLight);
;// CONCATENATED MODULE: ./app/icons/dark.svg
var dark_defs, dark_mask;
function dark_extends() { dark_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return dark_extends.apply(this, arguments); }
var SvgDark = function SvgDark(props) {
return /*#__PURE__*/react_.createElement("svg", dark_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), dark_defs || (dark_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "dark_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, dark_mask || (dark_mask = /*#__PURE__*/react_.createElement("mask", {
id: "dark_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#dark_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#dark_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M6.67 0C2.98 0 0 2.98 0 6.67a6.66 6.66 0 0 0 6.67 6.66c3.68 0 6.66-2.98 6.66-6.66 0-.47-.04-.92-.13-1.35a4.251 4.251 0 0 1-4.11 3.16c-2.34 0-4.24-1.89-4.24-4.24 0-1.97 1.34-3.63 3.17-4.1C7.58.05 7.13 0 6.67 0Z",
transform: "translate(1.333 1.333)"
}))));
};
/* harmony default export */ const dark = (SvgDark);
;// CONCATENATED MODULE: ./app/icons/auto.svg
var auto_defs, auto_mask;
function auto_extends() { auto_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return auto_extends.apply(this, arguments); }
var SvgAuto = function SvgAuto(props) {
return /*#__PURE__*/react_.createElement("svg", auto_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), auto_defs || (auto_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "auto_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, auto_mask || (auto_mask = /*#__PURE__*/react_.createElement("mask", {
id: "auto_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#auto_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#auto_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "m0 5.337.73-1.67m3.938 1.67-.73-1.67M.728 3.67 2.33 0l1.61 3.67M.73 3.667h3.21",
transform: "translate(5.667 5.333)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M13.07 5.33A6.672 6.672 0 0 0 0 5.33l2-.66",
transform: "translate(1.333 1.333)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 0a6.672 6.672 0 0 0 13.07 0l-1.74.67",
transform: "translate(1.333 9.333)"
}))));
};
/* harmony default export */ const auto = (SvgAuto);
;// CONCATENATED MODULE: ./app/icons/bottom.svg
var bottom_defs, bottom_mask;
function bottom_extends() { bottom_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return bottom_extends.apply(this, arguments); }
var SvgBottom = function SvgBottom(props) {
return /*#__PURE__*/react_.createElement("svg", bottom_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), bottom_defs || (bottom_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "bottom_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, bottom_mask || (bottom_mask = /*#__PURE__*/react_.createElement("mask", {
id: "bottom_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#bottom_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#bottom_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M8 0 4 4 0 0",
transform: "translate(4 4)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M8 0 4 4 0 0",
transform: "translate(4 8)"
}))));
};
/* harmony default export */ const bottom = (SvgBottom);
;// CONCATENATED MODULE: ./app/icons/pause.svg
var pause_defs, pause_mask;
function pause_extends() { pause_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return pause_extends.apply(this, arguments); }
var SvgPause = function SvgPause(props) {
return /*#__PURE__*/react_.createElement("svg", pause_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), pause_defs || (pause_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "pause_svg__a",
d: "M0 0h16v16H0z"
}))), /*#__PURE__*/react_.createElement("g", null, pause_mask || (pause_mask = /*#__PURE__*/react_.createElement("mask", {
id: "pause_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#pause_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#pause_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M13.33 6.67A6.66 6.66 0 0 0 6.67 0C2.98 0 0 2.98 0 6.67a6.66 6.66 0 0 0 6.67 6.66c3.68 0 6.66-2.98 6.66-6.66Z",
transform: "translate(1.333 1.333)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 0v4",
transform: "translate(6.333 6)"
}), /*#__PURE__*/react_.createElement("path", {
style: {
stroke: "#333",
strokeWidth: 1.3333333333333333,
strokeOpacity: 1,
strokeDasharray: "0 0"
},
d: "M0 0v4",
transform: "translate(9.667 6)"
}))));
};
/* harmony default export */ const pause = (SvgPause);
;// CONCATENATED MODULE: ./app/icons/robot.svg
var robot_mask, robot_defs;
function robot_extends() { robot_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return robot_extends.apply(this, arguments); }
var SvgRobot = function SvgRobot(props) {
return /*#__PURE__*/react_.createElement("svg", robot_extends({
xmlns: "http://www.w3.org/2000/svg",
xmlnsXlink: "http://www.w3.org/1999/xlink",
width: 16,
height: 16,
fill: "none"
}, props), /*#__PURE__*/react_.createElement("g", null, robot_mask || (robot_mask = /*#__PURE__*/react_.createElement("mask", {
id: "robot_svg__b",
fill: "#fff"
}, /*#__PURE__*/react_.createElement("use", {
xlinkHref: "#robot_svg__a"
}))), /*#__PURE__*/react_.createElement("g", {
mask: "url(#robot_svg__b)"
}, /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M3.67 13.67h8.66c.002 0 .003-.001.003-.003V6.334H3.67c-.002 0-.003 0-.003.003v7.33c0 .002 0 .003.003.003zm0 1.333c-.37 0-.684-.13-.945-.391a1.288 1.288 0 0 1-.392-.945v-7.33c0-.37.13-.685.392-.946.26-.26.576-.391.945-.391h8.66c.37 0 .684.13.945.391.261.261.392.577.392.946v7.33c0 .369-.13.684-.392.945a1.288 1.288 0 0 1-.945.391z"
}), /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M9.819 6.127a.666.666 0 0 1-1.05-.81l1.67-2.67a.665.665 0 0 1 1.107-.034.663.663 0 0 1 .023.74l-1.67 2.67a.665.665 0 0 1-.08.104zM7.293 5.434a.665.665 0 0 1-1.01.779.665.665 0 0 1-.178-.19l-1.67-2.67a.665.665 0 0 1 .952-.896.665.665 0 0 1 .178.19l1.67 2.67a.665.665 0 0 1 .058.117z"
}), /*#__PURE__*/react_.createElement("path", {
style: {
fill: "#333",
opacity: 1
},
d: "M11.337 2.333c-.003 0-.004.001-.004.004l-.001-.01a.007.007 0 0 0 .005.003h-.007v.007c0-.002 0-.004-.002-.005l.009.001zm0-1.333c.366 0 .679.131.939.394.258.261.387.575.387.943 0 .364-.13.676-.39.936s-.572.39-.936.39c-.368 0-.682-.129-.943-.388A1.273 1.273 0 0 1 10 2.337c0-.37.13-.685.391-.946.262-.26.577-.391.946-.391zM4.67 2.333c-.002 0-.003.001-.003.004 0-.005 0-.008-.002-.01a.007.007 0 0 0 .005.003h-.006v.007c0-.002-.001-.004-.003-.005l.009.001zM4.67 1c.366 0 .679.131.939.394.258.261.388.575.388.943 0 .364-.13.676-.39.936s-.573.39-.937.39c-.367 0-.681-.129-.943-.388a1.273 1.273 0 0 1-.394-.938c0-.37.13-.685.392-.946.26-.26.576-.391.945-.391zM6.663 10.003h2.67c.184 0 .34-.065.469-.194a.655.655 0 0 0 .195-.479.638.638 0 0 0-.196-.467.638.638 0 0 0-.468-.196h-2.67a.638.638 0 0 0-.467.196A.638.638 0 0 0 6 9.33c0 .188.065.347.195.479.128.13.284.194.468.194zm0 1.334a1.974 1.974 0 0 1-1.416-.59 2.001 2.001 0 0 1 1.416-3.413h2.67a1.99 1.99 0 0 1 1.41.587 1.99 1.99 0 0 1 .587 1.409 2.002 2.002 0 0 1-1.997 2.007zM2 10.663h1.003a.666.666 0 1 1 0 1.334h-1.67a.666.666 0 0 1-.666-.667V8a.665.665 0 0 1 .666-.667h1.67a.665.665 0 0 1 .555 1.037.665.665 0 0 1-.555.297H2zM14.8 7.346a.664.664 0 0 1 .537.654v3.33a.666.666 0 0 1-.667.667H13a.666.666 0 1 1 0-1.334h1.003V8.667H13a.665.665 0 0 1-.471-1.138.664.664 0 0 1 .471-.196h1.67c.044 0 .087.005.13.013z"
}))), robot_defs || (robot_defs = /*#__PURE__*/react_.createElement("defs", null, /*#__PURE__*/react_.createElement("path", {
id: "robot_svg__a",
d: "M0 0h16v16H0z"
}))));
};
/* harmony default export */ const robot = (SvgRobot);
// EXTERNAL MODULE: ./app/store/index.ts + 2 modules
var store = __webpack_require__(1075);
// EXTERNAL MODULE: ./app/utils.ts
var utils = __webpack_require__(92842);
// EXTERNAL MODULE: ./node_modules/next/dist/shared/lib/app-dynamic.js
var app_dynamic = __webpack_require__(99121);
var app_dynamic_default = /*#__PURE__*/__webpack_require__.n(app_dynamic);
// EXTERNAL MODULE: ./app/client/controller.ts
var controller = __webpack_require__(82564);
// EXTERNAL MODULE: ./app/store/prompt.ts
var store_prompt = __webpack_require__(16975);
// EXTERNAL MODULE: ./app/locales/index.ts + 19 modules
var locales = __webpack_require__(57254);
// EXTERNAL MODULE: ./app/components/button.tsx
var components_button = __webpack_require__(39378);
// EXTERNAL MODULE: ./app/components/chat.module.scss
var chat_module = __webpack_require__(48563);
var chat_module_default = /*#__PURE__*/__webpack_require__.n(chat_module);
// EXTERNAL MODULE: ./app/components/ui-lib.tsx + 3 modules
var ui_lib = __webpack_require__(24552);
// EXTERNAL MODULE: ./node_modules/react-router-dom/dist/umd/react-router-dom.production.min.js
var react_router_dom_production_min = __webpack_require__(99742);
// EXTERNAL MODULE: ./app/constant.ts
var constant = __webpack_require__(43684);
// EXTERNAL MODULE: ./app/components/emoji.tsx + 1 modules
var emoji = __webpack_require__(85563);
// EXTERNAL MODULE: ./app/components/mask.tsx
var components_mask = __webpack_require__(94417);
// EXTERNAL MODULE: ./app/store/mask.ts
var store_mask = __webpack_require__(73706);
// EXTERNAL MODULE: ./app/command.ts
var command = __webpack_require__(88286);
// EXTERNAL MODULE: ./app/utils/format.ts
var format = __webpack_require__(4643);
// EXTERNAL MODULE: ./app/components/exporter.module.scss
var exporter_module = __webpack_require__(35878);
var exporter_module_default = /*#__PURE__*/__webpack_require__.n(exporter_module);
// EXTERNAL MODULE: ./app/icons/chatgpt.png
var chatgpt = __webpack_require__(24362);
;// CONCATENATED MODULE: ./app/icons/bot.png
/* harmony default export */ const bot = ({"src":"/_next/static/media/bot.0c800005.png","height":120,"width":120,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAY1BMVEXo+f/m9/7m9/7l9/3l9v3W7PHU6vDN5uvL5Onr+//n+P/m9/7s+//r+//q+v/p+v/n+P+829682t662dy42Nu419q319q11tmz1dez1Nerz9Krz9GpztCoztCozs+ex8idx8jmiXbpAAAADHRSTlMXF76+vv39/f3+/v7UVO83AAAARElEQVR42gVAhxGAIAx86cUAChILlv2n9ACVgycxQZLmbopAsh+P0xFi2/v6VA9f76UfLWJ21+DXJohiNtYkMQnyISv8fgADftOSyBwAAAAASUVORK5CYII=","blurWidth":8,"blurHeight":8});
// EXTERNAL MODULE: ./app/icons/download.svg
var download = __webpack_require__(24624);
// EXTERNAL MODULE: ./app/components/message-selector.module.scss
var message_selector_module = __webpack_require__(85345);
var message_selector_module_default = /*#__PURE__*/__webpack_require__.n(message_selector_module);
;// CONCATENATED MODULE: ./app/components/message-selector.tsx
function useShiftRange() {
const [startIndex, setStartIndex] = (0,react_.useState)();
const [endIndex, setEndIndex] = (0,react_.useState)();
const [shiftDown, setShiftDown] = (0,react_.useState)(false);
const onClickIndex = (index)=>{
if (shiftDown && startIndex !== undefined) {
setEndIndex(index);
} else {
setStartIndex(index);
setEndIndex(undefined);
}
};
(0,react_.useEffect)(()=>{
const onKeyDown = (e)=>{
if (e.key !== "Shift") return;
setShiftDown(true);
};
const onKeyUp = (e)=>{
if (e.key !== "Shift") return;
setShiftDown(false);
setStartIndex(undefined);
setEndIndex(undefined);
};
window.addEventListener("keyup", onKeyUp);
window.addEventListener("keydown", onKeyDown);
return ()=>{
window.removeEventListener("keyup", onKeyUp);
window.removeEventListener("keydown", onKeyDown);
};
}, []);
return {
onClickIndex,
startIndex,
endIndex
};
}
function useMessageSelector() {
const [selection, setSelection] = (0,react_.useState)(new Set());
const updateSelection = (updater)=>{
const newSelection = new Set(selection);
updater(newSelection);
setSelection(newSelection);
};
return {
selection,
updateSelection
};
}
function MessageSelector(props) {
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const isValid = (m)=>m.content && !m.isError && !m.streaming;
const allMessages = (0,react_.useMemo)(()=>{
let startIndex = Math.max(0, session.clearContextIndex ?? 0);
if (startIndex === session.messages.length - 1) {
startIndex = 0;
}
return session.messages.slice(startIndex);
}, [
session.messages,
session.clearContextIndex
]);
const messages = (0,react_.useMemo)(()=>allMessages.filter((m, i)=>m.id && // message must have id
isValid(m) && (i >= allMessages.length - 1 || isValid(allMessages[i + 1]))), [
allMessages
]);
const messageCount = messages.length;
const config = (0,store/* useAppConfig */.MG)();
const [searchInput, setSearchInput] = (0,react_.useState)("");
const [searchIds, setSearchIds] = (0,react_.useState)(new Set());
const isInSearchResult = (id)=>{
return searchInput.length === 0 || searchIds.has(id);
};
const doSearch = (text)=>{
const searchResults = new Set();
if (text.length > 0) {
messages.forEach((m)=>(0,utils/* getMessageTextContent */.YK)(m).includes(text) ? searchResults.add(m.id) : null);
}
setSearchIds(searchResults);
};
// for range selection
const { startIndex, endIndex, onClickIndex } = useShiftRange();
const selectAll = ()=>{
props.updateSelection((selection)=>messages.forEach((m)=>selection.add(m.id)));
};
(0,react_.useEffect)(()=>{
if (props.defaultSelectAll) {
selectAll();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
(0,react_.useEffect)(()=>{
if (startIndex === undefined || endIndex === undefined) {
return;
}
const [start, end] = [
startIndex,
endIndex
].sort((a, b)=>a - b);
props.updateSelection((selection)=>{
for(let i = start; i <= end; i += 1){
selection.add(messages[i].id ?? i);
}
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
startIndex,
endIndex
]);
const LATEST_COUNT = 4;
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (message_selector_module_default())["message-selector"],
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (message_selector_module_default())["message-filter"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx("input", {
type: "text",
placeholder: locales/* default */.ZP.Select.Search,
className: (message_selector_module_default())["filter-item"] + " " + (message_selector_module_default())["search-bar"],
value: searchInput,
onInput: (e)=>{
setSearchInput(e.currentTarget.value);
doSearch(e.currentTarget.value);
}
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (message_selector_module_default()).actions,
children: [
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Select.All,
bordered: true,
className: (message_selector_module_default())["filter-item"],
onClick: selectAll
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Select.Latest,
bordered: true,
className: (message_selector_module_default())["filter-item"],
onClick: ()=>props.updateSelection((selection)=>{
selection.clear();
messages.slice(messageCount - LATEST_COUNT).forEach((m)=>selection.add(m.id));
})
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Select.Clear,
bordered: true,
className: (message_selector_module_default())["filter-item"],
onClick: ()=>props.updateSelection((selection)=>selection.clear())
})
]
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (message_selector_module_default()).messages,
children: messages.map((m, i)=>{
if (!isInSearchResult(m.id)) return null;
const id = m.id ?? i;
const isSelected = props.selection.has(id);
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: `${(message_selector_module_default()).message} ${props.selection.has(m.id) && (message_selector_module_default())["message-selected"]}`,
onClick: ()=>{
props.updateSelection((selection)=>{
selection.has(id) ? selection.delete(id) : selection.add(id);
});
onClickIndex(i);
},
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (message_selector_module_default()).avatar,
children: m.role === "user" ? /*#__PURE__*/ jsx_runtime_.jsx(emoji/* Avatar */.qE, {
avatar: config.avatar
}) : /*#__PURE__*/ jsx_runtime_.jsx(components_mask.MaskAvatar, {
avatar: session.mask.avatar,
model: m.model || session.mask.modelConfig.model
})
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (message_selector_module_default()).body,
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (message_selector_module_default()).date,
children: new Date(m.date).toLocaleString()
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: `${(message_selector_module_default()).content} one-line`,
children: (0,utils/* getMessageTextContent */.YK)(m)
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (message_selector_module_default()).checkbox,
children: /*#__PURE__*/ jsx_runtime_.jsx("input", {
type: "checkbox",
checked: isSelected
})
})
]
}, i);
})
})
]
});
}
// EXTERNAL MODULE: ./node_modules/next/image.js
var next_image = __webpack_require__(48421);
var image_default = /*#__PURE__*/__webpack_require__.n(next_image);
// EXTERNAL MODULE: ./node_modules/html-to-image/lib/index.js
var lib = __webpack_require__(61311);
// EXTERNAL MODULE: ./app/config/client.ts + 2 modules
var client = __webpack_require__(39463);
// EXTERNAL MODULE: ./app/client/api.ts + 3 modules
var client_api = __webpack_require__(10616);
;// CONCATENATED MODULE: ./app/components/exporter.tsx
/* eslint-disable @next/next/no-img-element */
const Markdown = app_dynamic_default()(async ()=>(await Promise.all(/* import() */[__webpack_require__.e(3578), __webpack_require__.e(8914)]).then(__webpack_require__.bind(__webpack_require__, 68914))).Markdown, {
loadableGenerated: {
modules: [
"/Users/xiaomo/Project/ChatGPT-Next-Web/app/components/exporter.tsx -> " + "./markdown"
]
},
loading: ()=>/*#__PURE__*/ jsx_runtime_.jsx(three_dots/* default */.Z, {})
});
function ExportMessageModal(props) {
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "modal-mask",
children: /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* Modal */.u_, {
title: locales/* default */.ZP.Export.Title,
onClose: props.onClose,
footer: /*#__PURE__*/ jsx_runtime_.jsx("div", {
style: {
width: "100%",
textAlign: "center",
fontSize: 14,
opacity: 0.5
},
children: locales/* default */.ZP.Exporter.Description.Title
}),
children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
style: {
minHeight: "40vh"
},
children: /*#__PURE__*/ jsx_runtime_.jsx(MessageExporter, {})
})
})
});
}
function useSteps(steps) {
const stepCount = steps.length;
const [currentStepIndex, setCurrentStepIndex] = (0,react_.useState)(0);
const nextStep = ()=>setCurrentStepIndex((currentStepIndex + 1) % stepCount);
const prevStep = ()=>setCurrentStepIndex((currentStepIndex - 1 + stepCount) % stepCount);
return {
currentStepIndex,
setCurrentStepIndex,
nextStep,
prevStep,
currentStep: steps[currentStepIndex]
};
}
function Steps(props) {
const steps = props.steps;
const stepCount = steps.length;
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default()).steps,
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["steps-progress"],
children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["steps-progress-inner"],
style: {
width: `${(props.index + 1) / stepCount * 100}%`
}
})
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["steps-inner"],
children: steps.map((step, i)=>{
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: `${(exporter_module_default()).step} ${(exporter_module_default())[i <= props.index ? "step-finished" : ""]} ${i === props.index && (exporter_module_default())["step-current"]} clickable`,
onClick: ()=>{
props.onStepChange?.(i);
},
role: "button",
children: [
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: (exporter_module_default())["step-index"],
children: i + 1
}),
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: (exporter_module_default())["step-name"],
children: step.name
})
]
}, i);
})
})
]
});
}
function MessageExporter() {
const steps = [
{
name: locales/* default */.ZP.Export.Steps.Select,
value: "select"
},
{
name: locales/* default */.ZP.Export.Steps.Preview,
value: "preview"
}
];
const { currentStep, setCurrentStepIndex, currentStepIndex } = useSteps(steps);
const formats = [
"text",
"image",
"json"
];
const [exportConfig, setExportConfig] = (0,react_.useState)({
format: "image",
includeContext: true
});
function updateExportConfig(updater) {
const config = {
...exportConfig
};
updater(config);
setExportConfig(config);
}
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const { selection, updateSelection } = useMessageSelector();
const selectedMessages = (0,react_.useMemo)(()=>{
const ret = [];
if (exportConfig.includeContext) {
ret.push(...session.mask.context);
}
ret.push(...session.messages.filter((m)=>selection.has(m.id)));
return ret;
}, [
exportConfig.includeContext,
session.messages,
session.mask.context,
selection
]);
function preview() {
if (exportConfig.format === "text") {
return /*#__PURE__*/ jsx_runtime_.jsx(MarkdownPreviewer, {
messages: selectedMessages,
topic: session.topic
});
} else if (exportConfig.format === "json") {
return /*#__PURE__*/ jsx_runtime_.jsx(JsonPreviewer, {
messages: selectedMessages,
topic: session.topic
});
} else {
return /*#__PURE__*/ jsx_runtime_.jsx(ImagePreviewer, {
messages: selectedMessages,
topic: session.topic
});
}
}
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(Steps, {
steps: steps,
index: currentStepIndex,
onStepChange: setCurrentStepIndex
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["message-exporter-body"],
style: currentStep.value !== "select" ? {
display: "none"
} : {},
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)(ui_lib/* List */.aV, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* ListItem */.HC, {
title: locales/* default */.ZP.Export.Format.Title,
subTitle: locales/* default */.ZP.Export.Format.SubTitle,
children: /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* Select */.Ph, {
value: exportConfig.format,
onChange: (e)=>updateExportConfig((config)=>config.format = e.currentTarget.value),
children: formats.map((f)=>/*#__PURE__*/ jsx_runtime_.jsx("option", {
value: f,
children: f
}, f))
})
}),
/*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* ListItem */.HC, {
title: locales/* default */.ZP.Export.IncludeContext.Title,
subTitle: locales/* default */.ZP.Export.IncludeContext.SubTitle,
children: /*#__PURE__*/ jsx_runtime_.jsx("input", {
type: "checkbox",
checked: exportConfig.includeContext,
onChange: (e)=>{
updateExportConfig((config)=>config.includeContext = e.currentTarget.checked);
}
})
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx(MessageSelector, {
selection: selection,
updateSelection: updateSelection,
defaultSelectAll: true
})
]
}),
currentStep.value === "preview" && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["message-exporter-body"],
children: preview()
})
]
});
}
function RenderExport(props) {
const domRef = (0,react_.useRef)(null);
(0,react_.useEffect)(()=>{
if (!domRef.current) return;
const dom = domRef.current;
const messages = Array.from(dom.getElementsByClassName(constant/* EXPORT_MESSAGE_CLASS_NAME */.yY));
if (messages.length !== props.messages.length) {
return;
}
const renderMsgs = messages.map((v, i)=>{
const [role, _] = v.id.split(":");
return {
id: i.toString(),
role: role,
content: role === "user" ? v.textContent ?? "" : v.innerHTML,
date: ""
};
});
props.onRender(renderMsgs);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
ref: domRef,
children: props.messages.map((m, i)=>/*#__PURE__*/ jsx_runtime_.jsx("div", {
id: `${m.role}:${i}`,
className: constant/* EXPORT_MESSAGE_CLASS_NAME */.yY,
children: /*#__PURE__*/ jsx_runtime_.jsx(Markdown, {
content: (0,utils/* getMessageTextContent */.YK)(m),
defaultShow: true
})
}, i))
});
}
function PreviewActions(props) {
const [loading, setLoading] = (0,react_.useState)(false);
const [shouldExport, setShouldExport] = (0,react_.useState)(false);
const config = (0,store/* useAppConfig */.MG)();
const onRenderMsgs = (msgs)=>{
setShouldExport(false);
var api;
if (config.modelConfig.model.startsWith("gemini")) {
api = new client_api/* ClientApi */.ti(constant/* ModelProvider */.k8.GeminiPro);
} else {
api = new client_api/* ClientApi */.ti(constant/* ModelProvider */.k8.GPT);
}
api.share(msgs).then((res)=>{
if (!res) return;
(0,ui_lib/* showModal */.K4)({
title: locales/* default */.ZP.Export.Share,
children: [
/*#__PURE__*/ jsx_runtime_.jsx("input", {
type: "text",
value: res,
style: {
width: "100%",
maxWidth: "unset"
},
readOnly: true,
onClick: (e)=>e.currentTarget.select()
}, "input")
],
actions: [
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(copy/* default */.Z, {}),
text: locales/* default */.ZP.Chat.Actions.Copy,
onClick: ()=>(0,utils/* copyToClipboard */.vQ)(res)
}, "copy")
]
});
setTimeout(()=>{
window.open(res, "_blank");
}, 800);
}).catch((e)=>{
console.error("[Share]", e);
(0,ui_lib/* showToast */.CF)((0,format/* prettyObject */.B)(e));
}).finally(()=>setLoading(false));
};
const share = async ()=>{
if (props.messages?.length) {
setLoading(true);
setShouldExport(true);
}
};
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["preview-actions"],
children: [
props.showCopy && /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Export.Copy,
bordered: true,
shadow: true,
icon: /*#__PURE__*/ jsx_runtime_.jsx(copy/* default */.Z, {}),
onClick: props.copy
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Export.Download,
bordered: true,
shadow: true,
icon: /*#__PURE__*/ jsx_runtime_.jsx(download/* default */.Z, {}),
onClick: props.download
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.Export.Share,
bordered: true,
shadow: true,
icon: loading ? /*#__PURE__*/ jsx_runtime_.jsx(three_dots/* default */.Z, {}) : /*#__PURE__*/ jsx_runtime_.jsx(icons_share, {}),
onClick: share
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
style: {
position: "fixed",
right: "200vw",
pointerEvents: "none"
},
children: shouldExport && /*#__PURE__*/ jsx_runtime_.jsx(RenderExport, {
messages: props.messages ?? [],
onRender: onRenderMsgs
})
})
]
});
}
function ExportAvatar(props) {
if (props.avatar === store_mask/* DEFAULT_MASK_AVATAR */._G) {
return /*#__PURE__*/ jsx_runtime_.jsx("img", {
src: bot.src,
width: 30,
height: 30,
alt: "bot",
className: "user-avatar"
});
}
return /*#__PURE__*/ jsx_runtime_.jsx(emoji/* Avatar */.qE, {
avatar: props.avatar
});
}
function ImagePreviewer(props) {
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const mask = session.mask;
const config = (0,store/* useAppConfig */.MG)();
const previewRef = (0,react_.useRef)(null);
const copy = ()=>{
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Export.Image.Toast);
const dom = previewRef.current;
if (!dom) return;
(0,lib.toBlob)(dom).then((blob)=>{
if (!blob) return;
try {
navigator.clipboard.write([
new ClipboardItem({
"image/png": blob
})
]).then(()=>{
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Copy.Success);
refreshPreview();
});
} catch (e) {
console.error("[Copy Image] ", e);
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Copy.Failed);
}
});
};
const isMobile = (0,utils/* useMobileScreen */.S0)();
const download = async ()=>{
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Export.Image.Toast);
const dom = previewRef.current;
if (!dom) return;
const isApp = (0,client/* getClientConfig */.Z)()?.isApp;
try {
const blob = await (0,lib.toPng)(dom);
if (!blob) return;
if (isMobile || isApp && window.__TAURI__) {
if (isApp && window.__TAURI__) {
const result = await window.__TAURI__.dialog.save({
defaultPath: `${props.topic}.png`,
filters: [
{
name: "PNG Files",
extensions: [
"png"
]
},
{
name: "All Files",
extensions: [
"*"
]
}
]
});
if (result !== null) {
const response = await fetch(blob);
const buffer = await response.arrayBuffer();
const uint8Array = new Uint8Array(buffer);
await window.__TAURI__.fs.writeBinaryFile(result, uint8Array);
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Download.Success);
} else {
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Download.Failed);
}
} else {
(0,ui_lib/* showImageModal */.vi)(blob);
}
} else {
const link = document.createElement("a");
link.download = `${props.topic}.png`;
link.href = blob;
link.click();
refreshPreview();
}
} catch (error) {
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Download.Failed);
}
};
const refreshPreview = ()=>{
const dom = previewRef.current;
if (dom) {
dom.innerHTML = dom.innerHTML; // Refresh the content of the preview by resetting its HTML for fix a bug glitching
}
};
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["image-previewer"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx(PreviewActions, {
copy: copy,
download: download,
showCopy: !isMobile,
messages: props.messages
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: `${(exporter_module_default())["preview-body"]} ${(exporter_module_default())["default-theme"]}`,
ref: previewRef,
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["chat-info"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default()).logo + " no-dark",
children: /*#__PURE__*/ jsx_runtime_.jsx((image_default()), {
src: chatgpt/* default */.Z.src,
alt: "logo",
width: 50,
height: 50
})
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["main-title"],
children: "GterIng.Com"
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["sub-title"],
children: session.topic
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default()).icons,
children: [
/*#__PURE__*/ jsx_runtime_.jsx(ExportAvatar, {
avatar: config.avatar
}),
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: (exporter_module_default())["icon-space"],
children: "&"
}),
/*#__PURE__*/ jsx_runtime_.jsx(ExportAvatar, {
avatar: mask.avatar
})
]
})
]
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["chat-info-item"],
children: [
locales/* default */.ZP.Exporter.Model,
": ",
mask.modelConfig.model
]
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["chat-info-item"],
children: [
locales/* default */.ZP.Exporter.Messages,
": ",
props.messages.length
]
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default())["chat-info-item"],
children: [
locales/* default */.ZP.Exporter.Time,
":",
" ",
new Date(props.messages.at(-1)?.date ?? Date.now()).toLocaleString()
]
})
]
})
]
}),
props.messages.map((m, i)=>{
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default()).message + " " + (exporter_module_default())["message-" + m.role],
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default()).avatar,
children: /*#__PURE__*/ jsx_runtime_.jsx(ExportAvatar, {
avatar: m.role === "user" ? config.avatar : mask.avatar
})
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (exporter_module_default()).body,
children: [
/*#__PURE__*/ jsx_runtime_.jsx(Markdown, {
content: (0,utils/* getMessageTextContent */.YK)(m),
fontSize: config.fontSize,
defaultShow: true
}),
(0,utils/* getMessageImages */.Bs)(m).length == 1 && /*#__PURE__*/ jsx_runtime_.jsx("img", {
src: (0,utils/* getMessageImages */.Bs)(m)[0],
alt: "message",
className: (exporter_module_default())["message-image"]
}, i),
(0,utils/* getMessageImages */.Bs)(m).length > 1 && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (exporter_module_default())["message-images"],
style: {
"--image-count": (0,utils/* getMessageImages */.Bs)(m).length
},
children: (0,utils/* getMessageImages */.Bs)(m).map((src, i)=>/*#__PURE__*/ jsx_runtime_.jsx("img", {
src: src,
alt: "message",
className: (exporter_module_default())["message-image-multi"]
}, i))
})
]
})
]
}, i);
})
]
})
]
});
}
function MarkdownPreviewer(props) {
const mdText = `# ${props.topic}\n\n` + props.messages.map((m)=>{
return m.role === "user" ? `## ${locales/* default */.ZP.Export.MessageFromYou}:\n${(0,utils/* getMessageTextContent */.YK)(m)}` : `## ${locales/* default */.ZP.Export.MessageFromChatGPT}:\n${(0,utils/* getMessageTextContent */.YK)(m).trim()}`;
}).join("\n\n");
const copy = ()=>{
(0,utils/* copyToClipboard */.vQ)(mdText);
};
const download = ()=>{
(0,utils/* downloadAs */.CP)(mdText, `${props.topic}.md`);
};
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(PreviewActions, {
copy: copy,
download: download,
showCopy: true,
messages: props.messages
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "markdown-body",
children: /*#__PURE__*/ jsx_runtime_.jsx("pre", {
className: (exporter_module_default())["export-content"],
children: mdText
})
})
]
});
}
function JsonPreviewer(props) {
const msgs = {
messages: [
{
role: "system",
content: `${locales/* default */.ZP.FineTuned.Sysmessage} ${props.topic}`
},
...props.messages.map((m)=>({
role: m.role,
content: m.content
}))
]
};
const mdText = "```json\n" + JSON.stringify(msgs, null, 2) + "\n```";
const minifiedJson = JSON.stringify(msgs);
const copy = ()=>{
(0,utils/* copyToClipboard */.vQ)(minifiedJson);
};
const download = ()=>{
(0,utils/* downloadAs */.CP)(JSON.stringify(msgs), `${props.topic}.json`);
};
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(PreviewActions, {
copy: copy,
download: download,
showCopy: false,
messages: props.messages
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "markdown-body",
onClick: copy,
children: /*#__PURE__*/ jsx_runtime_.jsx(Markdown, {
content: mdText
})
})
]
});
}
// EXTERNAL MODULE: ./app/utils/hooks.ts + 1 modules
var hooks = __webpack_require__(75804);
;// CONCATENATED MODULE: ./app/components/chat.tsx
const chat_Markdown = app_dynamic_default()(async ()=>(await Promise.all(/* import() */[__webpack_require__.e(3578), __webpack_require__.e(8914)]).then(__webpack_require__.bind(__webpack_require__, 68914))).Markdown, {
loadableGenerated: {
modules: [
"/Users/xiaomo/Project/ChatGPT-Next-Web/app/components/chat.tsx -> " + "./markdown"
]
},
loading: ()=>/*#__PURE__*/ jsx_runtime_.jsx(three_dots/* default */.Z, {})
});
function SessionConfigModel(props) {
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const maskStore = (0,store_mask/* useMaskStore */.Zy)();
const navigate = (0,react_router_dom_production_min.useNavigate)();
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "modal-mask",
children: /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* Modal */.u_, {
title: locales/* default */.ZP.Context.Edit,
onClose: ()=>props.onClose(),
actions: [
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(reload/* default */.Z, {}),
bordered: true,
text: locales/* default */.ZP.Chat.Config.Reset,
onClick: async ()=>{
if (await (0,ui_lib/* showConfirm */.i0)(locales/* default */.ZP.Memory.ResetConfirm)) {
chatStore.updateCurrentSession((session)=>session.memoryPrompt = "");
}
}
}, "reset"),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(copy/* default */.Z, {}),
bordered: true,
text: locales/* default */.ZP.Chat.Config.SaveAs,
onClick: ()=>{
navigate(constant/* Path */.y$.Masks);
setTimeout(()=>{
maskStore.create(session.mask);
}, 500);
}
}, "copy")
],
children: /*#__PURE__*/ jsx_runtime_.jsx(components_mask.MaskConfig, {
mask: session.mask,
updateMask: (updater)=>{
const mask = {
...session.mask
};
updater(mask);
chatStore.updateCurrentSession((session)=>session.mask = mask);
},
shouldSyncFromGlobal: true,
extraListItems: session.mask.modelConfig.sendMemory ? /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* ListItem */.HC, {
className: "copyable",
title: `${locales/* default */.ZP.Memory.Title} (${session.lastSummarizeIndex} of ${session.messages.length})`,
subTitle: session.memoryPrompt || locales/* default */.ZP.Memory.EmptyContent
}) : /*#__PURE__*/ jsx_runtime_.jsx(jsx_runtime_.Fragment, {})
})
})
});
}
function PromptToast(props) {
const chatStore = useChatStore();
const session = chatStore.currentSession();
const context = session.mask.context;
return /*#__PURE__*/ _jsxs("div", {
className: styles["prompt-toast"],
children: [
props.showToast && /*#__PURE__*/ _jsxs("div", {
className: styles["prompt-toast-inner"] + " clickable",
role: "button",
onClick: ()=>props.setShowModal(true),
children: [
/*#__PURE__*/ _jsx(BrainIcon, {}),
/*#__PURE__*/ _jsx("span", {
className: styles["prompt-toast-content"],
children: Locale.Context.Toast(context.length)
})
]
}),
props.showModal && /*#__PURE__*/ _jsx(SessionConfigModel, {
onClose: ()=>props.setShowModal(false)
})
]
}, "prompt-toast");
}
function useSubmitHandler() {
const config = (0,store/* useAppConfig */.MG)();
const submitKey = config.submitKey;
const isComposing = (0,react_.useRef)(false);
(0,react_.useEffect)(()=>{
const onCompositionStart = ()=>{
isComposing.current = true;
};
const onCompositionEnd = ()=>{
isComposing.current = false;
};
window.addEventListener("compositionstart", onCompositionStart);
window.addEventListener("compositionend", onCompositionEnd);
return ()=>{
window.removeEventListener("compositionstart", onCompositionStart);
window.removeEventListener("compositionend", onCompositionEnd);
};
}, []);
const shouldSubmit = (e)=>{
if (e.key !== "Enter") return false;
if (e.key === "Enter" && (e.nativeEvent.isComposing || isComposing.current)) return false;
return config.submitKey === store/* SubmitKey */.mQ.AltEnter && e.altKey || config.submitKey === store/* SubmitKey */.mQ.CtrlEnter && e.ctrlKey || config.submitKey === store/* SubmitKey */.mQ.ShiftEnter && e.shiftKey || config.submitKey === store/* SubmitKey */.mQ.MetaEnter && e.metaKey || config.submitKey === store/* SubmitKey */.mQ.Enter && !e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey;
};
return {
submitKey,
shouldSubmit
};
}
function PromptHints(props) {
const noPrompts = props.prompts.length === 0;
const [selectIndex, setSelectIndex] = (0,react_.useState)(0);
const selectedRef = (0,react_.useRef)(null);
(0,react_.useEffect)(()=>{
setSelectIndex(0);
}, [
props.prompts.length
]);
(0,react_.useEffect)(()=>{
const onKeyDown = (e)=>{
if (noPrompts || e.metaKey || e.altKey || e.ctrlKey) {
return;
}
// arrow up / down to select prompt
const changeIndex = (delta)=>{
e.stopPropagation();
e.preventDefault();
const nextIndex = Math.max(0, Math.min(props.prompts.length - 1, selectIndex + delta));
setSelectIndex(nextIndex);
selectedRef.current?.scrollIntoView({
block: "center"
});
};
if (e.key === "ArrowUp") {
changeIndex(1);
} else if (e.key === "ArrowDown") {
changeIndex(-1);
} else if (e.key === "Enter") {
const selectedPrompt = props.prompts.at(selectIndex);
if (selectedPrompt) {
props.onPromptSelect(selectedPrompt);
}
}
};
window.addEventListener("keydown", onKeyDown);
return ()=>window.removeEventListener("keydown", onKeyDown);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
props.prompts.length,
selectIndex
]);
if (noPrompts) return null;
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["prompt-hints"],
children: props.prompts.map((prompt, i)=>/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
ref: i === selectIndex ? selectedRef : null,
className: (chat_module_default())["prompt-hint"] + ` ${i === selectIndex ? (chat_module_default())["prompt-hint-selected"] : ""}`,
onClick: ()=>props.onPromptSelect(prompt),
onMouseEnter: ()=>setSelectIndex(i),
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["hint-title"],
children: prompt.title
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["hint-content"],
children: prompt.content
})
]
}, prompt.title + i.toString()))
});
}
function ClearContextDivider() {
const chatStore = (0,store/* useChatStore */.aK)();
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["clear-context"],
onClick: ()=>chatStore.updateCurrentSession((session)=>session.clearContextIndex = undefined),
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["clear-context-tips"],
children: locales/* default */.ZP.Context.Clear
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["clear-context-revert-btn"],
children: locales/* default */.ZP.Context.Revert
})
]
});
}
function ChatAction(props) {
const iconRef = (0,react_.useRef)(null);
const textRef = (0,react_.useRef)(null);
const [width, setWidth] = (0,react_.useState)({
full: 16,
icon: 16
});
function updateWidth() {
if (!iconRef.current || !textRef.current) return;
const getWidth = (dom)=>dom.getBoundingClientRect().width;
const textWidth = getWidth(textRef.current);
const iconWidth = getWidth(iconRef.current);
setWidth({
full: textWidth + iconWidth,
icon: iconWidth
});
}
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: `${(chat_module_default())["chat-input-action"]} clickable`,
onClick: ()=>{
props.onClick();
setTimeout(updateWidth, 1);
},
onMouseEnter: updateWidth,
onTouchStart: updateWidth,
style: {
"--icon-width": `${width.icon}px`,
"--full-width": `${width.full}px`
},
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
ref: iconRef,
className: (chat_module_default()).icon,
children: props.icon
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default()).text,
ref: textRef,
children: props.text
})
]
});
}
function useScrollToBottom() {
// for auto-scroll
const scrollRef = (0,react_.useRef)(null);
const [autoScroll, setAutoScroll] = (0,react_.useState)(true);
function scrollDomToBottom() {
const dom = scrollRef.current;
if (dom) {
requestAnimationFrame(()=>{
setAutoScroll(true);
dom.scrollTo(0, dom.scrollHeight);
});
}
}
// auto scroll
(0,react_.useEffect)(()=>{
if (autoScroll) {
scrollDomToBottom();
}
});
return {
scrollRef,
autoScroll,
setAutoScroll,
scrollDomToBottom
};
}
function ChatActions(props) {
const config = (0,store/* useAppConfig */.MG)();
const navigate = (0,react_router_dom_production_min.useNavigate)();
const chatStore = (0,store/* useChatStore */.aK)();
// switch themes
const theme = config.theme;
function nextTheme() {
const themes = [
store/* Theme */.Q2.Auto,
store/* Theme */.Q2.Light,
store/* Theme */.Q2.Dark
];
const themeIndex = themes.indexOf(theme);
const nextIndex = (themeIndex + 1) % themes.length;
const nextTheme = themes[nextIndex];
config.update((config)=>config.theme = nextTheme);
}
// stop all responses
const couldStop = controller/* ChatControllerPool */.L.hasPending();
const stopAll = ()=>controller/* ChatControllerPool */.L.stopAll();
// switch model
const currentModel = chatStore.currentSession().mask.modelConfig.model;
const allModels = (0,hooks/* useAllModels */.l)();
const models = (0,react_.useMemo)(()=>allModels.filter((m)=>m.available), [
allModels
]);
const [showModelSelector, setShowModelSelector] = (0,react_.useState)(false);
const [showUploadImage, setShowUploadImage] = (0,react_.useState)(false);
(0,react_.useEffect)(()=>{
const show = (0,utils/* isVisionModel */.Xf)(currentModel);
setShowUploadImage(show);
if (!show) {
props.setAttachImages([]);
props.setUploading(false);
}
// if current model is not available
// switch to first available model
const isUnavaliableModel = !models.some((m)=>m.name === currentModel);
if (isUnavaliableModel && models.length > 0) {
const nextModel = models[0].name;
chatStore.updateCurrentSession((session)=>session.mask.modelConfig.model = nextModel);
(0,ui_lib/* showToast */.CF)(nextModel);
}
}, [
chatStore,
currentModel,
models
]);
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-input-actions"],
children: [
couldStop && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: stopAll,
text: locales/* default */.ZP.Chat.InputActions.Stop,
icon: /*#__PURE__*/ jsx_runtime_.jsx(pause, {})
}),
!props.hitBottom && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: props.scrollToBottom,
text: locales/* default */.ZP.Chat.InputActions.ToBottom,
icon: /*#__PURE__*/ jsx_runtime_.jsx(bottom, {})
}),
props.hitBottom && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: props.showPromptModal,
text: locales/* default */.ZP.Chat.InputActions.Settings,
icon: /*#__PURE__*/ jsx_runtime_.jsx(chat_settings, {})
}),
showUploadImage && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: props.uploadImage,
text: locales/* default */.ZP.Chat.InputActions.UploadImage,
icon: props.uploading ? /*#__PURE__*/ jsx_runtime_.jsx(loading, {}) : /*#__PURE__*/ jsx_runtime_.jsx(icons_image, {})
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: nextTheme,
text: locales/* default */.ZP.Chat.InputActions.Theme[theme],
icon: /*#__PURE__*/ jsx_runtime_.jsx(jsx_runtime_.Fragment, {
children: theme === store/* Theme */.Q2.Auto ? /*#__PURE__*/ jsx_runtime_.jsx(auto, {}) : theme === store/* Theme */.Q2.Light ? /*#__PURE__*/ jsx_runtime_.jsx(light, {}) : theme === store/* Theme */.Q2.Dark ? /*#__PURE__*/ jsx_runtime_.jsx(dark, {}) : null
})
}),
(0,store/* useAccessStore */._X)().openaiApiKey && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: props.showPromptHints,
text: locales/* default */.ZP.Chat.InputActions.Prompt,
icon: /*#__PURE__*/ jsx_runtime_.jsx(icons_prompt, {})
}),
(0,store/* useAccessStore */._X)().openaiApiKey && /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: ()=>{
navigate(constant/* Path */.y$.Masks);
},
text: locales/* default */.ZP.Chat.InputActions.Masks,
icon: /*#__PURE__*/ jsx_runtime_.jsx(mask/* default */.Z, {})
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.InputActions.Clear,
icon: /*#__PURE__*/ jsx_runtime_.jsx(icons_break, {}),
onClick: ()=>{
chatStore.updateCurrentSession((session)=>{
if (session.clearContextIndex === session.messages.length) {
session.clearContextIndex = undefined;
} else {
session.clearContextIndex = session.messages.length;
session.memoryPrompt = ""; // will clear memory
}
});
}
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
onClick: ()=>setShowModelSelector(true),
text: currentModel,
icon: /*#__PURE__*/ jsx_runtime_.jsx(robot, {})
}),
showModelSelector && /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* Selector */.Qf, {
defaultSelectedValue: currentModel,
items: models.map((m)=>({
title: m.displayName,
value: m.name
})),
onClose: ()=>setShowModelSelector(false),
onSelection: (s)=>{
if (s.length === 0) return;
chatStore.updateCurrentSession((session)=>{
session.mask.modelConfig.model = s[0];
session.mask.syncGlobalConfig = false;
});
(0,ui_lib/* showToast */.CF)(s[0]);
}
})
]
});
}
function EditMessageModal(props) {
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const [messages, setMessages] = (0,react_.useState)(session.messages.slice());
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "modal-mask",
children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)(ui_lib/* Modal */.u_, {
title: locales/* default */.ZP.Chat.EditMessage.Title,
onClose: props.onClose,
actions: [
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
text: locales/* default */.ZP.UI.Cancel,
icon: /*#__PURE__*/ jsx_runtime_.jsx(cancel/* default */.Z, {}),
onClick: ()=>{
props.onClose();
}
}, "cancel"),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
type: "primary",
text: locales/* default */.ZP.UI.Confirm,
icon: /*#__PURE__*/ jsx_runtime_.jsx(icons_confirm/* default */.Z, {}),
onClick: ()=>{
chatStore.updateCurrentSession((session)=>session.messages = messages);
props.onClose();
}
}, "ok")
],
children: [
/*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* List */.aV, {
children: /*#__PURE__*/ jsx_runtime_.jsx(ui_lib/* ListItem */.HC, {
title: locales/* default */.ZP.Chat.EditMessage.Topic.Title,
subTitle: locales/* default */.ZP.Chat.EditMessage.Topic.SubTitle,
children: /*#__PURE__*/ jsx_runtime_.jsx("input", {
type: "text",
value: session.topic,
onInput: (e)=>chatStore.updateCurrentSession((session)=>session.topic = e.currentTarget.value)
})
})
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_mask.ContextPrompts, {
context: messages,
updateContext: (updater)=>{
const newMessages = messages.slice();
updater(newMessages);
setMessages(newMessages);
}
})
]
})
});
}
function DeleteImageButton(props) {
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["delete-image"],
onClick: props.deleteImage,
children: /*#__PURE__*/ jsx_runtime_.jsx(clear/* default */.Z, {})
});
}
function _Chat() {
const chatStore = (0,store/* useChatStore */.aK)();
const session = chatStore.currentSession();
const config = (0,store/* useAppConfig */.MG)();
const fontSize = config.fontSize;
const [showExport, setShowExport] = (0,react_.useState)(false);
const inputRef = (0,react_.useRef)(null);
const [userInput, setUserInput] = (0,react_.useState)("");
const [isLoading, setIsLoading] = (0,react_.useState)(false);
const { submitKey, shouldSubmit } = useSubmitHandler();
const { scrollRef, setAutoScroll, scrollDomToBottom } = useScrollToBottom();
const [hitBottom, setHitBottom] = (0,react_.useState)(true);
const isMobileScreen = (0,utils/* useMobileScreen */.S0)();
const navigate = (0,react_router_dom_production_min.useNavigate)();
const [attachImages, setAttachImages] = (0,react_.useState)([]);
const [uploading, setUploading] = (0,react_.useState)(false);
// prompt hints
const promptStore = (0,store_prompt/* usePromptStore */.f)();
const [promptHints, setPromptHints] = (0,react_.useState)([]);
const onSearch = (0,index_module/* useDebouncedCallback */.y1)((text)=>{
const matchedPrompts = promptStore.search(text);
setPromptHints(matchedPrompts);
}, 100, {
leading: true,
trailing: true
});
// auto grow input
const [inputRows, setInputRows] = (0,react_.useState)(2);
const measure = (0,index_module/* useDebouncedCallback */.y1)(()=>{
const rows = inputRef.current ? (0,utils/* autoGrowTextArea */.lx)(inputRef.current) : 1;
const inputRows = Math.min(20, Math.max(2 + Number(!isMobileScreen), rows));
setInputRows(inputRows);
}, 100, {
leading: true,
trailing: true
});
// eslint-disable-next-line react-hooks/exhaustive-deps
(0,react_.useEffect)(measure, [
userInput
]);
// chat commands shortcuts
const chatCommands = (0,command/* useChatCommand */.UK)({
new: ()=>chatStore.newSession(),
newm: ()=>navigate(constant/* Path */.y$.NewChat),
prev: ()=>chatStore.nextSession(-1),
next: ()=>chatStore.nextSession(1),
clear: ()=>chatStore.updateCurrentSession((session)=>session.clearContextIndex = session.messages.length),
del: ()=>chatStore.deleteSession(chatStore.currentSessionIndex)
});
// only search prompts when user input is short
const SEARCH_TEXT_LIMIT = 30;
const onInput = (text)=>{
setUserInput(text);
const n = text.trim().length;
// clear search results
if (n === 0) {
setPromptHints([]);
} else if (text.startsWith(command/* ChatCommandPrefix */.x6)) {
setPromptHints(chatCommands.search(text));
} else if (!config.disablePromptHint && n < SEARCH_TEXT_LIMIT) {
// check if need to trigger auto completion
if (text.startsWith("/")) {
let searchText = text.slice(1);
onSearch(searchText);
}
}
};
const doSubmit = (userInput)=>{
if (!accessStore.openaiApiKey) {
window.location.href = "https://passport.gter.net/?referer=https://app.gter.net/ai/login?token={token}#/scanLogin)";
}
if (userInput.trim() === "") return;
const matchCommand = chatCommands.match(userInput);
if (matchCommand.matched) {
setUserInput("");
setPromptHints([]);
matchCommand.invoke();
return;
}
setIsLoading(true);
chatStore.onUserInput(userInput, attachImages).then(()=>setIsLoading(false));
setAttachImages([]);
localStorage.setItem(constant/* LAST_INPUT_KEY */.Sb, userInput);
setUserInput("");
setPromptHints([]);
if (!isMobileScreen) inputRef.current?.focus();
setAutoScroll(true);
};
const onPromptSelect = (prompt)=>{
setTimeout(()=>{
setPromptHints([]);
const matchedChatCommand = chatCommands.match(prompt.content);
if (matchedChatCommand.matched) {
// if user is selecting a chat command, just trigger it
matchedChatCommand.invoke();
setUserInput("");
} else {
// or fill the prompt
setUserInput(prompt.content);
}
inputRef.current?.focus();
}, 30);
};
// stop response
const onUserStop = (messageId)=>{
controller/* ChatControllerPool */.L.stop(session.id, messageId);
};
(0,react_.useEffect)(()=>{
chatStore.updateCurrentSession((session)=>{
const stopTiming = Date.now() - constant/* REQUEST_TIMEOUT_MS */.tb;
session.messages.forEach((m)=>{
// check if should stop all stale messages
if (m.isError || new Date(m.date).getTime() < stopTiming) {
if (m.streaming) {
m.streaming = false;
}
if (m.content.length === 0) {
m.isError = true;
m.content = (0,format/* prettyObject */.B)({
error: true,
message: "empty response"
});
}
}
});
// auto sync mask config from global config
if (session.mask.syncGlobalConfig) {
console.log("[Mask] syncing from global, name = ", session.mask.name);
session.mask.modelConfig = {
...config.modelConfig
};
}
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
// check if should send message
const onInputKeyDown = (e)=>{
// if ArrowUp and no userInput, fill with last input
if (e.key === "ArrowUp" && userInput.length <= 0 && !(e.metaKey || e.altKey || e.ctrlKey)) {
setUserInput(localStorage.getItem(constant/* LAST_INPUT_KEY */.Sb) ?? "");
e.preventDefault();
return;
}
if (shouldSubmit(e) && promptHints.length === 0) {
doSubmit(userInput);
e.preventDefault();
}
};
const onRightClick = (e, message)=>{
// copy to clipboard
if ((0,utils/* selectOrCopy */.Ri)(e.currentTarget, (0,utils/* getMessageTextContent */.YK)(message))) {
if (userInput.length === 0) {
setUserInput((0,utils/* getMessageTextContent */.YK)(message));
}
e.preventDefault();
}
};
const deleteMessage = (msgId)=>{
chatStore.updateCurrentSession((session)=>session.messages = session.messages.filter((m)=>m.id !== msgId));
};
const onDelete = (msgId)=>{
deleteMessage(msgId);
};
const onResend = (message)=>{
// when it is resending a message
// 1. for a user's message, find the next bot response
// 2. for a bot's message, find the last user's input
// 3. delete original user input and bot's message
// 4. resend the user's input
const resendingIndex = session.messages.findIndex((m)=>m.id === message.id);
if (resendingIndex < 0 || resendingIndex >= session.messages.length) {
console.error("[Chat] failed to find resending message", message);
return;
}
let userMessage;
let botMessage;
if (message.role === "assistant") {
// if it is resending a bot's message, find the user input for it
botMessage = message;
for(let i = resendingIndex; i >= 0; i -= 1){
if (session.messages[i].role === "user") {
userMessage = session.messages[i];
break;
}
}
} else if (message.role === "user") {
// if it is resending a user's input, find the bot's response
userMessage = message;
for(let i = resendingIndex; i < session.messages.length; i += 1){
if (session.messages[i].role === "assistant") {
botMessage = session.messages[i];
break;
}
}
}
if (userMessage === undefined) {
console.error("[Chat] failed to resend", message);
return;
}
// delete the original messages
deleteMessage(userMessage.id);
deleteMessage(botMessage?.id);
// resend the message
setIsLoading(true);
const textContent = (0,utils/* getMessageTextContent */.YK)(userMessage);
const images = (0,utils/* getMessageImages */.Bs)(userMessage);
chatStore.onUserInput(textContent, images).then(()=>setIsLoading(false));
inputRef.current?.focus();
};
const onPinMessage = (message)=>{
chatStore.updateCurrentSession((session)=>session.mask.context.push(message));
(0,ui_lib/* showToast */.CF)(locales/* default */.ZP.Chat.Actions.PinToastContent, {
text: locales/* default */.ZP.Chat.Actions.PinToastAction,
onClick: ()=>{
setShowPromptModal(true);
}
});
};
const context = (0,react_.useMemo)(()=>{
return session.mask.hideContext ? [] : session.mask.context.slice();
}, [
session.mask.context,
session.mask.hideContext
]);
const accessStore = (0,store/* useAccessStore */._X)();
if (context.length === 0 && session.messages.at(0)?.content !== store/* BOT_HELLO */.ux.content) {
const copiedHello = Object.assign({}, store/* BOT_HELLO */.ux);
if (!accessStore.isAuthorized()) {
copiedHello.content = locales/* default */.ZP.Error.Unauthorized;
}
context.push(copiedHello);
}
// preview messages
const renderMessages = (0,react_.useMemo)(()=>{
return context.concat(session.messages).concat(isLoading ? [
{
...(0,store/* createMessage */.tn)({
role: "assistant",
content: "……"
}),
preview: true
}
] : []).concat(userInput.length > 0 && config.sendPreviewBubble ? [
{
...(0,store/* createMessage */.tn)({
role: "user",
content: userInput
}),
preview: true
}
] : []);
}, [
config.sendPreviewBubble,
context,
isLoading,
session.messages,
userInput
]);
const [msgRenderIndex, _setMsgRenderIndex] = (0,react_.useState)(Math.max(0, renderMessages.length - constant/* CHAT_PAGE_SIZE */.nS));
function setMsgRenderIndex(newIndex) {
newIndex = Math.min(renderMessages.length - constant/* CHAT_PAGE_SIZE */.nS, newIndex);
newIndex = Math.max(0, newIndex);
_setMsgRenderIndex(newIndex);
}
const messages = (0,react_.useMemo)(()=>{
const endRenderIndex = Math.min(msgRenderIndex + 3 * constant/* CHAT_PAGE_SIZE */.nS, renderMessages.length);
return renderMessages.slice(msgRenderIndex, endRenderIndex);
}, [
msgRenderIndex,
renderMessages
]);
const onChatBodyScroll = (e)=>{
const bottomHeight = e.scrollTop + e.clientHeight;
const edgeThreshold = e.clientHeight;
const isTouchTopEdge = e.scrollTop <= edgeThreshold;
const isTouchBottomEdge = bottomHeight >= e.scrollHeight - edgeThreshold;
const isHitBottom = bottomHeight >= e.scrollHeight - (isMobileScreen ? 4 : 10);
const prevPageMsgIndex = msgRenderIndex - constant/* CHAT_PAGE_SIZE */.nS;
const nextPageMsgIndex = msgRenderIndex + constant/* CHAT_PAGE_SIZE */.nS;
if (isTouchTopEdge && !isTouchBottomEdge) {
setMsgRenderIndex(prevPageMsgIndex);
} else if (isTouchBottomEdge) {
setMsgRenderIndex(nextPageMsgIndex);
}
setHitBottom(isHitBottom);
setAutoScroll(isHitBottom);
};
function scrollToBottom() {
setMsgRenderIndex(renderMessages.length - constant/* CHAT_PAGE_SIZE */.nS);
scrollDomToBottom();
}
// clear context index = context length + index in messages
const clearContextIndex = (session.clearContextIndex ?? -1) >= 0 ? session.clearContextIndex + context.length - msgRenderIndex : -1;
const [showPromptModal, setShowPromptModal] = (0,react_.useState)(false);
const clientConfig = (0,react_.useMemo)(()=>(0,client/* getClientConfig */.Z)(), []);
const autoFocus = !isMobileScreen; // wont auto focus on mobile screen
const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
(0,command/* useCommand */.YZ)({
fill: setUserInput,
submit: (text)=>{
doSubmit(text);
},
code: (text)=>{
if (accessStore.disableFastLink) return;
console.log("[Command] got code from url: ", text);
(0,ui_lib/* showConfirm */.i0)(locales/* default */.ZP.URLCommand.Code + `code = ${text}`).then((res)=>{
if (res) {
accessStore.update((access)=>access.accessCode = text);
}
});
},
settings: (text)=>{
if (accessStore.disableFastLink) return;
try {
const payload = JSON.parse(text);
console.log("[Command] got settings from url: ", payload);
if (payload.key || payload.url) {
// var messages = Locale.URLCommand.Settings + `\n${JSON.stringify(payload, null, 4)}`;
var messages = "检测到已登录寄托账号(UID:" + payload.uin + "),请确定是否继续登录?";
(0,ui_lib/* showConfirm */.i0)(messages).then((res)=>{
if (!res) return;
if (payload.key) {
accessStore.update((access)=>access.openaiApiKey = payload.key);
}
if (payload.url) {
accessStore.update((access)=>access.openaiUrl = payload.url);
}
});
}
} catch {
console.error("[Command] failed to get settings from url: ", text);
}
}
});
// edit / insert message modal
const [isEditingMessage, setIsEditingMessage] = (0,react_.useState)(false);
// remember unfinished input
(0,react_.useEffect)(()=>{
// try to load from local storage
const key = (0,constant/* UNFINISHED_INPUT */.AI)(session.id);
const mayBeUnfinishedInput = localStorage.getItem(key);
if (mayBeUnfinishedInput && userInput.length === 0) {
setUserInput(mayBeUnfinishedInput);
localStorage.removeItem(key);
}
const dom = inputRef.current;
return ()=>{
localStorage.setItem(key, dom?.value ?? "");
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
async function uploadImage() {
const images = [];
images.push(...attachImages);
images.push(...await new Promise((res, rej)=>{
const fileInput = document.createElement("input");
fileInput.type = "file";
fileInput.accept = "image/png, image/jpeg, image/webp, image/heic, image/heif";
fileInput.multiple = true;
fileInput.onchange = (event)=>{
setUploading(true);
const files = event.target.files;
const imagesData = [];
for(let i = 0; i < files.length; i++){
const file = event.target.files[i];
(0,utils/* compressImage */.hv)(file, 256 * 1024).then((dataUrl)=>{
imagesData.push(dataUrl);
if (imagesData.length === 3 || imagesData.length === files.length) {
setUploading(false);
res(imagesData);
}
}).catch((e)=>{
setUploading(false);
rej(e);
});
}
};
fileInput.click();
}));
const imagesLength = images.length;
if (imagesLength > 3) {
images.splice(3, imagesLength - 3);
}
setAttachImages(images);
}
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default()).chat,
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: "window-header",
"data-tauri-drag-region": true,
children: [
isMobileScreen && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-actions",
children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-action-button",
children: /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(icons_return, {}),
bordered: true,
title: locales/* default */.ZP.Chat.Actions.ChatList,
onClick: ()=>navigate(constant/* Path */.y$.Home)
})
})
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: `window-header-title ${(chat_module_default())["chat-body-title"]}`,
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: `window-header-main-title ${(chat_module_default())["chat-body-main-title"]}`,
onClickCapture: ()=>setIsEditingMessage(true),
children: !session.topic ? store/* DEFAULT_TOPIC */.HX : session.topic
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-header-sub-title",
children: locales/* default */.ZP.Chat.SubTitle(session.messages.length)
})
]
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: "window-actions",
children: [
!isMobileScreen && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-action-button",
children: /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(rename, {}),
bordered: true,
onClick: ()=>setIsEditingMessage(true)
})
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-action-button",
children: /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(icons_share, {}),
bordered: true,
title: locales/* default */.ZP.Chat.Actions.Export,
onClick: ()=>{
setShowExport(true);
}
})
}),
showMaxIcon && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: "window-action-button",
children: /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: config.tightBorder ? /*#__PURE__*/ jsx_runtime_.jsx(min/* default */.Z, {}) : /*#__PURE__*/ jsx_runtime_.jsx(max/* default */.Z, {}),
bordered: true,
onClick: ()=>{
config.update((config)=>config.tightBorder = !config.tightBorder);
}
})
})
]
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-body"],
ref: scrollRef,
onScroll: (e)=>onChatBodyScroll(e.currentTarget),
onMouseDown: ()=>inputRef.current?.blur(),
onTouchStart: ()=>{
inputRef.current?.blur();
setAutoScroll(false);
},
children: messages.map((message, i)=>{
const isUser = message.role === "user";
const isContext = i < context.length;
const showActions = i > 0 && !(message.preview || message.content.length === 0) && !isContext;
const showTyping = message.preview || message.streaming;
const shouldShowClearContextDivider = i === clearContextIndex - 1;
return /*#__PURE__*/ (0,jsx_runtime_.jsxs)(react_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: isUser ? (chat_module_default())["chat-message-user"] : (chat_module_default())["chat-message"],
children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-message-container"],
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-message-header"],
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-message-avatar"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-message-edit"],
children: /*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(rename, {}),
onClick: async ()=>{
const newMessage = await (0,ui_lib/* showPrompt */.G5)(locales/* default */.ZP.Chat.Actions.Edit, (0,utils/* getMessageTextContent */.YK)(message), 10);
let newContent = newMessage;
const images = (0,utils/* getMessageImages */.Bs)(message);
if (images.length > 0) {
newContent = [
{
type: "text",
text: newMessage
}
];
for(let i = 0; i < images.length; i++){
newContent.push({
type: "image_url",
image_url: {
url: images[i]
}
});
}
}
chatStore.updateCurrentSession((session)=>{
const m = session.mask.context.concat(session.messages).find((m)=>m.id === message.id);
if (m) {
m.content = newContent;
}
});
}
})
}),
isUser ? /*#__PURE__*/ jsx_runtime_.jsx(emoji/* Avatar */.qE, {
avatar: config.avatar
}) : /*#__PURE__*/ jsx_runtime_.jsx(jsx_runtime_.Fragment, {
children: [
"system"
].includes(message.role) ? /*#__PURE__*/ jsx_runtime_.jsx(emoji/* Avatar */.qE, {
avatar: "2699-fe0f"
}) : /*#__PURE__*/ jsx_runtime_.jsx(components_mask.MaskAvatar, {
avatar: session.mask.avatar,
model: message.model || session.mask.modelConfig.model
})
})
]
}),
showActions && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-message-actions"],
children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-input-actions"],
children: message.streaming ? /*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.Actions.Stop,
icon: /*#__PURE__*/ jsx_runtime_.jsx(pause, {}),
onClick: ()=>onUserStop(message.id ?? i)
}) : /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.Actions.Retry,
icon: /*#__PURE__*/ jsx_runtime_.jsx(reload/* default */.Z, {}),
onClick: ()=>onResend(message)
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.Actions.Delete,
icon: /*#__PURE__*/ jsx_runtime_.jsx(clear/* default */.Z, {}),
onClick: ()=>onDelete(message.id ?? i)
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.Actions.Pin,
icon: /*#__PURE__*/ jsx_runtime_.jsx(pin, {}),
onClick: ()=>onPinMessage(message)
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatAction, {
text: locales/* default */.ZP.Chat.Actions.Copy,
icon: /*#__PURE__*/ jsx_runtime_.jsx(copy/* default */.Z, {}),
onClick: ()=>(0,utils/* copyToClipboard */.vQ)((0,utils/* getMessageTextContent */.YK)(message))
})
]
})
})
})
]
}),
showTyping && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-message-status"],
children: locales/* default */.ZP.Chat.Typing
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-message-item"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx(chat_Markdown, {
content: (0,utils/* getMessageTextContent */.YK)(message),
loading: (message.preview || message.streaming) && message.content.length === 0 && !isUser,
onContextMenu: (e)=>onRightClick(e, message),
onDoubleClickCapture: ()=>{
if (!isMobileScreen) return;
setUserInput((0,utils/* getMessageTextContent */.YK)(message));
},
fontSize: fontSize,
parentRef: scrollRef,
defaultShow: i >= messages.length - 6
}),
(0,utils/* getMessageImages */.Bs)(message).length == 1 && /*#__PURE__*/ jsx_runtime_.jsx("img", {
className: (chat_module_default())["chat-message-item-image"],
src: (0,utils/* getMessageImages */.Bs)(message)[0],
alt: ""
}),
(0,utils/* getMessageImages */.Bs)(message).length > 1 && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-message-item-images"],
style: {
"--image-count": (0,utils/* getMessageImages */.Bs)(message).length
},
children: (0,utils/* getMessageImages */.Bs)(message).map((image, index)=>{
return /*#__PURE__*/ jsx_runtime_.jsx("img", {
className: (chat_module_default())["chat-message-item-image-multi"],
src: image,
alt: ""
}, index);
})
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["chat-message-action-date"],
children: isContext ? locales/* default */.ZP.Chat.IsContext : message.date.toLocaleString()
})
]
})
}),
shouldShowClearContextDivider && /*#__PURE__*/ jsx_runtime_.jsx(ClearContextDivider, {})
]
}, message.id);
})
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: (chat_module_default())["chat-input-panel"],
children: [
/*#__PURE__*/ jsx_runtime_.jsx(PromptHints, {
prompts: promptHints,
onPromptSelect: onPromptSelect
}),
/*#__PURE__*/ jsx_runtime_.jsx(ChatActions, {
uploadImage: uploadImage,
setAttachImages: setAttachImages,
setUploading: setUploading,
showPromptModal: ()=>setShowPromptModal(true),
scrollToBottom: scrollToBottom,
hitBottom: hitBottom,
uploading: uploading,
showPromptHints: ()=>{
// Click again to close
if (promptHints.length > 0) {
setPromptHints([]);
return;
}
inputRef.current?.focus();
setUserInput("/");
onSearch("");
}
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("label", {
className: `${(chat_module_default())["chat-input-panel-inner"]} ${attachImages.length != 0 ? (chat_module_default())["chat-input-panel-inner-attach"] : ""}`,
htmlFor: "chat-input",
children: [
/*#__PURE__*/ jsx_runtime_.jsx("textarea", {
id: "chat-input",
ref: inputRef,
className: (chat_module_default())["chat-input"],
placeholder: accessStore.openaiApiKey ? locales/* default */.ZP.Chat.Input(submitKey) : "请先登录或者在设置页填入你自己的 OpenAI API Key",
disabled: !accessStore.openaiApiKey,
onInput: (e)=>onInput(e.currentTarget.value),
value: userInput,
onKeyDown: onInputKeyDown,
onFocus: scrollToBottom,
onClick: scrollToBottom,
rows: inputRows,
autoFocus: autoFocus,
style: {
fontSize: config.fontSize
}
}),
attachImages.length != 0 && /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["attach-images"],
children: attachImages.map((image, index)=>{
return /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["attach-image"],
style: {
backgroundImage: `url("${image}")`
},
children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
className: (chat_module_default())["attach-image-mask"],
children: /*#__PURE__*/ jsx_runtime_.jsx(DeleteImageButton, {
deleteImage: ()=>{
setAttachImages(attachImages.filter((_, i)=>i !== index));
}
})
})
}, index);
})
}),
/*#__PURE__*/ jsx_runtime_.jsx(components_button/* IconButton */.h, {
icon: /*#__PURE__*/ jsx_runtime_.jsx(send_white, {}),
text: accessStore.openaiApiKey ? locales/* default */.ZP.Chat.Send : "登录",
className: (chat_module_default())["chat-input-send"],
type: "primary",
onClick: ()=>doSubmit(userInput)
})
]
})
]
}),
showExport && /*#__PURE__*/ jsx_runtime_.jsx(ExportMessageModal, {
onClose: ()=>setShowExport(false)
}),
isEditingMessage && /*#__PURE__*/ jsx_runtime_.jsx(EditMessageModal, {
onClose: ()=>{
setIsEditingMessage(false);
}
})
]
}, session.id);
}
function Chat() {
const chatStore = (0,store/* useChatStore */.aK)();
const sessionIndex = chatStore.currentSessionIndex;
return /*#__PURE__*/ jsx_runtime_.jsx(_Chat, {}, sessionIndex);
}
/***/ }),
/***/ 35878:
/***/ ((module) => {
// Exports
module.exports = {
"message-exporter-body": "exporter_message-exporter-body__ieezO",
"export-content": "exporter_export-content__bLZvx",
"steps": "exporter_steps__6n3hv",
"steps-progress": "exporter_steps-progress__BaZCB",
"steps-progress-inner": "exporter_steps-progress-inner__Bx3Y4",
"steps-inner": "exporter_steps-inner__EVqvK",
"step": "exporter_step__WhCEO",
"step-finished": "exporter_step-finished__eBg9d",
"step-current": "exporter_step-current__oh5Mc",
"step-index": "exporter_step-index__bWRYR",
"step-name": "exporter_step-name__aj81m",
"preview-actions": "exporter_preview-actions__EdSLJ",
"image-previewer": "exporter_image-previewer__uKfNQ",
"preview-body": "exporter_preview-body__qK5Zf",
"chat-info": "exporter_chat-info__N_j5m",
"icons": "exporter_icons__7WRoV",
"logo": "exporter_logo__zu13e",
"main-title": "exporter_main-title__jjxAd",
"sub-title": "exporter_sub-title__p1RCl",
"icon-space": "exporter_icon-space__u_tMK",
"chat-info-item": "exporter_chat-info-item__3D12j",
"message": "exporter_message__3aahS",
"avatar": "exporter_avatar__fGOtt",
"body": "exporter_body__gcKIl",
"message-image": "exporter_message-image__ofOeC",
"message-images": "exporter_message-images__oJoIX",
"message-image-multi": "exporter_message-image-multi__jzQdX",
"message-assistant": "exporter_message-assistant__sDmHi",
"message-user": "exporter_message-user__2t254"
};
/***/ }),
/***/ 85345:
/***/ ((module) => {
// Exports
module.exports = {
"message-selector": "message-selector_message-selector__dOKbo",
"message-filter": "message-selector_message-filter__Q5XSd",
"search-bar": "message-selector_search-bar__4E5gq",
"actions": "message-selector_actions__MyZCT",
"messages": "message-selector_messages__GbOLr",
"message": "message-selector_message___TaV9",
"message-selected": "message-selector_message-selected__b3mDv",
"avatar": "message-selector_avatar__HCJ8t",
"body": "message-selector_body__rKEIZ",
"date": "message-selector_date__vc48w",
"content": "message-selector_content__Z9W8L",
"checkbox": "message-selector_checkbox__erPyd"
};
/***/ })
};
;