@scalar/agent-chat 0.12.24 → 0.12.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ResponseBody/ResponseBody.vue.d.ts.map +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.script.js +1 -2
- package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +1 -1
- package/dist/components/ResponseBody/helpers/media-types.d.ts.map +1 -1
- package/dist/components/ResponseBody/helpers/media-types.js +10 -0
- package/dist/components/ResponseBody/helpers/media-types.js.map +1 -1
- package/dist/helpers.d.ts +16 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/package.json +1 -1
- package/dist/style.css +41 -41
- package/dist/views/PromptForm.vue.d.ts.map +1 -1
- package/dist/views/PromptForm.vue.js +1 -1
- package/dist/views/PromptForm.vue.js.map +1 -1
- package/dist/views/PromptForm.vue.script.js +1 -0
- package/dist/views/PromptForm.vue.script.js.map +1 -1
- package/dist/vue-styles.css +39 -39
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseBody.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResponseBody.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAIhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;QACnB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;CAC5B,CAAC;AA2DF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseBody.vue.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {
|
|
1
|
+
{"version":3,"file":"ResponseBody.vue.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\nimport type { MimeType } from '@/types/mime-type'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MimeType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import ResponseBodyInfo_default from "./ResponseBodyInfo.vue.js";
|
|
2
2
|
import ResponseBodyPreview_default from "./ResponseBodyPreview.vue.js";
|
|
3
3
|
import ResponseBodyRaw_default from "./ResponseBodyRaw.vue.js";
|
|
4
|
-
import { Fragment, createBlock, createCommentVNode, createElementBlock, createTextVNode, defineComponent, openBlock,
|
|
4
|
+
import { Fragment, createBlock, createCommentVNode, createElementBlock, createTextVNode, defineComponent, openBlock, withCtx } from "vue";
|
|
5
5
|
//#region src/components/ResponseBody/ResponseBody.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var ResponseBody_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
7
7
|
__name: "ResponseBody",
|
|
@@ -12,7 +12,6 @@ var ResponseBody_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
12
12
|
display: {}
|
|
13
13
|
},
|
|
14
14
|
setup(__props) {
|
|
15
|
-
watch(() => __props.display, (v) => console.log(v));
|
|
16
15
|
return (_ctx, _cache) => {
|
|
17
16
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
18
17
|
__props.mediaConfig?.raw && __props.display === "raw" && __props.mediaConfig.language ? (openBlock(), createBlock(ResponseBodyRaw_default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseBody.vue.script.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {
|
|
1
|
+
{"version":3,"file":"ResponseBody.vue.script.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\nimport type { MimeType } from '@/types/mime-type'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MimeType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;IAqBU,QAAA,aAAa,OAAO,QAAA,YAAO,SAAc,QAAA,YAAY,YAAA,UAAA,GAD7D,YAIqC,yBAAA;KAFlC,KAAK,QAAA,aAAa;KAClB,SAAS,QAAA;KACT,UAAU,QAAA,YAAY;;IAEjB,QAAA,aAAa,WAAW,QAAA,YAAO,aAAA,UAAA,GADvC,YAMiD,6BAAA;KAJ9C,KAAK,QAAA,aAAa;KAClB,OAAO,QAAA,YAAY;KACnB,MAAM,QAAA,YAAY;KAClB,KAAK,QAAA,aAAa;KAClB,MAAM,QAAA,aAAa,UAAU,WAAO;;;;;;;KACd,QAAA,aAAa,OAAG,CAAK,QAAA,aAAa,WAAA,UAAA,GAA3D,YAEmB,0BAAA,EAAA,KAAA,EAAA,GAAA;4BAAnB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFoE,iBAEpE,EAAA,CAAA,EAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-types.d.ts","sourceRoot":"","sources":["../../../../src/components/ResponseBody/helpers/media-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;
|
|
1
|
+
{"version":3,"file":"media-types.d.ts","sourceRoot":"","sources":["../../../../src/components/ResponseBody/helpers/media-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA4HD,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAgBxE"}
|
|
@@ -33,6 +33,16 @@ var mediaTypes = {
|
|
|
33
33
|
raw: true,
|
|
34
34
|
language: "json"
|
|
35
35
|
},
|
|
36
|
+
"application/x-ndjson": {
|
|
37
|
+
extension: ".ndjson",
|
|
38
|
+
raw: true,
|
|
39
|
+
language: "json"
|
|
40
|
+
},
|
|
41
|
+
"application/ndjson": {
|
|
42
|
+
extension: ".ndjson",
|
|
43
|
+
raw: true,
|
|
44
|
+
language: "json"
|
|
45
|
+
},
|
|
36
46
|
"application/msword": { extension: ".doc" },
|
|
37
47
|
"application/octet-stream": { extension: ".bin" },
|
|
38
48
|
"application/ogg": { extension: ".ogx" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-types.js","names":[],"sources":["../../../../src/components/ResponseBody/helpers/media-types.ts"],"sourcesContent":["export type MediaPreview = 'object' | 'image' | 'video' | 'audio'\n\nexport type MediaConfig = {\n preview?: MediaPreview\n alpha?: boolean\n raw?: boolean\n language?: string\n extension: string\n}\n\n/** Media Type (MIME Type) Definitions */\nconst mediaTypes: { [type: string]: MediaConfig | undefined } = {\n 'application/epub+zip': { extension: '.epub' },\n 'application/gzip': { extension: '.gz' },\n 'application/java-archive': { extension: '.jar' },\n 'application/javascript': { extension: '.js', raw: true },\n 'application/json': { extension: '.json', raw: true, language: 'json' },\n 'application/ld+json': { extension: '.jsonld', raw: true, language: 'json' },\n 'application/problem+json': {\n extension: '.json',\n raw: true,\n language: 'json',\n },\n 'application/vnd.api+json': {\n extension: '.json',\n raw: true,\n language: 'json',\n },\n 'application/dns-json': { extension: '.json', raw: true, language: 'json' },\n 'application/msword': { extension: '.doc' },\n 'application/octet-stream': { extension: '.bin' },\n 'application/ogg': { extension: '.ogx' },\n 'application/pdf': { extension: '.pdf', preview: 'object' },\n 'application/rtf': { extension: '.rtf', raw: true },\n 'application/vnd.amazon.ebook': { extension: '.azw' },\n 'application/vnd.apple.installer+xml': {\n extension: '.mpkg',\n raw: true,\n language: 'xml',\n },\n 'application/vnd.mozilla.xul+xml': {\n extension: '.xul',\n raw: true,\n language: 'xml',\n },\n 'application/vnd.ms-excel': { extension: '.xls' },\n 'application/vnd.ms-fontobject': { extension: '.eot' },\n 'application/vnd.ms-powerpoint': { extension: '.ppt' },\n 'application/vnd.oasis.opendocument.presentation': { extension: '.odp' },\n 'application/vnd.oasis.opendocument.spreadsheet': { extension: '.ods' },\n 'application/vnd.oasis.opendocument.text': { extension: '.odt' },\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': {\n extension: '.pptx',\n },\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {\n extension: '.xlsx',\n },\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': {\n extension: '.docx',\n },\n 'application/vnd.rar': { extension: '.rar' },\n 'application/vnd.visio': { extension: '.vsd' },\n 'application/x-7z-compressed': { extension: '.7z' },\n 'application/x-abiword': { extension: '.abw' },\n 'application/x-bzip': { extension: '.bz' },\n 'application/x-bzip2': { extension: '.bz2' },\n 'application/x-cdf': { extension: '.cda' },\n 'application/x-csh': { extension: '.csh' },\n 'application/x-freearc': { extension: '.arc' },\n 'application/x-httpd-php': { extension: '.php', raw: true },\n 'application/x-sh': { extension: '.sh', raw: true },\n 'application/x-tar': { extension: '.tar' },\n 'application/xhtml+xml': { extension: '.xhtml', raw: true, language: 'html' },\n 'application/xml': { extension: '.xml', raw: true, language: 'xml' },\n 'application/yaml': { extension: '.yaml', raw: true, language: 'yaml' },\n 'application/zip': { extension: '.zip' },\n 'audio/aac': { extension: '.aac' },\n 'audio/midi': { extension: '.midi' },\n 'audio/mpeg': { extension: '.mp3', preview: 'audio' },\n 'audio/ogg': { extension: '.oga' },\n 'audio/wav': { extension: '.wav' },\n 'audio/webm': { extension: '.weba' },\n 'font/otf': { extension: '.otf' },\n 'font/ttf': { extension: '.ttf' },\n 'font/woff': { extension: '.woff' },\n 'font/woff2': { extension: '.woff2' },\n 'image/apng': { extension: '.apng', preview: 'image', alpha: true },\n 'image/avif': { extension: '.avif', preview: 'image' },\n 'image/bmp': { extension: '.bmp', preview: 'image' },\n 'image/gif': { extension: '.gif', preview: 'image', alpha: true },\n 'image/jpeg': { extension: '.jpg', preview: 'image' },\n 'image/png': { extension: '.png', preview: 'image', alpha: true },\n 'image/svg+xml': {\n extension: '.svg',\n raw: true,\n language: 'xml',\n preview: 'image',\n alpha: true,\n },\n 'image/tiff': { extension: '.tiff' },\n 'image/vnd.microsoft.icon': { extension: '.ico', preview: 'image' },\n 'image/webp': { extension: '.webp', preview: 'image', alpha: true },\n 'text/calendar': { extension: '.ics', raw: true },\n 'text/css': { extension: '.css', raw: true, language: 'css' },\n 'text/csv': { extension: '.csv', raw: true },\n 'text/html': {\n extension: '.html',\n raw: true,\n language: 'html',\n preview: 'object',\n },\n 'text/javascript': { extension: '.js', raw: true },\n 'text/plain': { extension: '.txt', raw: true },\n 'text/xml': { extension: '.xml', raw: true, language: 'xml' },\n 'text/yaml': { extension: '.yaml', raw: true, language: 'yaml' },\n 'video/3gpp': { extension: '.3gp' },\n 'audio/3gpp': { extension: '.3gp' },\n 'video/3gpp2': { extension: '.3g2' },\n 'audio/3gpp2': { extension: '.3g2' },\n 'video/mp2t': { extension: '.ts' },\n 'video/mp4': { extension: '.mp4', preview: 'video' },\n 'video/mpeg': { extension: '.mpeg' },\n 'video/ogg': { extension: '.ogv' },\n 'video/webm': { extension: '.webm', preview: 'video' },\n 'video/x-msvideo': { extension: '.avi' },\n}\n\n/** Get the config for a media type */\nexport function getMediaTypeConfig(type: string): MediaConfig | undefined {\n const config = mediaTypes[type]\n if (config) {\n return config\n }\n\n // Fallback for +json types\n if (type.endsWith('+json')) {\n return {\n extension: '.json',\n raw: true,\n language: 'json',\n }\n }\n\n return undefined\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-types.js","names":[],"sources":["../../../../src/components/ResponseBody/helpers/media-types.ts"],"sourcesContent":["export type MediaPreview = 'object' | 'image' | 'video' | 'audio'\n\nexport type MediaConfig = {\n preview?: MediaPreview\n alpha?: boolean\n raw?: boolean\n language?: string\n extension: string\n}\n\n/** Media Type (MIME Type) Definitions */\nconst mediaTypes: { [type: string]: MediaConfig | undefined } = {\n 'application/epub+zip': { extension: '.epub' },\n 'application/gzip': { extension: '.gz' },\n 'application/java-archive': { extension: '.jar' },\n 'application/javascript': { extension: '.js', raw: true },\n 'application/json': { extension: '.json', raw: true, language: 'json' },\n 'application/ld+json': { extension: '.jsonld', raw: true, language: 'json' },\n 'application/problem+json': {\n extension: '.json',\n raw: true,\n language: 'json',\n },\n 'application/vnd.api+json': {\n extension: '.json',\n raw: true,\n language: 'json',\n },\n 'application/dns-json': { extension: '.json', raw: true, language: 'json' },\n // Newline-delimited JSON is many JSON objects separated by newlines, not one\n // JSON document, so we show it as raw text with JSON highlighting rather than\n // pretty-printing it as a single object.\n 'application/x-ndjson': { extension: '.ndjson', raw: true, language: 'json' },\n 'application/ndjson': { extension: '.ndjson', raw: true, language: 'json' },\n 'application/msword': { extension: '.doc' },\n 'application/octet-stream': { extension: '.bin' },\n 'application/ogg': { extension: '.ogx' },\n 'application/pdf': { extension: '.pdf', preview: 'object' },\n 'application/rtf': { extension: '.rtf', raw: true },\n 'application/vnd.amazon.ebook': { extension: '.azw' },\n 'application/vnd.apple.installer+xml': {\n extension: '.mpkg',\n raw: true,\n language: 'xml',\n },\n 'application/vnd.mozilla.xul+xml': {\n extension: '.xul',\n raw: true,\n language: 'xml',\n },\n 'application/vnd.ms-excel': { extension: '.xls' },\n 'application/vnd.ms-fontobject': { extension: '.eot' },\n 'application/vnd.ms-powerpoint': { extension: '.ppt' },\n 'application/vnd.oasis.opendocument.presentation': { extension: '.odp' },\n 'application/vnd.oasis.opendocument.spreadsheet': { extension: '.ods' },\n 'application/vnd.oasis.opendocument.text': { extension: '.odt' },\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': {\n extension: '.pptx',\n },\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {\n extension: '.xlsx',\n },\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': {\n extension: '.docx',\n },\n 'application/vnd.rar': { extension: '.rar' },\n 'application/vnd.visio': { extension: '.vsd' },\n 'application/x-7z-compressed': { extension: '.7z' },\n 'application/x-abiword': { extension: '.abw' },\n 'application/x-bzip': { extension: '.bz' },\n 'application/x-bzip2': { extension: '.bz2' },\n 'application/x-cdf': { extension: '.cda' },\n 'application/x-csh': { extension: '.csh' },\n 'application/x-freearc': { extension: '.arc' },\n 'application/x-httpd-php': { extension: '.php', raw: true },\n 'application/x-sh': { extension: '.sh', raw: true },\n 'application/x-tar': { extension: '.tar' },\n 'application/xhtml+xml': { extension: '.xhtml', raw: true, language: 'html' },\n 'application/xml': { extension: '.xml', raw: true, language: 'xml' },\n 'application/yaml': { extension: '.yaml', raw: true, language: 'yaml' },\n 'application/zip': { extension: '.zip' },\n 'audio/aac': { extension: '.aac' },\n 'audio/midi': { extension: '.midi' },\n 'audio/mpeg': { extension: '.mp3', preview: 'audio' },\n 'audio/ogg': { extension: '.oga' },\n 'audio/wav': { extension: '.wav' },\n 'audio/webm': { extension: '.weba' },\n 'font/otf': { extension: '.otf' },\n 'font/ttf': { extension: '.ttf' },\n 'font/woff': { extension: '.woff' },\n 'font/woff2': { extension: '.woff2' },\n 'image/apng': { extension: '.apng', preview: 'image', alpha: true },\n 'image/avif': { extension: '.avif', preview: 'image' },\n 'image/bmp': { extension: '.bmp', preview: 'image' },\n 'image/gif': { extension: '.gif', preview: 'image', alpha: true },\n 'image/jpeg': { extension: '.jpg', preview: 'image' },\n 'image/png': { extension: '.png', preview: 'image', alpha: true },\n 'image/svg+xml': {\n extension: '.svg',\n raw: true,\n language: 'xml',\n preview: 'image',\n alpha: true,\n },\n 'image/tiff': { extension: '.tiff' },\n 'image/vnd.microsoft.icon': { extension: '.ico', preview: 'image' },\n 'image/webp': { extension: '.webp', preview: 'image', alpha: true },\n 'text/calendar': { extension: '.ics', raw: true },\n 'text/css': { extension: '.css', raw: true, language: 'css' },\n 'text/csv': { extension: '.csv', raw: true },\n 'text/html': {\n extension: '.html',\n raw: true,\n language: 'html',\n preview: 'object',\n },\n 'text/javascript': { extension: '.js', raw: true },\n 'text/plain': { extension: '.txt', raw: true },\n 'text/xml': { extension: '.xml', raw: true, language: 'xml' },\n 'text/yaml': { extension: '.yaml', raw: true, language: 'yaml' },\n 'video/3gpp': { extension: '.3gp' },\n 'audio/3gpp': { extension: '.3gp' },\n 'video/3gpp2': { extension: '.3g2' },\n 'audio/3gpp2': { extension: '.3g2' },\n 'video/mp2t': { extension: '.ts' },\n 'video/mp4': { extension: '.mp4', preview: 'video' },\n 'video/mpeg': { extension: '.mpeg' },\n 'video/ogg': { extension: '.ogv' },\n 'video/webm': { extension: '.webm', preview: 'video' },\n 'video/x-msvideo': { extension: '.avi' },\n}\n\n/** Get the config for a media type */\nexport function getMediaTypeConfig(type: string): MediaConfig | undefined {\n const config = mediaTypes[type]\n if (config) {\n return config\n }\n\n // Fallback for +json types\n if (type.endsWith('+json')) {\n return {\n extension: '.json',\n raw: true,\n language: 'json',\n }\n }\n\n return undefined\n}\n"],"mappings":"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"}
|
package/dist/helpers.d.ts
CHANGED
|
@@ -103,6 +103,10 @@ export declare const authStorage: () => {
|
|
|
103
103
|
'x-scalar-secret-auth-url'?: string | undefined;
|
|
104
104
|
} & {
|
|
105
105
|
'x-scalar-secret-token-url'?: string | undefined;
|
|
106
|
+
} & {
|
|
107
|
+
'x-order'?: number | undefined;
|
|
108
|
+
} & {
|
|
109
|
+
'x-scalar-ignore'?: boolean | undefined;
|
|
106
110
|
} & {
|
|
107
111
|
tokenUrl: string;
|
|
108
112
|
} & {
|
|
@@ -140,6 +144,10 @@ export declare const authStorage: () => {
|
|
|
140
144
|
'x-scalar-secret-auth-url'?: string | undefined;
|
|
141
145
|
} & {
|
|
142
146
|
'x-scalar-secret-token-url'?: string | undefined;
|
|
147
|
+
} & {
|
|
148
|
+
'x-order'?: number | undefined;
|
|
149
|
+
} & {
|
|
150
|
+
'x-scalar-ignore'?: boolean | undefined;
|
|
143
151
|
} & {
|
|
144
152
|
authorizationUrl: string;
|
|
145
153
|
} & {
|
|
@@ -170,6 +178,10 @@ export declare const authStorage: () => {
|
|
|
170
178
|
'x-scalar-secret-auth-url'?: string | undefined;
|
|
171
179
|
} & {
|
|
172
180
|
'x-scalar-secret-token-url'?: string | undefined;
|
|
181
|
+
} & {
|
|
182
|
+
'x-order'?: number | undefined;
|
|
183
|
+
} & {
|
|
184
|
+
'x-scalar-ignore'?: boolean | undefined;
|
|
173
185
|
} & {
|
|
174
186
|
tokenUrl: string;
|
|
175
187
|
} & {
|
|
@@ -204,6 +216,10 @@ export declare const authStorage: () => {
|
|
|
204
216
|
'x-scalar-secret-auth-url'?: string | undefined;
|
|
205
217
|
} & {
|
|
206
218
|
'x-scalar-secret-token-url'?: string | undefined;
|
|
219
|
+
} & {
|
|
220
|
+
'x-order'?: number | undefined;
|
|
221
|
+
} & {
|
|
222
|
+
'x-scalar-ignore'?: boolean | undefined;
|
|
207
223
|
} & {
|
|
208
224
|
authorizationUrl: string;
|
|
209
225
|
tokenUrl: string;
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAWzF,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEpH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAwBD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAuBpE;AAKD;;;;GAIG;AACH,eAAO,MAAM,WAAW;IAMpB;;OAEG;oBACa,MAAM
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAWzF,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEpH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAwBD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAuBpE;AAKD;;;;GAIG;AACH,eAAO,MAAM,WAAW;IAMpB;;OAEG;oBACa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAItB;;;OAGG;oBACa,MAAM,SAAS,IAAI;CAItC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,GAAI,mCAG3C;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;CAC/B,KAAG,IAIH,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAM1C"}
|
package/dist/package.json
CHANGED
package/dist/style.css
CHANGED
|
@@ -1997,11 +1997,11 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
1997
1997
|
overflow: auto;
|
|
1998
1998
|
}
|
|
1999
1999
|
|
|
2000
|
-
.light-mode .bg-preview[data-v-
|
|
2000
|
+
.light-mode .bg-preview[data-v-a10b4008] {
|
|
2001
2001
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23000' fill-opacity='10%25'%3E%3Crect width='8' height='8' /%3E%3Crect x='8' y='8' width='8' height='8' /%3E%3C/svg%3E");
|
|
2002
2002
|
}
|
|
2003
2003
|
|
|
2004
|
-
.dark-mode .bg-preview[data-v-
|
|
2004
|
+
.dark-mode .bg-preview[data-v-a10b4008] {
|
|
2005
2005
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23FFF' fill-opacity='10%25'%3E%3Crect width='8' height='8' /%3E%3Crect x='8' y='8' width='8' height='8' /%3E%3C/svg%3E");
|
|
2006
2006
|
}
|
|
2007
2007
|
|
|
@@ -5306,7 +5306,7 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5306
5306
|
width: 20px;
|
|
5307
5307
|
}
|
|
5308
5308
|
|
|
5309
|
-
.actionContainer[data-v-
|
|
5309
|
+
.actionContainer[data-v-ba1161a7] {
|
|
5310
5310
|
background: color-mix(
|
|
5311
5311
|
in srgb,
|
|
5312
5312
|
var(--scalar-background-2),
|
|
@@ -5319,7 +5319,7 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5319
5319
|
/* visually hides overflowing text below */
|
|
5320
5320
|
box-shadow: 0 24px 0 2px var(--scalar-background-1);
|
|
5321
5321
|
}
|
|
5322
|
-
.promptForm[data-v-
|
|
5322
|
+
.promptForm[data-v-ba1161a7] {
|
|
5323
5323
|
width: 100%;
|
|
5324
5324
|
position: relative;
|
|
5325
5325
|
display: flex;
|
|
@@ -5330,23 +5330,23 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5330
5330
|
0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
5331
5331
|
border-radius: var(--scalar-radius-3xl);
|
|
5332
5332
|
}
|
|
5333
|
-
.inputActionsContainer[data-v-
|
|
5333
|
+
.inputActionsContainer[data-v-ba1161a7] {
|
|
5334
5334
|
display: flex;
|
|
5335
5335
|
justify-content: space-between;
|
|
5336
5336
|
padding: 0 8px 8px 8px;
|
|
5337
5337
|
}
|
|
5338
|
-
.inputActionsLeft[data-v-
|
|
5338
|
+
.inputActionsLeft[data-v-ba1161a7] {
|
|
5339
5339
|
display: flex;
|
|
5340
5340
|
flex-wrap: wrap; /* key: allows pills to go to next line */
|
|
5341
5341
|
align-items: center;
|
|
5342
5342
|
gap: 5px; /* spacing between pills */
|
|
5343
5343
|
}
|
|
5344
|
-
.inputActionsRight[data-v-
|
|
5344
|
+
.inputActionsRight[data-v-ba1161a7] {
|
|
5345
5345
|
display: flex;
|
|
5346
5346
|
gap: 5px;
|
|
5347
5347
|
position: relative;
|
|
5348
5348
|
}
|
|
5349
|
-
.apiPill[data-v-
|
|
5349
|
+
.apiPill[data-v-ba1161a7] {
|
|
5350
5350
|
font-size: var(--scalar-font-size-3);
|
|
5351
5351
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
5352
5352
|
color: var(--scalar-color-2);
|
|
@@ -5361,10 +5361,10 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5361
5361
|
gap: 4px;
|
|
5362
5362
|
user-select: none;
|
|
5363
5363
|
}
|
|
5364
|
-
.apiPillLogo[data-v-
|
|
5364
|
+
.apiPillLogo[data-v-ba1161a7] {
|
|
5365
5365
|
width: 15px;
|
|
5366
5366
|
}
|
|
5367
|
-
.apiPillRemove[data-v-
|
|
5367
|
+
.apiPillRemove[data-v-ba1161a7] {
|
|
5368
5368
|
width: 24px;
|
|
5369
5369
|
height: 24px;
|
|
5370
5370
|
margin-right: -6px;
|
|
@@ -5373,16 +5373,16 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5373
5373
|
align-items: center;
|
|
5374
5374
|
justify-content: center;
|
|
5375
5375
|
}
|
|
5376
|
-
.apiPill:hover .apiPillRemove[data-v-
|
|
5376
|
+
.apiPill:hover .apiPillRemove[data-v-ba1161a7] {
|
|
5377
5377
|
background: var(--scalar-background-2);
|
|
5378
5378
|
}
|
|
5379
|
-
.dark-mode .apiPill:hover .apiPillRemove[data-v-
|
|
5379
|
+
.dark-mode .apiPill:hover .apiPillRemove[data-v-ba1161a7] {
|
|
5380
5380
|
background: var(--scalar-background-3);
|
|
5381
5381
|
}
|
|
5382
|
-
.apiPillRemove[data-v-
|
|
5382
|
+
.apiPillRemove[data-v-ba1161a7]:hover {
|
|
5383
5383
|
color: var(--scalar-color-1);
|
|
5384
5384
|
}
|
|
5385
|
-
.prompt[data-v-
|
|
5385
|
+
.prompt[data-v-ba1161a7] {
|
|
5386
5386
|
width: 100%;
|
|
5387
5387
|
outline: none;
|
|
5388
5388
|
border: none;
|
|
@@ -5399,13 +5399,13 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5399
5399
|
font-size: 16px;
|
|
5400
5400
|
padding: 12px 12px 14px 12px;
|
|
5401
5401
|
}
|
|
5402
|
-
.dark-mode .promptForm[data-v-
|
|
5402
|
+
.dark-mode .promptForm[data-v-ba1161a7] {
|
|
5403
5403
|
background: var(--scalar-background-2);
|
|
5404
5404
|
}
|
|
5405
|
-
.prompt[data-v-
|
|
5405
|
+
.prompt[data-v-ba1161a7]:disabled {
|
|
5406
5406
|
color: var(--scalar-color-3);
|
|
5407
5407
|
}
|
|
5408
|
-
.addAPIButton[data-v-
|
|
5408
|
+
.addAPIButton[data-v-ba1161a7] {
|
|
5409
5409
|
display: flex;
|
|
5410
5410
|
align-items: center;
|
|
5411
5411
|
justify-content: center;
|
|
@@ -5422,7 +5422,7 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5422
5422
|
z-index: 1;
|
|
5423
5423
|
box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
5424
5424
|
}
|
|
5425
|
-
.addAPIButton[data-v-
|
|
5425
|
+
.addAPIButton[data-v-ba1161a7]:hover {
|
|
5426
5426
|
background: color-mix(
|
|
5427
5427
|
in srgb,
|
|
5428
5428
|
var(--scalar-background-2),
|
|
@@ -5430,47 +5430,47 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5430
5430
|
);
|
|
5431
5431
|
box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
5432
5432
|
}
|
|
5433
|
-
.dark-mode .addAPIButton[data-v-
|
|
5433
|
+
.dark-mode .addAPIButton[data-v-ba1161a7]:hover {
|
|
5434
5434
|
background: var(--scalar-background-3);
|
|
5435
5435
|
}
|
|
5436
|
-
.settingsButton[data-v-
|
|
5436
|
+
.settingsButton[data-v-ba1161a7] {
|
|
5437
5437
|
color: var(--scalar-color-3) !important;
|
|
5438
5438
|
border-radius: var(--scalar-radius-full) !important;
|
|
5439
5439
|
margin: 0 !important;
|
|
5440
5440
|
z-index: 1;
|
|
5441
5441
|
}
|
|
5442
|
-
.settingsButton[aria-disabled='true'][data-v-
|
|
5442
|
+
.settingsButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
5443
5443
|
background: var(--scalar-background-2);
|
|
5444
5444
|
}
|
|
5445
|
-
.dark-mode .settingsButton[data-v-
|
|
5445
|
+
.dark-mode .settingsButton[data-v-ba1161a7]:hover {
|
|
5446
5446
|
background: var(--scalar-background-3);
|
|
5447
5447
|
}
|
|
5448
|
-
.sendButton[data-v-
|
|
5448
|
+
.sendButton[data-v-ba1161a7] {
|
|
5449
5449
|
background: var(--scalar-color-blue) !important;
|
|
5450
5450
|
border-radius: var(--scalar-radius-full) !important;
|
|
5451
5451
|
margin: 0 !important;
|
|
5452
5452
|
z-index: 1;
|
|
5453
5453
|
border: var(--scalar-border-width) solid var(--scalar-color-blue);
|
|
5454
5454
|
}
|
|
5455
|
-
.sendButton[data-v-
|
|
5455
|
+
.sendButton[data-v-ba1161a7]:not([aria-disabled='true']) {
|
|
5456
5456
|
color: white !important;
|
|
5457
5457
|
}
|
|
5458
|
-
.sendButton[data-v-
|
|
5458
|
+
.sendButton[data-v-ba1161a7]:not([aria-disabled='true']):hover {
|
|
5459
5459
|
background: color-mix(
|
|
5460
5460
|
in srgb,
|
|
5461
5461
|
var(--scalar-color-blue),
|
|
5462
5462
|
transparent 10%
|
|
5463
5463
|
) !important;
|
|
5464
5464
|
}
|
|
5465
|
-
.sendButton[aria-disabled='true'][data-v-
|
|
5465
|
+
.sendButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
5466
5466
|
background: var(--scalar-background-2) !important;
|
|
5467
5467
|
color: var(--scalar-color-3) !important;
|
|
5468
5468
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
5469
5469
|
}
|
|
5470
|
-
.dark-mode .sendButton[aria-disabled='true'][data-v-
|
|
5470
|
+
.dark-mode .sendButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
5471
5471
|
background: var(--scalar-background-3) !important;
|
|
5472
5472
|
}
|
|
5473
|
-
.contextContainer[data-v-
|
|
5473
|
+
.contextContainer[data-v-ba1161a7] {
|
|
5474
5474
|
display: flex;
|
|
5475
5475
|
width: 100%;
|
|
5476
5476
|
padding: 10px 12px 12px 12px;
|
|
@@ -5479,25 +5479,25 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5479
5479
|
user-select: none;
|
|
5480
5480
|
justify-content: space-between;
|
|
5481
5481
|
}
|
|
5482
|
-
.settingsButton[data-v-
|
|
5482
|
+
.settingsButton[data-v-ba1161a7] {
|
|
5483
5483
|
font-weight: var(--scalar-semibold);
|
|
5484
5484
|
border-radius: var(--scalar-radius-lg);
|
|
5485
5485
|
padding: 4px 6px;
|
|
5486
5486
|
margin: -4px -6px;
|
|
5487
5487
|
}
|
|
5488
|
-
.settingsButton[data-v-
|
|
5488
|
+
.settingsButton[data-v-ba1161a7]:hover {
|
|
5489
5489
|
background: var(--scalar-background-2);
|
|
5490
5490
|
box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);
|
|
5491
5491
|
cursor: pointer;
|
|
5492
5492
|
}
|
|
5493
|
-
.agentLabel[data-v-
|
|
5493
|
+
.agentLabel[data-v-ba1161a7] {
|
|
5494
5494
|
font-size: 0px;
|
|
5495
5495
|
position: absolute;
|
|
5496
5496
|
width: 100%;
|
|
5497
5497
|
height: 100%;
|
|
5498
5498
|
cursor: text;
|
|
5499
5499
|
}
|
|
5500
|
-
.sendCheckboxContinue[data-v-
|
|
5500
|
+
.sendCheckboxContinue[data-v-ba1161a7]:has(input) {
|
|
5501
5501
|
display: flex;
|
|
5502
5502
|
align-items: center;
|
|
5503
5503
|
border-radius: var(--scalar-radius-3xl);
|
|
@@ -5509,11 +5509,11 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5509
5509
|
user-select: none;
|
|
5510
5510
|
height: 28px;
|
|
5511
5511
|
}
|
|
5512
|
-
.dark-mode .sendCheckboxContinue[data-v-
|
|
5512
|
+
.dark-mode .sendCheckboxContinue[data-v-ba1161a7]:has(input) {
|
|
5513
5513
|
background: var(--scalar-background-3);
|
|
5514
5514
|
box-shadow: 0 0 0 1.5px var(--scalar-background-3);
|
|
5515
5515
|
}
|
|
5516
|
-
.addMoreContext[data-v-
|
|
5516
|
+
.addMoreContext[data-v-ba1161a7] {
|
|
5517
5517
|
height: 40px;
|
|
5518
5518
|
display: flex;
|
|
5519
5519
|
position: relative;
|
|
@@ -5522,7 +5522,7 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5522
5522
|
padding: 0 8px 0 12px;
|
|
5523
5523
|
align-items: center;
|
|
5524
5524
|
}
|
|
5525
|
-
.addMoreContext[data-v-
|
|
5525
|
+
.addMoreContext[data-v-ba1161a7]:before {
|
|
5526
5526
|
content: '';
|
|
5527
5527
|
width: 8px;
|
|
5528
5528
|
height: 8px;
|
|
@@ -5539,10 +5539,10 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5539
5539
|
-0.5px -0.5px 0 var(--scalar-border-color),
|
|
5540
5540
|
inset 0.5px 0.5px 1px var(--scalar-border-color);
|
|
5541
5541
|
}
|
|
5542
|
-
.dark-mode .addMoreContext[data-v-
|
|
5542
|
+
.dark-mode .addMoreContext[data-v-ba1161a7]:before {
|
|
5543
5543
|
box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);
|
|
5544
5544
|
}
|
|
5545
|
-
.addAPIContext[data-v-
|
|
5545
|
+
.addAPIContext[data-v-ba1161a7] {
|
|
5546
5546
|
width: 28px;
|
|
5547
5547
|
height: 28px;
|
|
5548
5548
|
border-radius: var(--scalar-radius-full);
|
|
@@ -5551,7 +5551,7 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5551
5551
|
justify-content: center;
|
|
5552
5552
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
5553
5553
|
}
|
|
5554
|
-
.termsAgree[data-v-
|
|
5554
|
+
.termsAgree[data-v-ba1161a7] {
|
|
5555
5555
|
display: flex;
|
|
5556
5556
|
cursor: pointer;
|
|
5557
5557
|
height: inherit;
|
|
@@ -5560,14 +5560,14 @@ input[data-v-a6f4752a]::placeholder {
|
|
|
5560
5560
|
gap: 5px;
|
|
5561
5561
|
margin: 0px 5px;
|
|
5562
5562
|
}
|
|
5563
|
-
.termsAgree[data-v-
|
|
5563
|
+
.termsAgree[data-v-ba1161a7]:hover {
|
|
5564
5564
|
color: var(--scalar-color-1);
|
|
5565
5565
|
}
|
|
5566
|
-
.termsAgree:hover .termsAgreeIcon[data-v-
|
|
5566
|
+
.termsAgree:hover .termsAgreeIcon[data-v-ba1161a7] {
|
|
5567
5567
|
background: var(--scalar-color-1);
|
|
5568
5568
|
color: var(--scalar-background-1);
|
|
5569
5569
|
}
|
|
5570
|
-
.termsAgreeIcon[data-v-
|
|
5570
|
+
.termsAgreeIcon[data-v-ba1161a7] {
|
|
5571
5571
|
width: inherit;
|
|
5572
5572
|
height: inherit;
|
|
5573
5573
|
padding: 2px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptForm.vue.d.ts","sourceRoot":"","sources":["../../src/views/PromptForm.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PromptForm.vue.d.ts","sourceRoot":"","sources":["../../src/views/PromptForm.vue"],"names":[],"mappings":"AA6qBA,iBAAS,WAAW,SAEnB;AAgkBD,QAAA,MAAM,YAAY;;;;;;;;iFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
|
|
|
2
2
|
import PromptForm_vue_vue_type_script_setup_true_lang_default from "./PromptForm.vue.script.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/views/PromptForm.vue
|
|
5
|
-
var PromptForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(PromptForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
5
|
+
var PromptForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(PromptForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ba1161a7"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { PromptForm_default as default };
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptForm.vue.js","names":[],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"PromptForm.vue.js","names":[],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n // Ignore the Enter that only commits an IME composition (e.g. Japanese, Chinese,\n // Korean). On macOS Chrome that keydown still reports key === 'Enter' with\n // isComposing === true, so without this guard the message sends mid-composition.\n if (e.isComposing) {\n return\n }\n\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":""}
|
|
@@ -71,6 +71,7 @@ var PromptForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
71
71
|
promptRef.value.style.height = promptRef.value.scrollHeight + "px";
|
|
72
72
|
});
|
|
73
73
|
function handlePromptKeydown(e) {
|
|
74
|
+
if (e.isComposing) return;
|
|
74
75
|
if (state.loading.value) return;
|
|
75
76
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
76
77
|
e.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptForm.vue.script.js","names":["$emit"],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PromptForm.vue.script.js","names":["$emit"],"sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconButton } from '@scalar/components/icon-button'\nimport { ScalarLoading } from '@scalar/components/loading'\nimport { ScalarTooltip } from '@scalar/components/tooltip'\nimport {\n ScalarIconArrowUp,\n ScalarIconCheck,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport ActionsDropdown from '@/components/ActionsDropdown.vue'\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport FreeMessagesInfoSection from '@/components/FreeMessagesInfoSection.vue'\nimport PaymentSection from '@/components/PaymentSection.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport UploadSection from '@/components/UploadSection.vue'\nimport { AgentErrorCodes } from '@/entities/error/constants'\nimport { MAX_PROMPT_SIZE } from '@/entities/prompt/constants'\nimport { useRequestApprovals } from '@/hooks/use-chat-approvals'\nimport { useChatError } from '@/hooks/use-chat-error'\nimport { useChatPendingClientToolParts } from '@/hooks/use-chat-pending-client-tool-parts'\nimport { useUploadTmpDocument } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('agentPrompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\n/** Show free messages info only after at least one message has been sent and when no API key is set. */\nconst showFreeMessagesInfo = computed(\n () =>\n state.chat.messages.length > 1 &&\n !state.getAgentKey?.() &&\n chatError?.value?.code !== AgentErrorCodes.LIMIT_REACHED,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) {\n return\n }\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n // Ignore the Enter that only commits an IME composition (e.g. Japanese, Chinese,\n // Korean). On macOS Chrome that keydown still reports key === 'Enter' with\n // isComposing === true, so without this guard the message sends mid-composition.\n if (e.isComposing) {\n return\n }\n\n if (state.loading.value) {\n return\n }\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') {\n promptRef.value?.focus()\n }\n },\n)\n\nconst { approvalRequiredParts, respondToRequestApprovals } =\n useRequestApprovals()\n\nconst { pendingClientToolParts } = useChatPendingClientToolParts()\n\nconst uploadTmpDoc = useUploadTmpDocument()\n\nfunction acceptTerms() {\n state.terms.accept()\n\n if (state.mode === 'preview' && state.getActiveDocumentJson) {\n uploadTmpDoc.uploadTempDocument(state.getActiveDocumentJson(), true)\n }\n}\n\nconst isPending = computed(() =>\n Object.values(state.pendingDocuments).some(Boolean),\n)\n\nconst submitDisabled = computed(() => {\n const tooLarge = promptTooLarge.value\n const missingInput = !inputHasContent.value\n const awaitingApproval = approvalRequiredParts.value.length > 0\n const pendingToolParts = pendingClientToolParts.value.length > 0\n\n const isPreview = state.mode === 'preview'\n\n const termsNotAccepted = isPreview && !state.terms.accepted.value\n const uploadingTmpDoc = isPreview && !!uploadTmpDoc.uploadState.value\n const isLoading = isPending.value\n\n return (\n tooLarge ||\n missingInput ||\n awaitingApproval ||\n pendingToolParts ||\n termsNotAccepted ||\n uploadingTmpDoc ||\n isLoading\n )\n})\n\nfunction handleSubmit() {\n if (submitDisabled.value) {\n return\n }\n\n emit('submit')\n}\n\nconst chatError = useChatError()\n</script>\n\n<template>\n <div class=\"actionContainer\">\n <UploadSection\n v-if=\"uploadTmpDoc.uploadState.value || isPending\"\n :uploadState=\"uploadTmpDoc.uploadState.value ?? { type: 'loading' }\" />\n <ErrorMessageMessage\n v-if=\"chatError\"\n :error=\"chatError\" />\n <ApprovalSection\n v-if=\"approvalRequiredParts.length\"\n @approve=\"respondToRequestApprovals(true)\"\n @reject=\"respondToRequestApprovals(false)\" />\n <PaymentSection v-if=\"chatError?.code === AgentErrorCodes.LIMIT_REACHED\" />\n <FreeMessagesInfoSection v-if=\"showFreeMessagesInfo\" />\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"agentPrompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything…\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <template v-if=\"!state.hideAddApi\">\n <SearchPopover v-if=\"!state.isLoggedIn?.value\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <ActionsDropdown\n v-else\n @uploadApi=\"$emit('uploadApi')\">\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </ActionsDropdown>\n </template>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n v-if=\"document.removable\"\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <template v-if=\"!state.loading.value\">\n <ScalarTooltip content=\"Settings\">\n <ScalarIconButton\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n </ScalarTooltip>\n </template>\n <div class=\"sendCheckboxContinue\">\n <div\n v-if=\"!state.terms.accepted.value && state.mode === 'preview'\"\n class=\"relative flex items-center gap-1.5\">\n <input\n id=\"agentTermsAgree\"\n class=\"sr-only\"\n type=\"checkbox\"\n @change=\"acceptTerms\" />\n <label\n class=\"termsAgree\"\n for=\"agentTermsAgree\">\n <ScalarIconCheck\n class=\"termsAgreeIcon\"\n weight=\"bold\" />\n Agree to Terms & Conditions\n </label>\n </div>\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"submitDisabled\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </div>\n </form>\n\n <div\n v-if=\"state.chat.messages.length <= 1 && !state.hideAddApi\"\n class=\"addMoreContext\">\n <span>Load additional APIs</span>\n <div class=\"ml-auto flex items-center gap-1\">\n <button\n v-for=\"doc of state.curatedDocuments.value\"\n :key=\"doc.id\"\n class=\"addAPIContext\"\n type=\"button\"\n @click=\"state.addDocument(doc)\">\n <img\n v-if=\"doc.logoUrl\"\n :alt=\"doc.title\"\n class=\"size-4\"\n :src=\"doc.logoUrl\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n width: 100%;\n position: relative;\n /* visually hides overflowing text below */\n box-shadow: 0 24px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow:\n var(--scalar-shadow-1),\n 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl);\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n position: relative;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: var(--scalar-radius-3xl);\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n user-select: none;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-color-blue) !important;\n border-radius: var(--scalar-radius-full) !important;\n margin: 0 !important;\n z-index: 1;\n border: var(--scalar-border-width) solid var(--scalar-color-blue);\n}\n.sendButton:not([aria-disabled='true']) {\n color: white !important;\n}\n.sendButton:not([aria-disabled='true']):hover {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 10%\n ) !important;\n}\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3) !important;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n.sendCheckboxContinue:has(input) {\n display: flex;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n box-shadow: 0 0 0 1.5px var(--scalar-background-2);\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n font-weight: var(--scalar-semibold);\n user-select: none;\n height: 28px;\n}\n.dark-mode .sendCheckboxContinue:has(input) {\n background: var(--scalar-background-3);\n box-shadow: 0 0 0 1.5px var(--scalar-background-3);\n}\n\n.addMoreContext {\n height: 40px;\n display: flex;\n position: relative;\n font-size: var(--scalar-font-size-3);\n color: var(--scalar-color-3);\n padding: 0 8px 0 12px;\n align-items: center;\n}\n.addMoreContext:before {\n content: '';\n width: 8px;\n height: 8px;\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n transform: rotate(45deg);\n left: 18px;\n top: -3px;\n position: absolute;\n box-shadow:\n -0.5px -0.5px 0 var(--scalar-border-color),\n inset 0.5px 0.5px 1px var(--scalar-border-color);\n}\n.dark-mode .addMoreContext:before {\n box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);\n}\n.addAPIContext {\n width: 28px;\n height: 28px;\n border-radius: var(--scalar-radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.termsAgree {\n display: flex;\n cursor: pointer;\n height: inherit;\n align-items: center;\n border-radius: var(--scalar-radius-3xl);\n gap: 5px;\n margin: 0px 5px;\n}\n\n.termsAgree:hover {\n color: var(--scalar-color-1);\n}\n\n.termsAgree:hover .termsAgreeIcon {\n background: var(--scalar-color-1);\n color: var(--scalar-background-1);\n}\n\n.termsAgreeIcon {\n width: inherit;\n height: inherit;\n padding: 2px;\n border-radius: var(--scalar-radius-full);\n background: var(--scalar-background-2);\n}\n</style>\n"],"mappings":"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"}
|
package/dist/vue-styles.css
CHANGED
|
@@ -910,7 +910,7 @@
|
|
|
910
910
|
width: 20px;
|
|
911
911
|
}
|
|
912
912
|
|
|
913
|
-
.actionContainer[data-v-
|
|
913
|
+
.actionContainer[data-v-ba1161a7] {
|
|
914
914
|
background: color-mix(
|
|
915
915
|
in srgb,
|
|
916
916
|
var(--scalar-background-2),
|
|
@@ -923,7 +923,7 @@
|
|
|
923
923
|
/* visually hides overflowing text below */
|
|
924
924
|
box-shadow: 0 24px 0 2px var(--scalar-background-1);
|
|
925
925
|
}
|
|
926
|
-
.promptForm[data-v-
|
|
926
|
+
.promptForm[data-v-ba1161a7] {
|
|
927
927
|
width: 100%;
|
|
928
928
|
position: relative;
|
|
929
929
|
display: flex;
|
|
@@ -934,23 +934,23 @@
|
|
|
934
934
|
0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
935
935
|
border-radius: var(--scalar-radius-3xl);
|
|
936
936
|
}
|
|
937
|
-
.inputActionsContainer[data-v-
|
|
937
|
+
.inputActionsContainer[data-v-ba1161a7] {
|
|
938
938
|
display: flex;
|
|
939
939
|
justify-content: space-between;
|
|
940
940
|
padding: 0 8px 8px 8px;
|
|
941
941
|
}
|
|
942
|
-
.inputActionsLeft[data-v-
|
|
942
|
+
.inputActionsLeft[data-v-ba1161a7] {
|
|
943
943
|
display: flex;
|
|
944
944
|
flex-wrap: wrap; /* key: allows pills to go to next line */
|
|
945
945
|
align-items: center;
|
|
946
946
|
gap: 5px; /* spacing between pills */
|
|
947
947
|
}
|
|
948
|
-
.inputActionsRight[data-v-
|
|
948
|
+
.inputActionsRight[data-v-ba1161a7] {
|
|
949
949
|
display: flex;
|
|
950
950
|
gap: 5px;
|
|
951
951
|
position: relative;
|
|
952
952
|
}
|
|
953
|
-
.apiPill[data-v-
|
|
953
|
+
.apiPill[data-v-ba1161a7] {
|
|
954
954
|
font-size: var(--scalar-font-size-3);
|
|
955
955
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
956
956
|
color: var(--scalar-color-2);
|
|
@@ -965,10 +965,10 @@
|
|
|
965
965
|
gap: 4px;
|
|
966
966
|
user-select: none;
|
|
967
967
|
}
|
|
968
|
-
.apiPillLogo[data-v-
|
|
968
|
+
.apiPillLogo[data-v-ba1161a7] {
|
|
969
969
|
width: 15px;
|
|
970
970
|
}
|
|
971
|
-
.apiPillRemove[data-v-
|
|
971
|
+
.apiPillRemove[data-v-ba1161a7] {
|
|
972
972
|
width: 24px;
|
|
973
973
|
height: 24px;
|
|
974
974
|
margin-right: -6px;
|
|
@@ -977,16 +977,16 @@
|
|
|
977
977
|
align-items: center;
|
|
978
978
|
justify-content: center;
|
|
979
979
|
}
|
|
980
|
-
.apiPill:hover .apiPillRemove[data-v-
|
|
980
|
+
.apiPill:hover .apiPillRemove[data-v-ba1161a7] {
|
|
981
981
|
background: var(--scalar-background-2);
|
|
982
982
|
}
|
|
983
|
-
.dark-mode .apiPill:hover .apiPillRemove[data-v-
|
|
983
|
+
.dark-mode .apiPill:hover .apiPillRemove[data-v-ba1161a7] {
|
|
984
984
|
background: var(--scalar-background-3);
|
|
985
985
|
}
|
|
986
|
-
.apiPillRemove[data-v-
|
|
986
|
+
.apiPillRemove[data-v-ba1161a7]:hover {
|
|
987
987
|
color: var(--scalar-color-1);
|
|
988
988
|
}
|
|
989
|
-
.prompt[data-v-
|
|
989
|
+
.prompt[data-v-ba1161a7] {
|
|
990
990
|
width: 100%;
|
|
991
991
|
outline: none;
|
|
992
992
|
border: none;
|
|
@@ -1003,13 +1003,13 @@
|
|
|
1003
1003
|
font-size: 16px;
|
|
1004
1004
|
padding: 12px 12px 14px 12px;
|
|
1005
1005
|
}
|
|
1006
|
-
.dark-mode .promptForm[data-v-
|
|
1006
|
+
.dark-mode .promptForm[data-v-ba1161a7] {
|
|
1007
1007
|
background: var(--scalar-background-2);
|
|
1008
1008
|
}
|
|
1009
|
-
.prompt[data-v-
|
|
1009
|
+
.prompt[data-v-ba1161a7]:disabled {
|
|
1010
1010
|
color: var(--scalar-color-3);
|
|
1011
1011
|
}
|
|
1012
|
-
.addAPIButton[data-v-
|
|
1012
|
+
.addAPIButton[data-v-ba1161a7] {
|
|
1013
1013
|
display: flex;
|
|
1014
1014
|
align-items: center;
|
|
1015
1015
|
justify-content: center;
|
|
@@ -1026,7 +1026,7 @@
|
|
|
1026
1026
|
z-index: 1;
|
|
1027
1027
|
box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
1028
1028
|
}
|
|
1029
|
-
.addAPIButton[data-v-
|
|
1029
|
+
.addAPIButton[data-v-ba1161a7]:hover {
|
|
1030
1030
|
background: color-mix(
|
|
1031
1031
|
in srgb,
|
|
1032
1032
|
var(--scalar-background-2),
|
|
@@ -1034,47 +1034,47 @@
|
|
|
1034
1034
|
);
|
|
1035
1035
|
box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);
|
|
1036
1036
|
}
|
|
1037
|
-
.dark-mode .addAPIButton[data-v-
|
|
1037
|
+
.dark-mode .addAPIButton[data-v-ba1161a7]:hover {
|
|
1038
1038
|
background: var(--scalar-background-3);
|
|
1039
1039
|
}
|
|
1040
|
-
.settingsButton[data-v-
|
|
1040
|
+
.settingsButton[data-v-ba1161a7] {
|
|
1041
1041
|
color: var(--scalar-color-3) !important;
|
|
1042
1042
|
border-radius: var(--scalar-radius-full) !important;
|
|
1043
1043
|
margin: 0 !important;
|
|
1044
1044
|
z-index: 1;
|
|
1045
1045
|
}
|
|
1046
|
-
.settingsButton[aria-disabled='true'][data-v-
|
|
1046
|
+
.settingsButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
1047
1047
|
background: var(--scalar-background-2);
|
|
1048
1048
|
}
|
|
1049
|
-
.dark-mode .settingsButton[data-v-
|
|
1049
|
+
.dark-mode .settingsButton[data-v-ba1161a7]:hover {
|
|
1050
1050
|
background: var(--scalar-background-3);
|
|
1051
1051
|
}
|
|
1052
|
-
.sendButton[data-v-
|
|
1052
|
+
.sendButton[data-v-ba1161a7] {
|
|
1053
1053
|
background: var(--scalar-color-blue) !important;
|
|
1054
1054
|
border-radius: var(--scalar-radius-full) !important;
|
|
1055
1055
|
margin: 0 !important;
|
|
1056
1056
|
z-index: 1;
|
|
1057
1057
|
border: var(--scalar-border-width) solid var(--scalar-color-blue);
|
|
1058
1058
|
}
|
|
1059
|
-
.sendButton[data-v-
|
|
1059
|
+
.sendButton[data-v-ba1161a7]:not([aria-disabled='true']) {
|
|
1060
1060
|
color: white !important;
|
|
1061
1061
|
}
|
|
1062
|
-
.sendButton[data-v-
|
|
1062
|
+
.sendButton[data-v-ba1161a7]:not([aria-disabled='true']):hover {
|
|
1063
1063
|
background: color-mix(
|
|
1064
1064
|
in srgb,
|
|
1065
1065
|
var(--scalar-color-blue),
|
|
1066
1066
|
transparent 10%
|
|
1067
1067
|
) !important;
|
|
1068
1068
|
}
|
|
1069
|
-
.sendButton[aria-disabled='true'][data-v-
|
|
1069
|
+
.sendButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
1070
1070
|
background: var(--scalar-background-2) !important;
|
|
1071
1071
|
color: var(--scalar-color-3) !important;
|
|
1072
1072
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
1073
1073
|
}
|
|
1074
|
-
.dark-mode .sendButton[aria-disabled='true'][data-v-
|
|
1074
|
+
.dark-mode .sendButton[aria-disabled='true'][data-v-ba1161a7] {
|
|
1075
1075
|
background: var(--scalar-background-3) !important;
|
|
1076
1076
|
}
|
|
1077
|
-
.contextContainer[data-v-
|
|
1077
|
+
.contextContainer[data-v-ba1161a7] {
|
|
1078
1078
|
display: flex;
|
|
1079
1079
|
width: 100%;
|
|
1080
1080
|
padding: 10px 12px 12px 12px;
|
|
@@ -1083,25 +1083,25 @@
|
|
|
1083
1083
|
user-select: none;
|
|
1084
1084
|
justify-content: space-between;
|
|
1085
1085
|
}
|
|
1086
|
-
.settingsButton[data-v-
|
|
1086
|
+
.settingsButton[data-v-ba1161a7] {
|
|
1087
1087
|
font-weight: var(--scalar-semibold);
|
|
1088
1088
|
border-radius: var(--scalar-radius-lg);
|
|
1089
1089
|
padding: 4px 6px;
|
|
1090
1090
|
margin: -4px -6px;
|
|
1091
1091
|
}
|
|
1092
|
-
.settingsButton[data-v-
|
|
1092
|
+
.settingsButton[data-v-ba1161a7]:hover {
|
|
1093
1093
|
background: var(--scalar-background-2);
|
|
1094
1094
|
box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);
|
|
1095
1095
|
cursor: pointer;
|
|
1096
1096
|
}
|
|
1097
|
-
.agentLabel[data-v-
|
|
1097
|
+
.agentLabel[data-v-ba1161a7] {
|
|
1098
1098
|
font-size: 0px;
|
|
1099
1099
|
position: absolute;
|
|
1100
1100
|
width: 100%;
|
|
1101
1101
|
height: 100%;
|
|
1102
1102
|
cursor: text;
|
|
1103
1103
|
}
|
|
1104
|
-
.sendCheckboxContinue[data-v-
|
|
1104
|
+
.sendCheckboxContinue[data-v-ba1161a7]:has(input) {
|
|
1105
1105
|
display: flex;
|
|
1106
1106
|
align-items: center;
|
|
1107
1107
|
border-radius: var(--scalar-radius-3xl);
|
|
@@ -1113,11 +1113,11 @@
|
|
|
1113
1113
|
user-select: none;
|
|
1114
1114
|
height: 28px;
|
|
1115
1115
|
}
|
|
1116
|
-
.dark-mode .sendCheckboxContinue[data-v-
|
|
1116
|
+
.dark-mode .sendCheckboxContinue[data-v-ba1161a7]:has(input) {
|
|
1117
1117
|
background: var(--scalar-background-3);
|
|
1118
1118
|
box-shadow: 0 0 0 1.5px var(--scalar-background-3);
|
|
1119
1119
|
}
|
|
1120
|
-
.addMoreContext[data-v-
|
|
1120
|
+
.addMoreContext[data-v-ba1161a7] {
|
|
1121
1121
|
height: 40px;
|
|
1122
1122
|
display: flex;
|
|
1123
1123
|
position: relative;
|
|
@@ -1126,7 +1126,7 @@
|
|
|
1126
1126
|
padding: 0 8px 0 12px;
|
|
1127
1127
|
align-items: center;
|
|
1128
1128
|
}
|
|
1129
|
-
.addMoreContext[data-v-
|
|
1129
|
+
.addMoreContext[data-v-ba1161a7]:before {
|
|
1130
1130
|
content: '';
|
|
1131
1131
|
width: 8px;
|
|
1132
1132
|
height: 8px;
|
|
@@ -1143,10 +1143,10 @@
|
|
|
1143
1143
|
-0.5px -0.5px 0 var(--scalar-border-color),
|
|
1144
1144
|
inset 0.5px 0.5px 1px var(--scalar-border-color);
|
|
1145
1145
|
}
|
|
1146
|
-
.dark-mode .addMoreContext[data-v-
|
|
1146
|
+
.dark-mode .addMoreContext[data-v-ba1161a7]:before {
|
|
1147
1147
|
box-shadow: -0.5px -0.5px 0 var(--scalar-border-color);
|
|
1148
1148
|
}
|
|
1149
|
-
.addAPIContext[data-v-
|
|
1149
|
+
.addAPIContext[data-v-ba1161a7] {
|
|
1150
1150
|
width: 28px;
|
|
1151
1151
|
height: 28px;
|
|
1152
1152
|
border-radius: var(--scalar-radius-full);
|
|
@@ -1155,7 +1155,7 @@
|
|
|
1155
1155
|
justify-content: center;
|
|
1156
1156
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
1157
1157
|
}
|
|
1158
|
-
.termsAgree[data-v-
|
|
1158
|
+
.termsAgree[data-v-ba1161a7] {
|
|
1159
1159
|
display: flex;
|
|
1160
1160
|
cursor: pointer;
|
|
1161
1161
|
height: inherit;
|
|
@@ -1164,14 +1164,14 @@
|
|
|
1164
1164
|
gap: 5px;
|
|
1165
1165
|
margin: 0px 5px;
|
|
1166
1166
|
}
|
|
1167
|
-
.termsAgree[data-v-
|
|
1167
|
+
.termsAgree[data-v-ba1161a7]:hover {
|
|
1168
1168
|
color: var(--scalar-color-1);
|
|
1169
1169
|
}
|
|
1170
|
-
.termsAgree:hover .termsAgreeIcon[data-v-
|
|
1170
|
+
.termsAgree:hover .termsAgreeIcon[data-v-ba1161a7] {
|
|
1171
1171
|
background: var(--scalar-color-1);
|
|
1172
1172
|
color: var(--scalar-background-1);
|
|
1173
1173
|
}
|
|
1174
|
-
.termsAgreeIcon[data-v-
|
|
1174
|
+
.termsAgreeIcon[data-v-ba1161a7] {
|
|
1175
1175
|
width: inherit;
|
|
1176
1176
|
height: inherit;
|
|
1177
1177
|
padding: 2px;
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "git+https://github.com/scalar/scalar.git",
|
|
11
11
|
"directory": "packages/agent-chat"
|
|
12
12
|
},
|
|
13
|
-
"version": "0.12.
|
|
13
|
+
"version": "0.12.26",
|
|
14
14
|
"engines": {
|
|
15
15
|
"node": ">=22"
|
|
16
16
|
},
|
|
@@ -52,18 +52,18 @@
|
|
|
52
52
|
"neverpanic": "0.0.8",
|
|
53
53
|
"truncate-json": "3.0.1",
|
|
54
54
|
"vue": "^3.5.40",
|
|
55
|
-
"@scalar/api-client": "3.
|
|
55
|
+
"@scalar/api-client": "3.16.1",
|
|
56
56
|
"@scalar/components": "0.27.11",
|
|
57
|
-
"@scalar/helpers": "0.10.0",
|
|
58
57
|
"@scalar/icons": "0.7.5",
|
|
58
|
+
"@scalar/helpers": "0.10.0",
|
|
59
|
+
"@scalar/json-magic": "0.13.0",
|
|
59
60
|
"@scalar/openapi-types": "0.9.4",
|
|
60
61
|
"@scalar/schemas": "0.8.1",
|
|
61
|
-
"@scalar/json-magic": "0.12.20",
|
|
62
62
|
"@scalar/themes": "0.17.2",
|
|
63
|
-
"@scalar/types": "0.
|
|
63
|
+
"@scalar/types": "0.18.0",
|
|
64
|
+
"@scalar/workspace-store": "0.57.1",
|
|
64
65
|
"@scalar/use-toasts": "0.10.4",
|
|
65
|
-
"@scalar/validation": "0.6.2"
|
|
66
|
-
"@scalar/workspace-store": "0.56.1"
|
|
66
|
+
"@scalar/validation": "0.6.2"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@tailwindcss/cli": "^4.3.3",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"tailwindcss": "^4.3.3",
|
|
76
76
|
"vite": "8.1.5",
|
|
77
77
|
"vitest": "4.1.10",
|
|
78
|
-
"@scalar/sidebar": "0.9.
|
|
78
|
+
"@scalar/sidebar": "0.9.37"
|
|
79
79
|
},
|
|
80
80
|
"scripts": {
|
|
81
81
|
"build": "vite build && pnpm build:styles && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && shx cp package.json dist",
|