@scalar/api-client 3.21.5 → 3.23.0
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/CHANGELOG.md +27 -0
- package/dist/hooks/use-file-dialog.js +1 -1
- package/dist/hooks/use-file-dialog.js.map +1 -1
- package/dist/style.css +1226 -69
- package/dist/styles/tailwind.config.css +1 -0
- package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.d.ts +3 -3
- package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js +4 -4
- package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js +1 -1
- package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +13 -8
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +64 -13
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts +2 -0
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +5 -3
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.d.ts +9 -3
- package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js +44 -16
- package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +12 -0
- package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +132 -32
- package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +3 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.js +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js +13 -2
- package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +3 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +6 -2
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js +10 -3
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js.map +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-rows.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js +10 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js.map +1 -1
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts +3 -2
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +14 -11
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +3 -3
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +55 -16
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts +3 -3
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js +20 -7
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +32 -27
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js +2 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js.map +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.d.ts.map +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.js +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.js.map +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.script.js.map +1 -1
- package/dist/v2/components/code-input/PillTooltipHost.vue.d.ts.map +1 -1
- package/dist/v2/components/code-input/PillTooltipHost.vue.js.map +1 -1
- package/dist/v2/components/code-input/PillTooltipHost.vue.script.js +4 -1
- package/dist/v2/components/code-input/PillTooltipHost.vue.script.js.map +1 -1
- package/dist/v2/components/code-input/code-variable-widget.js +1 -1
- package/dist/v2/components/code-input/code-variable-widget.js.map +1 -1
- package/dist/v2/components/data-table/DataTableInput.vue.d.ts +3 -1
- package/dist/v2/components/data-table/DataTableInput.vue.d.ts.map +1 -1
- package/dist/v2/components/data-table/DataTableInput.vue.js +1 -1
- package/dist/v2/components/data-table/DataTableInput.vue.js.map +1 -1
- package/dist/v2/components/data-table/DataTableInput.vue.script.js +46 -15
- package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.d.ts.map +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.js.map +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.script.js +7 -9
- package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -1
- package/dist/v2/constants.js +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +27 -31
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -1
- package/dist/v2/features/localization/index.d.ts.map +1 -1
- package/dist/v2/features/localization/index.js +2 -0
- package/dist/v2/features/localization/index.js.map +1 -1
- package/dist/v2/features/localization/locales/ar.d.ts +4 -0
- package/dist/v2/features/localization/locales/ar.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/ar.js +4 -0
- package/dist/v2/features/localization/locales/ar.js.map +1 -1
- package/dist/v2/features/localization/locales/de.d.ts +4 -0
- package/dist/v2/features/localization/locales/de.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/de.js +4 -0
- package/dist/v2/features/localization/locales/de.js.map +1 -1
- package/dist/v2/features/localization/locales/es.d.ts +4 -0
- package/dist/v2/features/localization/locales/es.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/es.js +4 -0
- package/dist/v2/features/localization/locales/es.js.map +1 -1
- package/dist/v2/features/localization/locales/fr.d.ts +4 -0
- package/dist/v2/features/localization/locales/fr.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/fr.js +4 -0
- package/dist/v2/features/localization/locales/fr.js.map +1 -1
- package/dist/v2/features/localization/locales/pt.d.ts +4 -0
- package/dist/v2/features/localization/locales/pt.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/pt.js +4 -0
- package/dist/v2/features/localization/locales/pt.js.map +1 -1
- package/dist/v2/features/localization/locales/ru.d.ts +4 -0
- package/dist/v2/features/localization/locales/ru.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/ru.js +4 -0
- package/dist/v2/features/localization/locales/ru.js.map +1 -1
- package/dist/v2/features/localization/locales/zh-cn.d.ts +4 -0
- package/dist/v2/features/localization/locales/zh-cn.d.ts.map +1 -1
- package/dist/v2/features/localization/locales/zh-cn.js +4 -0
- package/dist/v2/features/localization/locales/zh-cn.js.map +1 -1
- package/dist/v2/features/localization/locales/zh-tw.d.ts +398 -0
- package/dist/v2/features/localization/locales/zh-tw.d.ts.map +1 -0
- package/dist/v2/features/localization/locales/zh-tw.js +360 -0
- package/dist/v2/features/localization/locales/zh-tw.js.map +1 -0
- package/dist/v2/features/localization/translations.d.ts +4 -0
- package/dist/v2/features/localization/translations.d.ts.map +1 -1
- package/dist/v2/features/localization/translations.js +4 -0
- package/dist/v2/features/localization/translations.js.map +1 -1
- package/dist/v2/features/modal/index.d.ts +1 -1
- package/dist/v2/features/modal/index.d.ts.map +1 -1
- package/dist/v2/helpers/handle-hotkeys.d.ts.map +1 -1
- package/dist/v2/helpers/handle-hotkeys.js +4 -1
- package/dist/v2/helpers/handle-hotkeys.js.map +1 -1
- package/dist/vue-styles.css +39 -40
- package/package.json +13 -13
|
@@ -5,7 +5,6 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
|
|
|
5
5
|
import { ScalarButton } from "@scalar/components/button";
|
|
6
6
|
import { ScalarIconPencilSimple, ScalarIconPlus } from "@scalar/icons";
|
|
7
7
|
import { ScalarPopover } from "@scalar/components/popover";
|
|
8
|
-
import { ScalarFloatingBackdrop } from "@scalar/components/floating";
|
|
9
8
|
//#region src/v2/components/server/ServerDropdown.vue?vue&type=script&setup=true&lang.ts
|
|
10
9
|
var _hoisted_1 = { class: "sr-only" };
|
|
11
10
|
var _hoisted_2 = { class: "sr-only" };
|
|
@@ -39,7 +38,7 @@ var ServerDropdown_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
39
38
|
});
|
|
40
39
|
return (_ctx, _cache) => {
|
|
41
40
|
return openBlock(), createBlock(unref(ScalarPopover), {
|
|
42
|
-
class: "max-h-[inherit] p-0 text-base",
|
|
41
|
+
class: "max-h-[inherit] rounded-none rounded-b-lg border border-t-0 p-0 text-base inset-shadow-none",
|
|
43
42
|
focus: "",
|
|
44
43
|
offset: 0,
|
|
45
44
|
placement: "bottom",
|
|
@@ -47,7 +46,11 @@ var ServerDropdown_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
47
46
|
target: __props.target,
|
|
48
47
|
teleport: `#${__props.target}`
|
|
49
48
|
}, {
|
|
50
|
-
popover: withCtx(({ close }) => [
|
|
49
|
+
popover: withCtx(({ close, open }) => [createVNode(ValueEmitter_default, {
|
|
50
|
+
value: open,
|
|
51
|
+
onChange: _cache[0] || (_cache[0] = (value) => emit("update:open", value)),
|
|
52
|
+
onUnmount: _cache[1] || (_cache[1] = ($event) => emit("update:open", false))
|
|
53
|
+
}, null, 8, ["value"]), createElementVNode("div", {
|
|
51
54
|
class: "custom-scroll flex max-h-[inherit] flex-col gap-1 p-1",
|
|
52
55
|
onClick: close
|
|
53
56
|
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(requestServerOptions.value, (serverOption, index) => {
|
|
@@ -76,13 +79,8 @@ var ServerDropdown_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
76
79
|
key: 0,
|
|
77
80
|
class: "text-xxs hover:bg-b-2 flex cursor-pointer items-center gap-1.5 rounded p-1.75",
|
|
78
81
|
type: "button",
|
|
79
|
-
onClick: _cache[
|
|
82
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("update:servers"))
|
|
80
83
|
}, [createElementVNode("div", _hoisted_4, [createVNode(unref(ScalarIconPencilSimple), { class: "size-4" })]), createElementVNode("span", null, toDisplayString(unref(translate)("apiClient.serverDropdown.updateServers")), 1)])) : createCommentVNode("", true)], 8, _hoisted_3)]),
|
|
81
|
-
backdrop: withCtx(({ open }) => [createVNode(ValueEmitter_default, {
|
|
82
|
-
value: open,
|
|
83
|
-
onChange: _cache[1] || (_cache[1] = (value) => emit("update:open", value)),
|
|
84
|
-
onUnmount: _cache[2] || (_cache[2] = ($event) => emit("update:open", false))
|
|
85
|
-
}, null, 8, ["value"]), createVNode(unref(ScalarFloatingBackdrop), { class: "rounded-none rounded-b-lg border border-t-0 after:hidden" })]),
|
|
86
84
|
default: withCtx(() => [createVNode(unref(ScalarButton), {
|
|
87
85
|
class: "hover:bg-b-2 font-code text-c-2 h-auto gap-0.75 rounded border px-1.5 text-base whitespace-nowrap @3xl:ml-0.75",
|
|
88
86
|
variant: "ghost"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerDropdown.vue.script.js","names":[],"sources":["../../../../src/v2/components/server/ServerDropdown.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * ServerDropdown component\n * This component is used to display the server dropdown for the operation block\n */\nexport default {\n name: 'ServerDropdown',\n}\n\nexport type ServerDropdownProps = {\n /** The meta information for the server */\n meta: ServerMeta\n /** List of servers that are available for the operation/document level */\n servers: ServerObject[]\n /** Currently selected server */\n server: ServerObject | null\n /** The id of the target to use for the popover (e.g. address bar) */\n target: string\n /** Client layout */\n layout: ClientLayout\n}\n</script>\n<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport {
|
|
1
|
+
{"version":3,"file":"ServerDropdown.vue.script.js","names":[],"sources":["../../../../src/v2/components/server/ServerDropdown.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * ServerDropdown component\n * This component is used to display the server dropdown for the operation block\n */\nexport default {\n name: 'ServerDropdown',\n}\n\nexport type ServerDropdownProps = {\n /** The meta information for the server */\n meta: ServerMeta\n /** List of servers that are available for the operation/document level */\n servers: ServerObject[]\n /** Currently selected server */\n server: ServerObject | null\n /** The id of the target to use for the popover (e.g. address bar) */\n target: string\n /** Client layout */\n layout: ClientLayout\n}\n</script>\n<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarPopover } from '@scalar/components/popover'\nimport { ScalarIconPencilSimple, ScalarIconPlus } from '@scalar/icons'\nimport type {\n ApiReferenceEvents,\n ServerMeta,\n} from '@scalar/workspace-store/events'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\nimport { computed } from 'vue'\n\nimport ValueEmitter from '@/v2/components/layout/ValueEmitter.vue'\nimport { useLocalization } from '@/v2/features/localization'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport ServerDropdownItem from './ServerDropdownItem.vue'\n\nconst { target, server, servers, meta } = defineProps<ServerDropdownProps>()\n\nconst emit = defineEmits<{\n /** Update a server variable for the selected server */\n (\n e: 'update:selectedServer',\n payload: ApiReferenceEvents['server:update:selected'],\n ): void\n (\n e: 'update:variable',\n payload: ApiReferenceEvents['server:update:variables'],\n ): void\n (e: 'update:servers'): void\n /** Update the open state of the server dropdown */\n (e: 'update:open', value: boolean): void\n}>()\n\nconst { translate } = useLocalization()\n\nconst requestServerOptions = computed(() =>\n servers.map((s) => ({\n id: s.url,\n // Prefer the server name (OpenAPI 3.2) as a friendly label, falling back to the URL\n label:\n s.name || s.url || translate('apiClient.serverDropdown.unknownServer'),\n })),\n)\n\nconst serverUrlWithoutTrailingSlash = computed(() => {\n if (server?.url?.endsWith('/')) {\n return server.url.slice(0, -1)\n }\n return server?.url || ''\n})\n</script>\n<template>\n <ScalarPopover\n class=\"max-h-[inherit] rounded-none rounded-b-lg border border-t-0 p-0 text-base inset-shadow-none\"\n focus\n :offset=\"0\"\n placement=\"bottom\"\n resize\n :target=\"target\"\n :teleport=\"`#${target}`\">\n <ScalarButton\n class=\"hover:bg-b-2 font-code text-c-2 h-auto gap-0.75 rounded border px-1.5 text-base whitespace-nowrap @3xl:ml-0.75\"\n variant=\"ghost\">\n <template v-if=\"server\">\n <span class=\"sr-only\">{{\n translate('apiClient.serverDropdown.server')\n }}</span>\n {{ serverUrlWithoutTrailingSlash }}\n </template>\n <template v-else>\n <span class=\"sr-only\">{{\n translate('apiClient.serverDropdown.addServer')\n }}</span>\n <ScalarIconPlus class=\"size-3\" />\n </template>\n </ScalarButton>\n\n <template #popover=\"{ close, open }\">\n <!-- Emit the slot value back out the parent -->\n <ValueEmitter\n :value=\"open\"\n @change=\"(value) => emit('update:open', value)\"\n @unmount=\"emit('update:open', false)\" />\n <div\n class=\"custom-scroll flex max-h-[inherit] flex-col gap-1 p-1\"\n @click=\"close\">\n <!-- Request -->\n <ServerDropdownItem\n v-for=\"(serverOption, index) in requestServerOptions\"\n :key=\"serverOption.id\"\n :server=\"server\"\n :serverOption=\"serverOption\"\n type=\"request\"\n @update:selectedServer=\"\n emit('update:selectedServer', { url: serverOption.id, meta })\n \"\n @update:variable=\"\n (key, value) => emit('update:variable', { index, key, value, meta })\n \" />\n\n <!-- Add Server -->\n <template v-if=\"layout !== 'modal'\">\n <button\n class=\"text-xxs hover:bg-b-2 flex cursor-pointer items-center gap-1.5 rounded p-1.75\"\n type=\"button\"\n @click=\"emit('update:servers')\">\n <div class=\"flex items-center justify-center\">\n <ScalarIconPencilSimple class=\"size-4\" />\n </div>\n <span>{{\n translate('apiClient.serverDropdown.updateServers')\n }}</span>\n </button>\n </template>\n </div>\n </template>\n </ScalarPopover>\n</template>\n"],"mappings":";;;;;;;;;;;;;CAME,MAAM;;;;;;;;;;;;;;;EAmCR,MAAM,OAAO;EAeb,MAAM,EAAE,cAAc,gBAAgB;EAEtC,MAAM,uBAAuB,eAC3B,QAAA,QAAQ,KAAK,OAAO;GAClB,IAAI,EAAE;GAEN,OACE,EAAE,QAAQ,EAAE,OAAO,UAAU,wCAAwC;EACzE,EAAE,CACJ;EAEA,MAAM,gCAAgC,eAAe;GACnD,IAAI,QAAA,QAAQ,KAAK,SAAS,GAAG,GAC3B,OAAO,QAAA,OAAO,IAAI,MAAM,GAAG,EAAE;GAE/B,OAAO,QAAA,QAAQ,OAAO;EACxB,CAAC;;uBAGC,YAgEgB,MAAA,aAAA,GAAA;IA/Dd,OAAM;IACN,OAAA;IACC,QAAQ;IACT,WAAU;IACV,QAAA;IACC,QAAQ,QAAA;IACR,UAAQ,IAAM,QAAA;;IAkBJ,SAAO,SAK0B,EALtB,OAAO,WAAI,CAE/B,YAG0C,sBAAA;KAFvC,OAAO;KACP,UAAM,OAAA,OAAA,OAAA,MAAG,UAAU,KAAI,eAAgB,KAAK;KAC5C,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,eAAA,KAAA;4BAChB,mBA+BM,OAAA;KA9BJ,OAAM;KACL,SAAO;0BAER,mBAWM,UAAA,MAAA,WAV4B,qBAAA,QAAxB,cAAc,UAAK;yBAD7B,YAWM,4BAAA;MATH,KAAK,aAAa;MAClB,QAAQ,QAAA;MACM;MACf,MAAK;MACJ,4BAAqB,WAAe,KAAI,yBAAA;OAAA,KAAiC,aAAa;OAAE,MAAE,QAAA;MAAI,CAAA;MAG9F,sBAA+B,KAAK,UAAU,KAAI,mBAAA;OAAsB;OAAO;OAAK;OAAK,MAAE,QAAA;MAAI,CAAA;;;;;;;eAKlF,QAAA,WAAM,WAAA,UAAA,GACpB,mBAUS,UAAA;;KATP,OAAM;KACN,MAAK;KACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,gBAAA;QACZ,mBAEM,OAFN,YAEM,CADJ,YAAyC,MAAA,sBAAA,GAAA,EAAjB,OAAM,SAAQ,CAAA,CAAA,CAAA,GAExC,mBAES,QAAA,MAAA,gBADP,MAAA,SAAA,CAAS,CAAA,wCAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,GAAA,UAAA,CAAA,CAAA;2BAnCJ,CAff,YAee,MAAA,YAAA,GAAA;KAdb,OAAM;KACN,SAAQ;;4BAMG,CALK,QAAA,UAAA,UAAA,GAAhB,mBAKW,UAAA,EAAA,KAAA,EAAA,GAAA,CAJT,mBAES,QAFT,YAES,gBADP,MAAA,SAAA,CAAS,CAAA,iCAAA,CAAA,GAAA,CAAA,GAAA,gBACF,MACT,gBAAG,8BAAA,KAA6B,GAAA,CAAA,CAAA,GAAA,EAAA,MAAA,UAAA,GAElC,mBAKW,UAAA,EAAA,KAAA,EAAA,GAAA,CAJT,mBAES,QAFT,YAES,gBADP,MAAA,SAAA,CAAS,CAAA,oCAAA,CAAA,GAAA,CAAA,GAEX,YAAiC,MAAA,cAAA,GAAA,EAAjB,OAAM,SAAQ,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA"}
|
package/dist/v2/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/v2/constants.ts
|
|
2
2
|
/** The version number taken from the package.json. Consumers can override at build time via define (e.g. OVERRIDE_PACKAGE_VERSION: JSON.stringify('1.2.3')). */
|
|
3
|
-
var APP_VERSION = typeof OVERRIDE_PACKAGE_VERSION !== "undefined" ? OVERRIDE_PACKAGE_VERSION : "3.
|
|
3
|
+
var APP_VERSION = typeof OVERRIDE_PACKAGE_VERSION !== "undefined" ? OVERRIDE_PACKAGE_VERSION : "3.23.0";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { APP_VERSION };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentVariablesDropdown.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EnvironmentVariablesDropdown.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"names":[],"mappings":"AAyTA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AAOnH,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,iFAAiF;IACjF,oBAAoB,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAC;AAwbF,QAAA,MAAM,YAAY;gCA9QiB,IAAI,GAAG,MAAM;;;;;;;;;;;kFAkR9C,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentVariablesDropdown.vue.js","names":[],"sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarTeleport } from '@scalar/components/teleport'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { POPULAR_CONTEXT_FUNCTION_KEYS } from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { onClickOutside } from '@vueuse/core'\nimport Fuse from 'fuse.js'\nimport { computed, onMounted, ref, watch, type CSSProperties } from 'vue'\n\nimport { useLocalization } from '@/v2/features/localization'\n\nconst {\n query,\n environment,\n dropdownPosition,\n contextFunctionItems = [],\n listboxId,\n} = defineProps<{\n query: string\n environment?: XScalarEnvironment\n dropdownPosition?: { left: number; top: number }\n /** Runtime placeholders such as `{{$guid}}`, shown with environment variables */\n contextFunctionItems?: { key: string; description: string }[]\n /**\n * Id for the `role=\"listbox\"` element. When set, each option also receives a\n * stable id so the owning combobox input can reference the active option via\n * `aria-activedescendant` (W3C combobox pattern).\n */\n listboxId?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'select', variable: string): void\n (e: 'redirect'): void\n /**\n * Fired when the user dismisses the panel by clicking outside. The owning\n * combobox needs this to clear its `aria-expanded`/`aria-controls` state,\n * which would otherwise keep pointing at a listbox that is no longer mounted.\n */\n (e: 'close'): void\n}>()\n\nconst { translate } = useLocalization()\n\ntype DropdownRow =\n | { kind: 'env'; key: string; secondary: string }\n | { kind: 'context'; key: string; secondary: string }\n\nconst isOpen = ref(true)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst selectedVariableIndex = ref(0)\n\nconst redirectToEnvironment = () => {\n emit('redirect')\n isOpen.value = false\n // The panel is gone, so tell the combobox to drop its aria-expanded /\n // aria-controls — otherwise they keep pointing at a dismissed listbox.\n emit('close')\n}\n\n/** Normalize the variables to have a name and value */\nconst normalizedVariables = computed(() =>\n (environment?.variables ?? []).map((v) => ({\n key: v.name,\n value: typeof v.value === 'string' ? v.value : v.value.default,\n })),\n)\n\nconst contextRows = computed((): DropdownRow[] =>\n contextFunctionItems.map((item) => ({\n kind: 'context',\n key: item.key,\n secondary: item.description,\n })),\n)\n\nconst envRows = computed((): DropdownRow[] =>\n normalizedVariables.value\n .filter(({ key, value }) => key !== '' || value !== '')\n .map(({ key, value }) => ({\n kind: 'env' as const,\n key,\n secondary: value,\n })),\n)\n\ntype FuseRow = DropdownRow & { fuseText: string }\n\nconst envFuseSource = computed((): FuseRow[] =>\n envRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst contextFuseSource = computed((): FuseRow[] =>\n contextRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst fuseEnv = computed(\n () =>\n new Fuse(envFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst fuseContext = computed(\n () =>\n new Fuse(contextFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst popularContextRows = computed((): DropdownRow[] => {\n const byKey = new Map(contextFunctionItems.map((c) => [c.key, c]))\n return POPULAR_CONTEXT_FUNCTION_KEYS.flatMap((key) => {\n const item = byKey.get(key)\n return item\n ? [\n {\n kind: 'context' as const,\n key: item.key,\n secondary: item.description,\n },\n ]\n : []\n })\n})\n\nconst DROPDOWN_LIMIT = 12\n\nconst filteredVariables = computed((): DropdownRow[] => {\n if (!query.trim()) {\n const envSlice = envRows.value.slice(-4)\n return [...envSlice, ...popularContextRows.value]\n }\n\n const q = query.trim()\n const envMatches = fuseEnv.value\n .search(q, { limit: DROPDOWN_LIMIT })\n .map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n\n const remaining = DROPDOWN_LIMIT - envMatches.length\n const contextMatches =\n remaining > 0\n ? fuseContext.value.search(q, { limit: remaining }).map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n : []\n\n return [...envMatches, ...contextMatches]\n})\n\nconst optionId = (index: number): string | undefined =>\n listboxId ? `${listboxId}-option-${index}` : undefined\n\n/**\n * Id of the currently highlighted option, for the combobox's\n * `aria-activedescendant`. Undefined when there is no list to point at.\n */\nconst activeOptionId = computed((): string | undefined =>\n filteredVariables.value.length\n ? optionId(selectedVariableIndex.value)\n : undefined,\n)\n\nconst selectVariable = (variableKey: string): void => {\n emit('select', variableKey)\n}\n\n// Narrowing the query shrinks the list; keep the highlight in range so both the\n// visible selection and `aria-activedescendant` never reference a dropped option.\nwatch(\n () => filteredVariables.value.length,\n (length) => {\n if (selectedVariableIndex.value > length - 1) {\n selectedVariableIndex.value = Math.max(0, length - 1)\n }\n },\n)\n\nconst handleArrowKey = (direction: 'up' | 'down') => {\n const offset = direction === 'up' ? -1 : 1\n const length = filteredVariables.value.length\n\n if (length === 0) {\n return\n }\n\n selectedVariableIndex.value =\n (selectedVariableIndex.value + offset + length) % length\n}\n\nconst handleSelect = () => {\n if (selectedVariableIndex.value >= 0) {\n const selectedVariable =\n filteredVariables.value[selectedVariableIndex.value]\n if (selectedVariable) {\n selectVariable(selectedVariable.key)\n }\n }\n}\n\ndefineExpose({\n handleArrowKey,\n handleSelect,\n activeOptionId,\n})\n\nonMounted(() => {\n // Reset selected index to the first item when dropdown opens\n selectedVariableIndex.value = 0\n})\n\nconst dropdownStyle = computed<CSSProperties>(() => {\n return {\n left: (dropdownPosition?.left ?? 0) + 'px',\n // Add a 5px offset from the editor\n top: (dropdownPosition?.top ?? 0) + 5 + 'px',\n }\n})\n\nonClickOutside(\n dropdownRef,\n () => {\n isOpen.value = false\n emit('close')\n },\n { ignore: [dropdownRef] },\n)\n</script>\n<template>\n <ScalarTeleport\n v-if=\"isOpen\"\n class=\"scalar-client\">\n <div\n ref=\"dropdownRef\"\n class=\"custom-scroll z-context fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75\"\n :style=\"dropdownStyle\"\n @mousedown.prevent>\n <!--\n Always rendered (even with no matches) so the combobox's `aria-controls`\n always resolves to a real listbox; an empty list simply has no options.\n -->\n <ul\n :id=\"listboxId\"\n :aria-label=\"\n translate(\n 'apiClient.environmentVariablesDropdown.variableSuggestions',\n )\n \"\n class=\"gap-1/2 flex flex-col\"\n role=\"listbox\">\n <template\n v-for=\"(item, index) in filteredVariables\"\n :key=\"`${item.kind}-${item.key}`\">\n <li\n :id=\"optionId(index)\"\n :aria-selected=\"index === selectedVariableIndex\"\n class=\"font-code text-xxs hover:bg-b-3 flex h-8 cursor-pointer items-center justify-between gap-1.5 rounded p-1.5 transition-colors duration-150\"\n :class=\"{ 'bg-b-3': index === selectedVariableIndex }\"\n role=\"option\"\n @click=\"selectVariable(item.key)\">\n <div class=\"flex items-center gap-2 whitespace-nowrap\">\n <span\n v-if=\"item.kind === 'env'\"\n class=\"h-2.25 w-2.25 min-w-2.25 rounded-full\"\n :style=\"{\n backgroundColor: environment?.color,\n }\" />\n <span\n v-else\n class=\"text-c-3 bg-b-3 flex h-4.5 min-w-4.5 items-center justify-center rounded px-0.5 font-sans text-[9px] font-semibold\">\n fn\n </span>\n {{ item.key }}\n </div>\n <span\n class=\"max-w-[9rem] overflow-hidden text-right text-ellipsis whitespace-nowrap\">\n {{ item.secondary }}\n </span>\n </li>\n </template>\n </ul>\n <ScalarButton\n v-if=\"!filteredVariables.length\"\n class=\"font-code text-xxs bg-b-inherit hover:bg-b-3 flex h-8 w-full justify-start gap-2 px-1.5 transition-colors duration-150\"\n variant=\"outlined\"\n @click=\"redirectToEnvironment\">\n <ScalarIconPlus class=\"size-3\" />{{\n translate('apiClient.environmentVariablesDropdown.addVariable')\n }}\n </ScalarButton>\n
|
|
1
|
+
{"version":3,"file":"EnvironmentVariablesDropdown.vue.js","names":[],"sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarTeleport } from '@scalar/components/teleport'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { POPULAR_CONTEXT_FUNCTION_KEYS } from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { onClickOutside } from '@vueuse/core'\nimport Fuse from 'fuse.js'\nimport { computed, onMounted, ref, watch, type CSSProperties } from 'vue'\n\nimport { useLocalization } from '@/v2/features/localization'\n\nconst {\n query,\n environment,\n dropdownPosition,\n contextFunctionItems = [],\n listboxId,\n} = defineProps<{\n query: string\n environment?: XScalarEnvironment\n dropdownPosition?: { left: number; top: number }\n /** Runtime placeholders such as `{{$guid}}`, shown with environment variables */\n contextFunctionItems?: { key: string; description: string }[]\n /**\n * Id for the `role=\"listbox\"` element. When set, each option also receives a\n * stable id so the owning combobox input can reference the active option via\n * `aria-activedescendant` (W3C combobox pattern).\n */\n listboxId?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'select', variable: string): void\n (e: 'redirect'): void\n /**\n * Fired when the user dismisses the panel by clicking outside. The owning\n * combobox needs this to clear its `aria-expanded`/`aria-controls` state,\n * which would otherwise keep pointing at a listbox that is no longer mounted.\n */\n (e: 'close'): void\n}>()\n\nconst { translate } = useLocalization()\n\ntype DropdownRow =\n | { kind: 'env'; key: string; secondary: string }\n | { kind: 'context'; key: string; secondary: string }\n\nconst isOpen = ref(true)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst selectedVariableIndex = ref(0)\n\nconst redirectToEnvironment = () => {\n emit('redirect')\n isOpen.value = false\n // The panel is gone, so tell the combobox to drop its aria-expanded /\n // aria-controls — otherwise they keep pointing at a dismissed listbox.\n emit('close')\n}\n\n/** Normalize the variables to have a name and value */\nconst normalizedVariables = computed(() =>\n (environment?.variables ?? []).map((v) => ({\n key: v.name,\n value: typeof v.value === 'string' ? v.value : v.value.default,\n })),\n)\n\nconst contextRows = computed((): DropdownRow[] =>\n contextFunctionItems.map((item) => ({\n kind: 'context',\n key: item.key,\n secondary: item.description,\n })),\n)\n\nconst envRows = computed((): DropdownRow[] =>\n normalizedVariables.value\n .filter(({ key, value }) => key !== '' || value !== '')\n .map(({ key, value }) => ({\n kind: 'env' as const,\n key,\n secondary: value,\n })),\n)\n\ntype FuseRow = DropdownRow & { fuseText: string }\n\nconst envFuseSource = computed((): FuseRow[] =>\n envRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst contextFuseSource = computed((): FuseRow[] =>\n contextRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst fuseEnv = computed(\n () =>\n new Fuse(envFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst fuseContext = computed(\n () =>\n new Fuse(contextFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst popularContextRows = computed((): DropdownRow[] => {\n const byKey = new Map(contextFunctionItems.map((c) => [c.key, c]))\n return POPULAR_CONTEXT_FUNCTION_KEYS.flatMap((key) => {\n const item = byKey.get(key)\n return item\n ? [\n {\n kind: 'context' as const,\n key: item.key,\n secondary: item.description,\n },\n ]\n : []\n })\n})\n\nconst DROPDOWN_LIMIT = 12\n\nconst filteredVariables = computed((): DropdownRow[] => {\n if (!query.trim()) {\n const envSlice = envRows.value.slice(-4)\n return [...envSlice, ...popularContextRows.value]\n }\n\n const q = query.trim()\n const envMatches = fuseEnv.value\n .search(q, { limit: DROPDOWN_LIMIT })\n .map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n\n const remaining = DROPDOWN_LIMIT - envMatches.length\n const contextMatches =\n remaining > 0\n ? fuseContext.value.search(q, { limit: remaining }).map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n : []\n\n return [...envMatches, ...contextMatches]\n})\n\nconst optionId = (index: number): string | undefined =>\n listboxId ? `${listboxId}-option-${index}` : undefined\n\n/**\n * Id of the currently highlighted option, for the combobox's\n * `aria-activedescendant`. Undefined when there is no list to point at.\n */\nconst activeOptionId = computed((): string | undefined =>\n filteredVariables.value.length\n ? optionId(selectedVariableIndex.value)\n : undefined,\n)\n\nconst selectVariable = (variableKey: string): void => {\n emit('select', variableKey)\n}\n\n// Narrowing the query shrinks the list; keep the highlight in range so both the\n// visible selection and `aria-activedescendant` never reference a dropped option.\nwatch(\n () => filteredVariables.value.length,\n (length) => {\n if (selectedVariableIndex.value > length - 1) {\n selectedVariableIndex.value = Math.max(0, length - 1)\n }\n },\n)\n\nconst handleArrowKey = (direction: 'up' | 'down') => {\n const offset = direction === 'up' ? -1 : 1\n const length = filteredVariables.value.length\n\n if (length === 0) {\n return\n }\n\n selectedVariableIndex.value =\n (selectedVariableIndex.value + offset + length) % length\n}\n\nconst handleSelect = () => {\n if (selectedVariableIndex.value >= 0) {\n const selectedVariable =\n filteredVariables.value[selectedVariableIndex.value]\n if (selectedVariable) {\n selectVariable(selectedVariable.key)\n }\n }\n}\n\ndefineExpose({\n handleArrowKey,\n handleSelect,\n activeOptionId,\n})\n\nonMounted(() => {\n // Reset selected index to the first item when dropdown opens\n selectedVariableIndex.value = 0\n})\n\nconst dropdownStyle = computed<CSSProperties>(() => {\n return {\n left: (dropdownPosition?.left ?? 0) + 'px',\n // Add a 5px offset from the editor\n top: (dropdownPosition?.top ?? 0) + 5 + 'px',\n }\n})\n\nonClickOutside(\n dropdownRef,\n () => {\n isOpen.value = false\n emit('close')\n },\n { ignore: [dropdownRef] },\n)\n</script>\n<template>\n <ScalarTeleport\n v-if=\"isOpen\"\n class=\"scalar-client\">\n <div\n ref=\"dropdownRef\"\n class=\"custom-scroll z-context bg-b-1 dark:bg-b-1.5 fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75 shadow-lg\"\n :style=\"dropdownStyle\"\n @mousedown.prevent>\n <!--\n Always rendered (even with no matches) so the combobox's `aria-controls`\n always resolves to a real listbox; an empty list simply has no options.\n -->\n <ul\n :id=\"listboxId\"\n :aria-label=\"\n translate(\n 'apiClient.environmentVariablesDropdown.variableSuggestions',\n )\n \"\n class=\"gap-1/2 flex flex-col\"\n role=\"listbox\">\n <template\n v-for=\"(item, index) in filteredVariables\"\n :key=\"`${item.kind}-${item.key}`\">\n <li\n :id=\"optionId(index)\"\n :aria-selected=\"index === selectedVariableIndex\"\n class=\"font-code text-xxs hover:bg-b-3 flex h-8 cursor-pointer items-center justify-between gap-1.5 rounded p-1.5 transition-colors duration-150\"\n :class=\"{ 'bg-b-3': index === selectedVariableIndex }\"\n role=\"option\"\n @click=\"selectVariable(item.key)\">\n <div class=\"flex items-center gap-2 whitespace-nowrap\">\n <span\n v-if=\"item.kind === 'env'\"\n class=\"h-2.25 w-2.25 min-w-2.25 rounded-full\"\n :style=\"{\n backgroundColor: environment?.color,\n }\" />\n <span\n v-else\n class=\"text-c-3 bg-b-3 flex h-4.5 min-w-4.5 items-center justify-center rounded px-0.5 font-sans text-[9px] font-semibold\">\n fn\n </span>\n {{ item.key }}\n </div>\n <span\n class=\"max-w-[9rem] overflow-hidden text-right text-ellipsis whitespace-nowrap\">\n {{ item.secondary }}\n </span>\n </li>\n </template>\n </ul>\n <ScalarButton\n v-if=\"!filteredVariables.length\"\n class=\"font-code text-xxs bg-b-inherit hover:bg-b-3 flex h-8 w-full justify-start gap-2 px-1.5 transition-colors duration-150\"\n variant=\"outlined\"\n @click=\"redirectToEnvironment\">\n <ScalarIconPlus class=\"size-3\" />{{\n translate('apiClient.environmentVariablesDropdown.addVariable')\n }}\n </ScalarButton>\n </div>\n </ScalarTeleport>\n</template>\n"],"mappings":""}
|
|
@@ -159,40 +159,36 @@ var EnvironmentVariablesDropdown_vue_vue_type_script_setup_true_lang_default = /
|
|
|
159
159
|
default: withCtx(() => [createElementVNode("div", {
|
|
160
160
|
ref_key: "dropdownRef",
|
|
161
161
|
ref: dropdownRef,
|
|
162
|
-
class: "custom-scroll z-context fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75",
|
|
162
|
+
class: "custom-scroll z-context bg-b-1 dark:bg-b-1.5 fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75 shadow-lg",
|
|
163
163
|
style: normalizeStyle(dropdownStyle.value),
|
|
164
164
|
onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"]))
|
|
165
|
-
}, [
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}, [createElementVNode("div", _hoisted_3, [item.kind === "env" ? (openBlock(), createElementBlock("span", {
|
|
180
|
-
key: 0,
|
|
181
|
-
class: "h-2.25 w-2.25 min-w-2.25 rounded-full",
|
|
182
|
-
style: normalizeStyle({ backgroundColor: __props.environment?.color })
|
|
183
|
-
}, null, 4)) : (openBlock(), createElementBlock("span", _hoisted_4, " fn ")), createTextVNode(" " + toDisplayString(item.key), 1)]), createElementVNode("span", _hoisted_5, toDisplayString(item.secondary), 1)], 10, _hoisted_2);
|
|
184
|
-
}), 128))], 8, _hoisted_1),
|
|
185
|
-
!filteredVariables.value.length ? (openBlock(), createBlock(unref(ScalarButton), {
|
|
165
|
+
}, [createElementVNode("ul", {
|
|
166
|
+
id: __props.listboxId,
|
|
167
|
+
"aria-label": unref(translate)("apiClient.environmentVariablesDropdown.variableSuggestions"),
|
|
168
|
+
class: "gap-1/2 flex flex-col",
|
|
169
|
+
role: "listbox"
|
|
170
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredVariables.value, (item, index) => {
|
|
171
|
+
return openBlock(), createElementBlock("li", {
|
|
172
|
+
key: `${item.kind}-${item.key}`,
|
|
173
|
+
id: optionId(index),
|
|
174
|
+
"aria-selected": index === selectedVariableIndex.value,
|
|
175
|
+
class: normalizeClass(["font-code text-xxs hover:bg-b-3 flex h-8 cursor-pointer items-center justify-between gap-1.5 rounded p-1.5 transition-colors duration-150", { "bg-b-3": index === selectedVariableIndex.value }]),
|
|
176
|
+
role: "option",
|
|
177
|
+
onClick: ($event) => selectVariable(item.key)
|
|
178
|
+
}, [createElementVNode("div", _hoisted_3, [item.kind === "env" ? (openBlock(), createElementBlock("span", {
|
|
186
179
|
key: 0,
|
|
187
|
-
class: "
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
180
|
+
class: "h-2.25 w-2.25 min-w-2.25 rounded-full",
|
|
181
|
+
style: normalizeStyle({ backgroundColor: __props.environment?.color })
|
|
182
|
+
}, null, 4)) : (openBlock(), createElementBlock("span", _hoisted_4, " fn ")), createTextVNode(" " + toDisplayString(item.key), 1)]), createElementVNode("span", _hoisted_5, toDisplayString(item.secondary), 1)], 10, _hoisted_2);
|
|
183
|
+
}), 128))], 8, _hoisted_1), !filteredVariables.value.length ? (openBlock(), createBlock(unref(ScalarButton), {
|
|
184
|
+
key: 0,
|
|
185
|
+
class: "font-code text-xxs bg-b-inherit hover:bg-b-3 flex h-8 w-full justify-start gap-2 px-1.5 transition-colors duration-150",
|
|
186
|
+
variant: "outlined",
|
|
187
|
+
onClick: redirectToEnvironment
|
|
188
|
+
}, {
|
|
189
|
+
default: withCtx(() => [createVNode(unref(ScalarIconPlus), { class: "size-3" }), createTextVNode(toDisplayString(unref(translate)("apiClient.environmentVariablesDropdown.addVariable")), 1)]),
|
|
190
|
+
_: 1
|
|
191
|
+
})) : createCommentVNode("", true)], 36)]),
|
|
196
192
|
_: 1
|
|
197
193
|
})) : createCommentVNode("", true);
|
|
198
194
|
};
|
package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentVariablesDropdown.vue.script.js","names":[],"sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarTeleport } from '@scalar/components/teleport'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { POPULAR_CONTEXT_FUNCTION_KEYS } from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { onClickOutside } from '@vueuse/core'\nimport Fuse from 'fuse.js'\nimport { computed, onMounted, ref, watch, type CSSProperties } from 'vue'\n\nimport { useLocalization } from '@/v2/features/localization'\n\nconst {\n query,\n environment,\n dropdownPosition,\n contextFunctionItems = [],\n listboxId,\n} = defineProps<{\n query: string\n environment?: XScalarEnvironment\n dropdownPosition?: { left: number; top: number }\n /** Runtime placeholders such as `{{$guid}}`, shown with environment variables */\n contextFunctionItems?: { key: string; description: string }[]\n /**\n * Id for the `role=\"listbox\"` element. When set, each option also receives a\n * stable id so the owning combobox input can reference the active option via\n * `aria-activedescendant` (W3C combobox pattern).\n */\n listboxId?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'select', variable: string): void\n (e: 'redirect'): void\n /**\n * Fired when the user dismisses the panel by clicking outside. The owning\n * combobox needs this to clear its `aria-expanded`/`aria-controls` state,\n * which would otherwise keep pointing at a listbox that is no longer mounted.\n */\n (e: 'close'): void\n}>()\n\nconst { translate } = useLocalization()\n\ntype DropdownRow =\n | { kind: 'env'; key: string; secondary: string }\n | { kind: 'context'; key: string; secondary: string }\n\nconst isOpen = ref(true)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst selectedVariableIndex = ref(0)\n\nconst redirectToEnvironment = () => {\n emit('redirect')\n isOpen.value = false\n // The panel is gone, so tell the combobox to drop its aria-expanded /\n // aria-controls — otherwise they keep pointing at a dismissed listbox.\n emit('close')\n}\n\n/** Normalize the variables to have a name and value */\nconst normalizedVariables = computed(() =>\n (environment?.variables ?? []).map((v) => ({\n key: v.name,\n value: typeof v.value === 'string' ? v.value : v.value.default,\n })),\n)\n\nconst contextRows = computed((): DropdownRow[] =>\n contextFunctionItems.map((item) => ({\n kind: 'context',\n key: item.key,\n secondary: item.description,\n })),\n)\n\nconst envRows = computed((): DropdownRow[] =>\n normalizedVariables.value\n .filter(({ key, value }) => key !== '' || value !== '')\n .map(({ key, value }) => ({\n kind: 'env' as const,\n key,\n secondary: value,\n })),\n)\n\ntype FuseRow = DropdownRow & { fuseText: string }\n\nconst envFuseSource = computed((): FuseRow[] =>\n envRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst contextFuseSource = computed((): FuseRow[] =>\n contextRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst fuseEnv = computed(\n () =>\n new Fuse(envFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst fuseContext = computed(\n () =>\n new Fuse(contextFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst popularContextRows = computed((): DropdownRow[] => {\n const byKey = new Map(contextFunctionItems.map((c) => [c.key, c]))\n return POPULAR_CONTEXT_FUNCTION_KEYS.flatMap((key) => {\n const item = byKey.get(key)\n return item\n ? [\n {\n kind: 'context' as const,\n key: item.key,\n secondary: item.description,\n },\n ]\n : []\n })\n})\n\nconst DROPDOWN_LIMIT = 12\n\nconst filteredVariables = computed((): DropdownRow[] => {\n if (!query.trim()) {\n const envSlice = envRows.value.slice(-4)\n return [...envSlice, ...popularContextRows.value]\n }\n\n const q = query.trim()\n const envMatches = fuseEnv.value\n .search(q, { limit: DROPDOWN_LIMIT })\n .map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n\n const remaining = DROPDOWN_LIMIT - envMatches.length\n const contextMatches =\n remaining > 0\n ? fuseContext.value.search(q, { limit: remaining }).map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n : []\n\n return [...envMatches, ...contextMatches]\n})\n\nconst optionId = (index: number): string | undefined =>\n listboxId ? `${listboxId}-option-${index}` : undefined\n\n/**\n * Id of the currently highlighted option, for the combobox's\n * `aria-activedescendant`. Undefined when there is no list to point at.\n */\nconst activeOptionId = computed((): string | undefined =>\n filteredVariables.value.length\n ? optionId(selectedVariableIndex.value)\n : undefined,\n)\n\nconst selectVariable = (variableKey: string): void => {\n emit('select', variableKey)\n}\n\n// Narrowing the query shrinks the list; keep the highlight in range so both the\n// visible selection and `aria-activedescendant` never reference a dropped option.\nwatch(\n () => filteredVariables.value.length,\n (length) => {\n if (selectedVariableIndex.value > length - 1) {\n selectedVariableIndex.value = Math.max(0, length - 1)\n }\n },\n)\n\nconst handleArrowKey = (direction: 'up' | 'down') => {\n const offset = direction === 'up' ? -1 : 1\n const length = filteredVariables.value.length\n\n if (length === 0) {\n return\n }\n\n selectedVariableIndex.value =\n (selectedVariableIndex.value + offset + length) % length\n}\n\nconst handleSelect = () => {\n if (selectedVariableIndex.value >= 0) {\n const selectedVariable =\n filteredVariables.value[selectedVariableIndex.value]\n if (selectedVariable) {\n selectVariable(selectedVariable.key)\n }\n }\n}\n\ndefineExpose({\n handleArrowKey,\n handleSelect,\n activeOptionId,\n})\n\nonMounted(() => {\n // Reset selected index to the first item when dropdown opens\n selectedVariableIndex.value = 0\n})\n\nconst dropdownStyle = computed<CSSProperties>(() => {\n return {\n left: (dropdownPosition?.left ?? 0) + 'px',\n // Add a 5px offset from the editor\n top: (dropdownPosition?.top ?? 0) + 5 + 'px',\n }\n})\n\nonClickOutside(\n dropdownRef,\n () => {\n isOpen.value = false\n emit('close')\n },\n { ignore: [dropdownRef] },\n)\n</script>\n<template>\n <ScalarTeleport\n v-if=\"isOpen\"\n class=\"scalar-client\">\n <div\n ref=\"dropdownRef\"\n class=\"custom-scroll z-context fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75\"\n :style=\"dropdownStyle\"\n @mousedown.prevent>\n <!--\n Always rendered (even with no matches) so the combobox's `aria-controls`\n always resolves to a real listbox; an empty list simply has no options.\n -->\n <ul\n :id=\"listboxId\"\n :aria-label=\"\n translate(\n 'apiClient.environmentVariablesDropdown.variableSuggestions',\n )\n \"\n class=\"gap-1/2 flex flex-col\"\n role=\"listbox\">\n <template\n v-for=\"(item, index) in filteredVariables\"\n :key=\"`${item.kind}-${item.key}`\">\n <li\n :id=\"optionId(index)\"\n :aria-selected=\"index === selectedVariableIndex\"\n class=\"font-code text-xxs hover:bg-b-3 flex h-8 cursor-pointer items-center justify-between gap-1.5 rounded p-1.5 transition-colors duration-150\"\n :class=\"{ 'bg-b-3': index === selectedVariableIndex }\"\n role=\"option\"\n @click=\"selectVariable(item.key)\">\n <div class=\"flex items-center gap-2 whitespace-nowrap\">\n <span\n v-if=\"item.kind === 'env'\"\n class=\"h-2.25 w-2.25 min-w-2.25 rounded-full\"\n :style=\"{\n backgroundColor: environment?.color,\n }\" />\n <span\n v-else\n class=\"text-c-3 bg-b-3 flex h-4.5 min-w-4.5 items-center justify-center rounded px-0.5 font-sans text-[9px] font-semibold\">\n fn\n </span>\n {{ item.key }}\n </div>\n <span\n class=\"max-w-[9rem] overflow-hidden text-right text-ellipsis whitespace-nowrap\">\n {{ item.secondary }}\n </span>\n </li>\n </template>\n </ul>\n <ScalarButton\n v-if=\"!filteredVariables.length\"\n class=\"font-code text-xxs bg-b-inherit hover:bg-b-3 flex h-8 w-full justify-start gap-2 px-1.5 transition-colors duration-150\"\n variant=\"outlined\"\n @click=\"redirectToEnvironment\">\n <ScalarIconPlus class=\"size-3\" />{{\n translate('apiClient.environmentVariablesDropdown.addVariable')\n }}\n </ScalarButton>\n <!-- Backdrop for the dropdown -->\n <div\n class=\"bg-b-1 brightness-lifted absolute inset-0 -z-1 rounded shadow-lg\" />\n </div>\n </ScalarTeleport>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnvironmentVariablesDropdown.vue.script.js","names":[],"sources":["../../../../../src/v2/features/environments/components/EnvironmentVariablesDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarTeleport } from '@scalar/components/teleport'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { POPULAR_CONTEXT_FUNCTION_KEYS } from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { onClickOutside } from '@vueuse/core'\nimport Fuse from 'fuse.js'\nimport { computed, onMounted, ref, watch, type CSSProperties } from 'vue'\n\nimport { useLocalization } from '@/v2/features/localization'\n\nconst {\n query,\n environment,\n dropdownPosition,\n contextFunctionItems = [],\n listboxId,\n} = defineProps<{\n query: string\n environment?: XScalarEnvironment\n dropdownPosition?: { left: number; top: number }\n /** Runtime placeholders such as `{{$guid}}`, shown with environment variables */\n contextFunctionItems?: { key: string; description: string }[]\n /**\n * Id for the `role=\"listbox\"` element. When set, each option also receives a\n * stable id so the owning combobox input can reference the active option via\n * `aria-activedescendant` (W3C combobox pattern).\n */\n listboxId?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'select', variable: string): void\n (e: 'redirect'): void\n /**\n * Fired when the user dismisses the panel by clicking outside. The owning\n * combobox needs this to clear its `aria-expanded`/`aria-controls` state,\n * which would otherwise keep pointing at a listbox that is no longer mounted.\n */\n (e: 'close'): void\n}>()\n\nconst { translate } = useLocalization()\n\ntype DropdownRow =\n | { kind: 'env'; key: string; secondary: string }\n | { kind: 'context'; key: string; secondary: string }\n\nconst isOpen = ref(true)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst selectedVariableIndex = ref(0)\n\nconst redirectToEnvironment = () => {\n emit('redirect')\n isOpen.value = false\n // The panel is gone, so tell the combobox to drop its aria-expanded /\n // aria-controls — otherwise they keep pointing at a dismissed listbox.\n emit('close')\n}\n\n/** Normalize the variables to have a name and value */\nconst normalizedVariables = computed(() =>\n (environment?.variables ?? []).map((v) => ({\n key: v.name,\n value: typeof v.value === 'string' ? v.value : v.value.default,\n })),\n)\n\nconst contextRows = computed((): DropdownRow[] =>\n contextFunctionItems.map((item) => ({\n kind: 'context',\n key: item.key,\n secondary: item.description,\n })),\n)\n\nconst envRows = computed((): DropdownRow[] =>\n normalizedVariables.value\n .filter(({ key, value }) => key !== '' || value !== '')\n .map(({ key, value }) => ({\n kind: 'env' as const,\n key,\n secondary: value,\n })),\n)\n\ntype FuseRow = DropdownRow & { fuseText: string }\n\nconst envFuseSource = computed((): FuseRow[] =>\n envRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst contextFuseSource = computed((): FuseRow[] =>\n contextRows.value.map((row) => ({\n ...row,\n fuseText: `${row.key} ${row.secondary}`,\n })),\n)\n\nconst fuseEnv = computed(\n () =>\n new Fuse(envFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst fuseContext = computed(\n () =>\n new Fuse(contextFuseSource.value, {\n keys: ['fuseText'],\n threshold: 0.35,\n }),\n)\n\nconst popularContextRows = computed((): DropdownRow[] => {\n const byKey = new Map(contextFunctionItems.map((c) => [c.key, c]))\n return POPULAR_CONTEXT_FUNCTION_KEYS.flatMap((key) => {\n const item = byKey.get(key)\n return item\n ? [\n {\n kind: 'context' as const,\n key: item.key,\n secondary: item.description,\n },\n ]\n : []\n })\n})\n\nconst DROPDOWN_LIMIT = 12\n\nconst filteredVariables = computed((): DropdownRow[] => {\n if (!query.trim()) {\n const envSlice = envRows.value.slice(-4)\n return [...envSlice, ...popularContextRows.value]\n }\n\n const q = query.trim()\n const envMatches = fuseEnv.value\n .search(q, { limit: DROPDOWN_LIMIT })\n .map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n\n const remaining = DROPDOWN_LIMIT - envMatches.length\n const contextMatches =\n remaining > 0\n ? fuseContext.value.search(q, { limit: remaining }).map((res) => {\n const { kind, key, secondary } = res.item\n return { kind, key, secondary }\n })\n : []\n\n return [...envMatches, ...contextMatches]\n})\n\nconst optionId = (index: number): string | undefined =>\n listboxId ? `${listboxId}-option-${index}` : undefined\n\n/**\n * Id of the currently highlighted option, for the combobox's\n * `aria-activedescendant`. Undefined when there is no list to point at.\n */\nconst activeOptionId = computed((): string | undefined =>\n filteredVariables.value.length\n ? optionId(selectedVariableIndex.value)\n : undefined,\n)\n\nconst selectVariable = (variableKey: string): void => {\n emit('select', variableKey)\n}\n\n// Narrowing the query shrinks the list; keep the highlight in range so both the\n// visible selection and `aria-activedescendant` never reference a dropped option.\nwatch(\n () => filteredVariables.value.length,\n (length) => {\n if (selectedVariableIndex.value > length - 1) {\n selectedVariableIndex.value = Math.max(0, length - 1)\n }\n },\n)\n\nconst handleArrowKey = (direction: 'up' | 'down') => {\n const offset = direction === 'up' ? -1 : 1\n const length = filteredVariables.value.length\n\n if (length === 0) {\n return\n }\n\n selectedVariableIndex.value =\n (selectedVariableIndex.value + offset + length) % length\n}\n\nconst handleSelect = () => {\n if (selectedVariableIndex.value >= 0) {\n const selectedVariable =\n filteredVariables.value[selectedVariableIndex.value]\n if (selectedVariable) {\n selectVariable(selectedVariable.key)\n }\n }\n}\n\ndefineExpose({\n handleArrowKey,\n handleSelect,\n activeOptionId,\n})\n\nonMounted(() => {\n // Reset selected index to the first item when dropdown opens\n selectedVariableIndex.value = 0\n})\n\nconst dropdownStyle = computed<CSSProperties>(() => {\n return {\n left: (dropdownPosition?.left ?? 0) + 'px',\n // Add a 5px offset from the editor\n top: (dropdownPosition?.top ?? 0) + 5 + 'px',\n }\n})\n\nonClickOutside(\n dropdownRef,\n () => {\n isOpen.value = false\n emit('close')\n },\n { ignore: [dropdownRef] },\n)\n</script>\n<template>\n <ScalarTeleport\n v-if=\"isOpen\"\n class=\"scalar-client\">\n <div\n ref=\"dropdownRef\"\n class=\"custom-scroll z-context bg-b-1 dark:bg-b-1.5 fixed top-0 left-0 flex max-h-[60svh] w-56 flex-col rounded border p-0.75 shadow-lg\"\n :style=\"dropdownStyle\"\n @mousedown.prevent>\n <!--\n Always rendered (even with no matches) so the combobox's `aria-controls`\n always resolves to a real listbox; an empty list simply has no options.\n -->\n <ul\n :id=\"listboxId\"\n :aria-label=\"\n translate(\n 'apiClient.environmentVariablesDropdown.variableSuggestions',\n )\n \"\n class=\"gap-1/2 flex flex-col\"\n role=\"listbox\">\n <template\n v-for=\"(item, index) in filteredVariables\"\n :key=\"`${item.kind}-${item.key}`\">\n <li\n :id=\"optionId(index)\"\n :aria-selected=\"index === selectedVariableIndex\"\n class=\"font-code text-xxs hover:bg-b-3 flex h-8 cursor-pointer items-center justify-between gap-1.5 rounded p-1.5 transition-colors duration-150\"\n :class=\"{ 'bg-b-3': index === selectedVariableIndex }\"\n role=\"option\"\n @click=\"selectVariable(item.key)\">\n <div class=\"flex items-center gap-2 whitespace-nowrap\">\n <span\n v-if=\"item.kind === 'env'\"\n class=\"h-2.25 w-2.25 min-w-2.25 rounded-full\"\n :style=\"{\n backgroundColor: environment?.color,\n }\" />\n <span\n v-else\n class=\"text-c-3 bg-b-3 flex h-4.5 min-w-4.5 items-center justify-center rounded px-0.5 font-sans text-[9px] font-semibold\">\n fn\n </span>\n {{ item.key }}\n </div>\n <span\n class=\"max-w-[9rem] overflow-hidden text-right text-ellipsis whitespace-nowrap\">\n {{ item.secondary }}\n </span>\n </li>\n </template>\n </ul>\n <ScalarButton\n v-if=\"!filteredVariables.length\"\n class=\"font-code text-xxs bg-b-inherit hover:bg-b-3 flex h-8 w-full justify-start gap-2 px-1.5 transition-colors duration-150\"\n variant=\"outlined\"\n @click=\"redirectToEnvironment\">\n <ScalarIconPlus class=\"size-3\" />{{\n translate('apiClient.environmentVariablesDropdown.addVariable')\n }}\n </ScalarButton>\n </div>\n </ScalarTeleport>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/features/localization/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAA6B,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/features/localization/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAA6B,MAAM,6BAA6B,CAAA;AAYnG,+CAA+C;AAC/C,MAAM,MAAM,uBAAuB,GAAG;KACnC,KAAK,IAAI,MAAM,qBAAqB,GAAG,aAAa,KAAK,IAAI,MAAM,qBAAqB,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE;CAC5G,CAAC,MAAM,qBAAqB,CAAC,CAAA;AAE9B,mFAAmF;AACnF,eAAO,MAAQ,mBAAmB;eACnB,qBAAqB;;eAArB,qBAAqB;6BADA,eAAe;eACpC,qBAAqB;6BADiB,mBAAmB;eACzD,qBAAqB;;eAArB,qBAAqB;EAiBlC,CAAA"}
|
|
@@ -5,6 +5,7 @@ import { fr } from "./locales/fr.js";
|
|
|
5
5
|
import { pt } from "./locales/pt.js";
|
|
6
6
|
import { ru } from "./locales/ru.js";
|
|
7
7
|
import { zhCn } from "./locales/zh-cn.js";
|
|
8
|
+
import { zhTw } from "./locales/zh-tw.js";
|
|
8
9
|
import { en } from "./translations.js";
|
|
9
10
|
import { createLocalization } from "@scalar/localization";
|
|
10
11
|
//#region src/v2/features/localization/index.ts
|
|
@@ -17,6 +18,7 @@ var { provideLocalization, useLocalization, resolveLocalization } = createLocali
|
|
|
17
18
|
fr: { apiClient: fr },
|
|
18
19
|
de: { apiClient: de },
|
|
19
20
|
"zh-CN": { apiClient: zhCn },
|
|
21
|
+
"zh-TW": { apiClient: zhTw },
|
|
20
22
|
ar: { apiClient: ar },
|
|
21
23
|
pt: { apiClient: pt }
|
|
22
24
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/v2/features/localization/index.ts"],"sourcesContent":["import { createLocalization } from '@scalar/localization'\nimport type { ApiClientTranslations, ApiReferenceBuiltInLocale } from '@scalar/types/api-reference'\n\nimport { ar } from './locales/ar'\nimport { de } from './locales/de'\nimport { es } from './locales/es'\nimport { fr } from './locales/fr'\nimport { pt } from './locales/pt'\nimport { ru } from './locales/ru'\nimport { zhCn } from './locales/zh-cn'\nimport { en } from './translations'\n\n/** Dot-path keys for API Client UI strings. */\nexport type ApiClientTranslationKey = {\n [Group in keyof ApiClientTranslations]: `apiClient.${Group}.${keyof ApiClientTranslations[Group] & string}`\n}[keyof ApiClientTranslations]\n\n/** API Client localization, also consumable beneath the API Reference provider. */\nexport const { provideLocalization, useLocalization, resolveLocalization } = createLocalization<\n { apiClient: ApiClientTranslations },\n ApiClientTranslationKey\n>({\n localeTranslations: {\n en: { apiClient: en },\n ru: { apiClient: ru },\n es: { apiClient: es },\n fr: { apiClient: fr },\n de: { apiClient: de },\n 'zh-CN': { apiClient: zhCn },\n ar: { apiClient: ar },\n pt: { apiClient: pt },\n } satisfies Record<ApiReferenceBuiltInLocale, { apiClient: ApiClientTranslations }>,\n defaultLocale: 'en',\n rtlLocales: new Set(['ar', 'fa', 'he', 'ur']),\n logPrefix: '[@scalar/api-client]',\n})\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/v2/features/localization/index.ts"],"sourcesContent":["import { createLocalization } from '@scalar/localization'\nimport type { ApiClientTranslations, ApiReferenceBuiltInLocale } from '@scalar/types/api-reference'\n\nimport { ar } from './locales/ar'\nimport { de } from './locales/de'\nimport { es } from './locales/es'\nimport { fr } from './locales/fr'\nimport { pt } from './locales/pt'\nimport { ru } from './locales/ru'\nimport { zhCn } from './locales/zh-cn'\nimport { zhTw } from './locales/zh-tw'\nimport { en } from './translations'\n\n/** Dot-path keys for API Client UI strings. */\nexport type ApiClientTranslationKey = {\n [Group in keyof ApiClientTranslations]: `apiClient.${Group}.${keyof ApiClientTranslations[Group] & string}`\n}[keyof ApiClientTranslations]\n\n/** API Client localization, also consumable beneath the API Reference provider. */\nexport const { provideLocalization, useLocalization, resolveLocalization } = createLocalization<\n { apiClient: ApiClientTranslations },\n ApiClientTranslationKey\n>({\n localeTranslations: {\n en: { apiClient: en },\n ru: { apiClient: ru },\n es: { apiClient: es },\n fr: { apiClient: fr },\n de: { apiClient: de },\n 'zh-CN': { apiClient: zhCn },\n 'zh-TW': { apiClient: zhTw },\n ar: { apiClient: ar },\n pt: { apiClient: pt },\n } satisfies Record<ApiReferenceBuiltInLocale, { apiClient: ApiClientTranslations }>,\n defaultLocale: 'en',\n rtlLocales: new Set(['ar', 'fa', 'he', 'ur']),\n logPrefix: '[@scalar/api-client]',\n})\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAa,EAAE,qBAAqB,iBAAiB,wBAAwB,mBAG3E;CACA,oBAAoB;EAClB,IAAI,EAAE,WAAW,GAAG;EACpB,IAAI,EAAE,WAAW,GAAG;EACpB,IAAI,EAAE,WAAW,GAAG;EACpB,IAAI,EAAE,WAAW,GAAG;EACpB,IAAI,EAAE,WAAW,GAAG;EACpB,SAAS,EAAE,WAAW,KAAK;EAC3B,SAAS,EAAE,WAAW,KAAK;EAC3B,IAAI,EAAE,WAAW,GAAG;EACpB,IAAI,EAAE,WAAW,GAAG;CACtB;CACA,eAAe;CACf,4BAAY,IAAI,IAAI;EAAC;EAAM;EAAM;EAAM;CAAI,CAAC;CAC5C,WAAW;AACb,CAAC"}
|
|
@@ -104,6 +104,7 @@ export declare const ar: {
|
|
|
104
104
|
body: string;
|
|
105
105
|
};
|
|
106
106
|
requestBodyViewToggle: {
|
|
107
|
+
schema: string;
|
|
107
108
|
form: string;
|
|
108
109
|
raw: string;
|
|
109
110
|
fixBody: string;
|
|
@@ -335,6 +336,9 @@ export declare const ar: {
|
|
|
335
336
|
body: string;
|
|
336
337
|
};
|
|
337
338
|
requestParams: {
|
|
339
|
+
addParameter: string;
|
|
340
|
+
searchParameters: string;
|
|
341
|
+
noParametersFound: string;
|
|
338
342
|
clearAll: string;
|
|
339
343
|
clear: string;
|
|
340
344
|
clearOptionalParameters: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/localization/locales/ar.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/localization/locales/ar.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8YkB,CAAA"}
|
|
@@ -81,6 +81,7 @@ var ar = {
|
|
|
81
81
|
},
|
|
82
82
|
"requestBodyStructured": { "body": "الجسم" },
|
|
83
83
|
"requestBodyViewToggle": {
|
|
84
|
+
"schema": "المخطط",
|
|
84
85
|
"form": "نموذج",
|
|
85
86
|
"raw": "خام",
|
|
86
87
|
"fixBody": "صحح الجسم للتبديل إلى عرض النموذج"
|
|
@@ -300,6 +301,9 @@ var ar = {
|
|
|
300
301
|
"body": "الجسم"
|
|
301
302
|
},
|
|
302
303
|
"requestParams": {
|
|
304
|
+
"addParameter": "إضافة معلمة",
|
|
305
|
+
"searchParameters": "البحث عن المعلمات",
|
|
306
|
+
"noParametersFound": "لا توجد معلمات مطابقة",
|
|
303
307
|
"clearAll": "مسح الكل: {title}",
|
|
304
308
|
"clear": "مسح",
|
|
305
309
|
"clearOptionalParameters": "مسح المعاملات الاختيارية"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.js","names":[],"sources":["../../../../../src/v2/features/localization/locales/ar.ts"],"sourcesContent":["import type { ApiClientTranslations } from '@scalar/types/api-reference'\n\n/** Built-in API Client translations for ar. */\nexport const ar = {\n 'serverVariablesSelect': {\n 'selected': 'المحدد:',\n },\n 'serverVariablesTextbox': {\n 'value': 'قيمة',\n },\n 'sidebarListElementForm': {\n 'cancel': 'إلغاء',\n },\n 'requestBlock': {\n 'authentication': 'المصادقة',\n 'variables': 'المتغيرات',\n 'cookies': 'ملفات تعريف الارتباط',\n 'headers': 'الترويسات',\n 'queryParameters': 'معاملات الاستعلام',\n 'queryString': 'سلسلة الاستعلام',\n 'queryStringDescription':\n 'يوفر هذا المعامل سلسلة الاستعلام بأكملها، لذلك لا يمكن إضافة معاملات مسماة أخرى. تُرسل المعاملات المسماة الحالية بعده؛ وتُحفظ المفاتيح المكررة.',\n 'requestBody': 'جسم الطلب',\n 'requestName': 'اسم الطلب',\n 'label': 'الطلب: {name}',\n },\n 'responseBlock': {\n 'requestFailed': 'فشل الطلب',\n 'networkErrorHelp':\n 'تشمل الأسباب المحتملة قيود CORS أو مشكلة في الاتصال بالشبكة. راجع وحدة تحكم المتصفح للحصول على التفاصيل. إذا كانت CORS تمنع الطلب، فاضبط خادم API للسماح بهذا المصدر أو استخدم وكيلاً موثوقاً.',\n 'response': 'الاستجابة',\n 'requestHeaders': 'ترويسات الطلب',\n 'responseHeaders': 'ترويسات الاستجابة',\n 'body': 'الجسم',\n },\n 'codeInput': {\n 'required': 'مطلوب',\n 'exitHint': 'اضغط على {escape} ثم {tab} للخروج',\n },\n 'codeInputLite': {\n 'required': 'مطلوب',\n },\n 'dataTableInput': {\n 'clearValue': 'مسح القيمة',\n 'resetValue': 'إعادة التعيين إلى القيمة الافتراضية',\n 'showPassword': 'إظهار كلمة المرور',\n 'hidePassword': 'إخفاء كلمة المرور',\n },\n 'dataTableInputSelect': {\n 'value': 'القيمة',\n 'addValue': 'إضافة قيمة',\n },\n 'confirmationForm': {\n 'cancel': 'إلغاء',\n 'save': 'حفظ',\n },\n 'collapsibleSection': {\n 'collapsed': '(مطوي)',\n 'item': 'عنصر',\n 'items': 'عناصر',\n },\n 'modalClientContainer': {\n 'label': 'عميل API',\n },\n 'serverDropdown': {\n 'server': 'الخادم:',\n 'addServer': 'إضافة خادم',\n 'updateServers': 'تحديث الخوادم',\n 'unknownServer': 'خادم غير معروف',\n },\n 'sidebar': {\n 'search': 'بحث',\n },\n 'sidebarMenu': {\n 'settings': 'الإعدادات',\n },\n 'sidebarToggle': {\n 'hide': 'إخفاء الشريط الجانبي',\n 'show': 'إظهار الشريط الجانبي',\n },\n 'environmentsList': {\n 'addEnvironment': 'إضافة بيئة',\n },\n 'modal': {\n 'noDocumentSelected': 'لم يتم تحديد مستند',\n },\n 'operation': {\n 'selectAnOperationToViewDetails': 'حدد عملية لعرض التفاصيل',\n },\n 'header': {\n 'operationSettings': 'إعدادات العملية',\n 'closeClient': 'إغلاق العميل',\n },\n 'openApiClientButton': {\n 'openAPIClient': 'فتح عميل API',\n },\n 'requestBody': {\n 'noBody': 'بدون جسم',\n 'delete': 'حذف',\n 'selectFile': 'اختيار ملف',\n 'multipartForm': 'نموذج متعدد الأجزاء',\n 'formUrlEncoded': 'نموذج بترميز URL',\n 'binaryFile': 'ملف ثنائي',\n 'other': 'آخر',\n 'none': 'لا شيء',\n },\n 'requestBodyStructured': {\n 'body': 'الجسم',\n },\n 'requestBodyViewToggle': {\n 'form': 'نموذج',\n 'raw': 'خام',\n 'fixBody': 'صحح الجسم للتبديل إلى عرض النموذج',\n },\n 'requestCodeSnippet': {\n unavailable: 'لا يوجد نموذج تعليمات برمجية متاح لهذا المثال.',\n 'codeSnippet': 'مقتطف برمجي',\n },\n 'requestTable': {\n 'enabled': 'مفعّل',\n 'key': 'المفتاح',\n 'value': 'القيمة',\n },\n 'requestTableRow': {\n 'key': 'المفتاح',\n 'value': 'القيمة',\n 'delete': 'حذف',\n 'selectFile': 'اختيار ملف',\n 'globalCookieHint': 'تتم مشاركة ملفات تعريف الارتباط العامة عبر مساحة العمل بأكملها. انقر للانتقال إليها.',\n 'readOnlyHint': 'هذه الخاصية للقراءة فقط. لتغييرها، يجب تجاوز قيمتها أو تعطيلها باستخدام مربع الاختيار.',\n 'include': 'تضمين {name} في الطلب',\n 'keyLabel': 'مفتاح {name}',\n 'valueLabel': 'قيمة {name}',\n 'deleteRow': 'حذف {name}',\n 'row': 'صف',\n },\n 'requestTableTooltip': {\n 'min': 'الحد الأدنى:',\n 'max': 'الحد الأقصى:',\n 'default': 'الافتراضي:',\n 'invalid': 'الإدخال غير صالح',\n 'moreInformation': 'مزيد من المعلومات',\n },\n 'headers': {\n 'headerKey': 'مفتاح الترويسة',\n 'headerValue': 'قيمة الترويسة',\n 'noHeaders': 'لا توجد ترويسات',\n },\n 'responseBody': {\n 'binaryFile': 'ملف ثنائي',\n },\n 'responseBodyPreview': {\n 'previewUnavailable': 'المعاينة غير متاحة',\n },\n 'responseBodyStreaming': {\n 'body': 'الجسم',\n 'listening': 'جارٍ الاستماع…',\n 'cancel': 'إلغاء',\n },\n 'responseBodyToggle': {\n 'preview': 'معاينة',\n 'raw': 'خام',\n },\n 'responseBodyVirtual': {\n 'body': 'الجسم',\n 'largeBodyHint': 'جسم هذه الاستجابة كبير جدًا ولا يمكن تمييز بنيته البرمجية.',\n },\n 'responseCookies': {\n 'cookies': 'ملفات تعريف الارتباط',\n 'cookieName': 'اسم ملف تعريف الارتباط',\n 'cookieValue': 'قيمة ملف تعريف الارتباط',\n 'noCookies': 'لا توجد ملفات تعريف ارتباط',\n },\n 'responseEmpty': {\n 'roadmap': 'خارطة الطريق',\n 'poweredByScalarcom': 'بدعم من Scalar.com',\n 'getStarted': 'البدء',\n 'newRequest': 'طلب جديد',\n 'sendRequest': 'إرسال الطلب',\n 'version': 'تطبيق Scalar V{version} التجريبي',\n },\n 'responseLoadingOverlay': {\n 'cancel': 'إلغاء',\n },\n 'addressBar': {\n 'path': 'المسار',\n 'copyUrl': 'نسخ الرابط',\n 'send': 'إرسال',\n 'sendRequest': 'إرسال طلب {method} إلى {url}',\n 'duplicateRequest': 'يوجد بالفعل طلب {method} إلى {path} في هذا المستند',\n 'urlPlaceholder': 'أدخل رابطًا',\n 'webhookUrlPlaceholder': 'أدخل رابط Webhook الكامل، مثل https://example.com/hook',\n },\n 'addressBarHistory': {\n 'requestHistory': 'سجل الطلبات',\n },\n 'environmentSelector': {\n 'noEnvironment': 'بدون بيئة',\n 'notAvailableInThisContext': 'غير متاح في هذا السياق',\n 'environmentHint': 'تتيح لك البيئات إدارة متغيرات مثل مفاتيح API والروابط الأساسية عبر سياقات مختلفة.',\n 'add': 'إضافة بيئة',\n 'select': 'اختيار بيئة',\n 'unavailable': '{name} (غير متاح)',\n 'current': 'البيئة الحالية: {name}',\n },\n 'deleteRequestAuthModal': {\n 'deleteSecurityScheme': 'حذف مخطط الأمان',\n 'cancel': 'إلغاء',\n 'delete': 'حذف',\n 'confirmation': 'لا يمكن التراجع عن هذا الإجراء. أنت على وشك حذف مخطط الأمان {name} من المجموعة.',\n },\n 'oauth2': {\n deviceAuthorizationUrl: 'رابط تفويض الجهاز',\n deviceVerificationPrompt: 'افتح صفحة التحقق وأدخل هذا الرمز:',\n waitingForAuthorization: 'في انتظار التفويض…',\n cancelDeviceAuthorization: 'إلغاء',\n\n 'accessToken': 'رمز الوصول',\n 'refreshUrl': 'رابط التجديد',\n 'refresh': 'تحديث',\n 'authUrl': 'رابط المصادقة',\n 'tokenUrl': 'رابط الرمز',\n 'redirectUrl': 'رابط إعادة التوجيه',\n 'username': 'اسم المستخدم',\n 'password': 'كلمة المرور',\n 'clientID': 'معرّف العميل',\n 'clientSecret': 'سر العميل',\n 'usePKCE': 'استخدام PKCE',\n 'credentialsLocation': 'موضع بيانات الاعتماد',\n 'authorize': 'تخويل',\n 'clear': 'مسح',\n 'failedToauthorize': 'فشل التخويل',\n 'failedToRefreshToken': 'فشل تجديد الرمز',\n 'optionalRedirectUrl': 'رابط إعادة توجيه اختياري',\n 'clearTokens': 'مسح الرموز',\n 'resetDiscovery': 'إعادة تعيين الاكتشاف',\n },\n 'oauthScopesAddModal': {\n 'name': 'الاسم:',\n 'description': 'الوصف:',\n 'readUserData': 'قراءة بيانات المستخدم',\n 'edit': 'تعديل النطاق',\n 'add': 'إضافة نطاق',\n 'save': 'حفظ',\n 'required': 'اسم النطاق مطلوب.',\n 'duplicate': 'يوجد بالفعل نطاق باسم «{name}».',\n },\n 'oauthScopesInput': {\n 'noScopesDefined': 'لم يتم تحديد نطاقات',\n 'addScope': 'إضافة نطاق',\n 'deselectAll': 'إلغاء تحديد الكل',\n 'selectAll': 'تحديد الكل',\n 'selectedScopes': 'النطاقات المحددة: {count} / {total}',\n 'editScope': 'تعديل {name}',\n 'deleteScope': 'حذف {name}',\n 'selectScope': 'تحديد النطاق {name}',\n },\n 'openIdConnect': {\n 'discoveryUrl': 'رابط الاكتشاف',\n 'fetchConfiguration': 'جلب الإعدادات',\n 'failedToFetchConfiguration': 'فشل جلب إعدادات OpenID Connect',\n },\n 'requestAuthDataTable': {\n 'noauthenticationSelected': 'لم يتم اختيار طريقة مصادقة',\n },\n 'requestAuthTab': {\n 'token': 'الرمز',\n 'bearerToken': 'رمز Bearer',\n 'getAToken': 'الحصول على رمز',\n 'refresh': 'تحديث',\n 'username': 'اسم المستخدم',\n 'password': 'كلمة المرور',\n 'name': 'الاسم',\n 'value': 'القيمة',\n 'cancel': 'إلغاء',\n 'authorize': 'تخويل',\n 'unsupportedCredentials': 'لا يرسل عميل المتصفح بيانات الاعتماد لمخطط أمان AsyncAPI هذا.',\n 'authorizeVia': 'التخويل عبر {name}',\n 'unsupportedType': 'نوع مخطط الأمان {type} غير مدعوم بعد.',\n 'missingType': 'لم يتم تحديد نوع مخطط الأمان. تحقق من مستند {type} أو إعدادات المصادقة.',\n 'failedToauthorize': 'فشل التخويل',\n 'failedToRefresh': 'فشل التحديث',\n 'configure': 'إعداد {name}',\n 'mutualTlsHint': 'تستخدم مصادقة TLS المتبادلة شهادة عميل تُقدَّم أثناء مصافحة TLS، لذلك لا يلزم إدخال أي شيء هنا.',\n },\n 'commandActionForm': {\n 'continue': 'متابعة',\n },\n 'environment': {\n 'thisIsTheActiveEnvironment': 'هذه هي البيئة النشطة',\n 'active': 'نشط',\n 'editEnvironment': 'تعديل البيئة',\n 'deleteEnvironment': 'حذف البيئة',\n },\n 'environmentCreateModal': {\n 'environmentName': 'اسم البيئة',\n 'thisEnvironmentNameIsAlreadyInUse': 'اسم البيئة هذا مستخدم بالفعل.',\n 'update': 'تحديث البيئة',\n 'add': 'إضافة بيئة',\n },\n 'environmentDeleteModal': {\n 'cancel': 'إلغاء',\n 'deleteEnvironment': 'حذف البيئة',\n 'deleteConfirmation': 'هل أنت متأكد من حذف هذه البيئة؟ لا يمكن التراجع عن هذا الإجراء.',\n 'title': 'حذف {name}',\n },\n 'environmentVariablesDropdown': {\n 'variableSuggestions': 'اقتراحات المتغيرات',\n 'addVariable': 'إضافة متغير',\n },\n 'environmentVariablesTable': {\n 'name': 'الاسم',\n 'value': 'القيمة',\n 'actions': 'الإجراءات',\n 'environmentVariableName': 'اسم متغير البيئة',\n 'environmentVariableValue': 'قيمة متغير البيئة',\n },\n 'documentSearchModal': {\n 'documentSearch': 'البحث في المستند',\n 'documentSearchResults': 'نتائج البحث في المستند',\n 'navigate': '↑↓ تنقّل',\n 'select': '⏎ تحديد',\n 'keyboardInstructions': 'اضغط على السهم لأعلى أو لأسفل للتنقل، وعلى Enter للتحديد، واكتب لتصفية النتائج',\n },\n 'searchResult': {\n 'httpMethod': 'طريقة HTTP:',\n 'path': 'المسار:',\n 'description': 'الوصف:',\n 'heading': 'عنوان',\n 'operation': 'عملية',\n 'tag': 'وسم',\n },\n 'sectionFilter': {\n 'all': 'الكل',\n 'auth': 'المصادقة',\n 'variables': 'المتغيرات',\n 'cookies': 'ملفات تعريف الارتباط',\n 'headers': 'الترويسات',\n 'query': 'الاستعلام',\n 'body': 'الجسم',\n },\n 'requestParams': {\n 'clearAll': 'مسح الكل: {title}',\n 'clear': 'مسح',\n 'clearOptionalParameters': 'مسح المعاملات الاختيارية',\n },\n 'responseBodyDownload': {\n 'download': 'تنزيل جسم الاستجابة',\n 'label': 'تنزيل',\n 'body': 'جسم الاستجابة',\n },\n 'responseMetaInformation': {\n 'duration': 'معلومات الاستجابة، المدة:',\n 'size': '، الحجم:',\n 'status': '، الحالة:',\n },\n 'authSelector': {\n 'selectedType': 'نوع المصادقة المحدد: {type}',\n 'multipleTypes': 'تم تحديد عدة أنواع مصادقة',\n 'selectType': 'اختيار نوع المصادقة',\n 'optional': 'اختياري',\n 'required': 'مطلوب',\n 'deleteScheme': 'حذف {name}',\n 'requiredGroup': 'المصادقة المطلوبة',\n 'availableGroup': 'المصادقة المتاحة',\n 'addGroup': 'إضافة مصادقة جديدة',\n },\n 'operationBlock': {\n 'webhookUrlRequired': 'رابط Webhook مطلوب. أدخل وجهة أولًا.',\n 'pathParametersRequired': 'يجب أن تكون لمعاملات المسار قيم.',\n 'forbiddenMethod': 'لا يمكن لواجهة Fetch API إرسال طلبات {method}.',\n },\n 'dataTableCheckbox': {\n 'toggle': 'تبديل',\n },\n 'pillTooltipHost': {\n 'computedAtExecution': 'تُحسب عند تنفيذ الطلب',\n 'noValue': 'لا توجد قيمة',\n },\n 'authOptions': {\n oauth2DeviceAuthorization: 'تفويض الجهاز عبر OAuth2',\n 'apiKeyCookie': 'مفتاح API في ملفات تعريف الارتباط',\n 'apiKeyHeader': 'مفتاح API في الترويسات',\n 'apiKeyQuery': 'مفتاح API في معاملات الاستعلام',\n 'httpBasic': 'HTTP Basic',\n 'httpBearer': 'HTTP Bearer',\n 'oauth2Implicit': 'التدفق الضمني لـ OAuth2',\n 'oauth2Password': 'تدفق كلمة المرور لـ OAuth2',\n 'oauth2ClientCredentials': 'بيانات اعتماد العميل لـ OAuth2',\n 'oauth2AuthorizationFlow': 'رمز تخويل OAuth2',\n },\n 'deleteSidebarListElement': {\n 'delete': 'حذف {name}',\n },\n 'deleteModal': {\n 'delete': 'حذف {name}',\n },\n} satisfies ApiClientTranslations\n"],"mappings":";;AAGA,IAAa,KAAK;CAChB,yBAAyB,EACvB,YAAY,UACd;CACA,0BAA0B,EACxB,SAAS,OACX;CACA,0BAA0B,EACxB,UAAU,QACZ;CACA,gBAAgB;EACd,kBAAkB;EAClB,aAAa;EACb,WAAW;EACX,WAAW;EACX,mBAAmB;EACnB,eAAe;EACf,0BACE;EACF,eAAe;EACf,eAAe;EACf,SAAS;CACX;CACA,iBAAiB;EACf,iBAAiB;EACjB,oBACE;EACF,YAAY;EACZ,kBAAkB;EAClB,mBAAmB;EACnB,QAAQ;CACV;CACA,aAAa;EACX,YAAY;EACZ,YAAY;CACd;CACA,iBAAiB,EACf,YAAY,QACd;CACA,kBAAkB;EAChB,cAAc;EACd,cAAc;EACd,gBAAgB;EAChB,gBAAgB;CAClB;CACA,wBAAwB;EACtB,SAAS;EACT,YAAY;CACd;CACA,oBAAoB;EAClB,UAAU;EACV,QAAQ;CACV;CACA,sBAAsB;EACpB,aAAa;EACb,QAAQ;EACR,SAAS;CACX;CACA,wBAAwB,EACtB,SAAS,WACX;CACA,kBAAkB;EAChB,UAAU;EACV,aAAa;EACb,iBAAiB;EACjB,iBAAiB;CACnB;CACA,WAAW,EACT,UAAU,MACZ;CACA,eAAe,EACb,YAAY,YACd;CACA,iBAAiB;EACf,QAAQ;EACR,QAAQ;CACV;CACA,oBAAoB,EAClB,kBAAkB,aACpB;CACA,SAAS,EACP,sBAAsB,qBACxB;CACA,aAAa,EACX,kCAAkC,0BACpC;CACA,UAAU;EACR,qBAAqB;EACrB,eAAe;CACjB;CACA,uBAAuB,EACrB,iBAAiB,eACnB;CACA,eAAe;EACb,UAAU;EACV,UAAU;EACV,cAAc;EACd,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,SAAS;EACT,QAAQ;CACV;CACA,yBAAyB,EACvB,QAAQ,QACV;CACA,yBAAyB;EACvB,QAAQ;EACR,OAAO;EACP,WAAW;CACb;CACA,sBAAsB;EACpB,aAAa;EACb,eAAe;CACjB;CACA,gBAAgB;EACd,WAAW;EACX,OAAO;EACP,SAAS;CACX;CACA,mBAAmB;EACjB,OAAO;EACP,SAAS;EAC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"}
|
|
1
|
+
{"version":3,"file":"ar.js","names":[],"sources":["../../../../../src/v2/features/localization/locales/ar.ts"],"sourcesContent":["import type { ApiClientTranslations } from '@scalar/types/api-reference'\n\n/** Built-in API Client translations for ar. */\nexport const ar = {\n 'serverVariablesSelect': {\n 'selected': 'المحدد:',\n },\n 'serverVariablesTextbox': {\n 'value': 'قيمة',\n },\n 'sidebarListElementForm': {\n 'cancel': 'إلغاء',\n },\n 'requestBlock': {\n 'authentication': 'المصادقة',\n 'variables': 'المتغيرات',\n 'cookies': 'ملفات تعريف الارتباط',\n 'headers': 'الترويسات',\n 'queryParameters': 'معاملات الاستعلام',\n 'queryString': 'سلسلة الاستعلام',\n 'queryStringDescription':\n 'يوفر هذا المعامل سلسلة الاستعلام بأكملها، لذلك لا يمكن إضافة معاملات مسماة أخرى. تُرسل المعاملات المسماة الحالية بعده؛ وتُحفظ المفاتيح المكررة.',\n 'requestBody': 'جسم الطلب',\n 'requestName': 'اسم الطلب',\n 'label': 'الطلب: {name}',\n },\n 'responseBlock': {\n 'requestFailed': 'فشل الطلب',\n 'networkErrorHelp':\n 'تشمل الأسباب المحتملة قيود CORS أو مشكلة في الاتصال بالشبكة. راجع وحدة تحكم المتصفح للحصول على التفاصيل. إذا كانت CORS تمنع الطلب، فاضبط خادم API للسماح بهذا المصدر أو استخدم وكيلاً موثوقاً.',\n 'response': 'الاستجابة',\n 'requestHeaders': 'ترويسات الطلب',\n 'responseHeaders': 'ترويسات الاستجابة',\n 'body': 'الجسم',\n },\n 'codeInput': {\n 'required': 'مطلوب',\n 'exitHint': 'اضغط على {escape} ثم {tab} للخروج',\n },\n 'codeInputLite': {\n 'required': 'مطلوب',\n },\n 'dataTableInput': {\n 'clearValue': 'مسح القيمة',\n 'resetValue': 'إعادة التعيين إلى القيمة الافتراضية',\n 'showPassword': 'إظهار كلمة المرور',\n 'hidePassword': 'إخفاء كلمة المرور',\n },\n 'dataTableInputSelect': {\n 'value': 'القيمة',\n 'addValue': 'إضافة قيمة',\n },\n 'confirmationForm': {\n 'cancel': 'إلغاء',\n 'save': 'حفظ',\n },\n 'collapsibleSection': {\n 'collapsed': '(مطوي)',\n 'item': 'عنصر',\n 'items': 'عناصر',\n },\n 'modalClientContainer': {\n 'label': 'عميل API',\n },\n 'serverDropdown': {\n 'server': 'الخادم:',\n 'addServer': 'إضافة خادم',\n 'updateServers': 'تحديث الخوادم',\n 'unknownServer': 'خادم غير معروف',\n },\n 'sidebar': {\n 'search': 'بحث',\n },\n 'sidebarMenu': {\n 'settings': 'الإعدادات',\n },\n 'sidebarToggle': {\n 'hide': 'إخفاء الشريط الجانبي',\n 'show': 'إظهار الشريط الجانبي',\n },\n 'environmentsList': {\n 'addEnvironment': 'إضافة بيئة',\n },\n 'modal': {\n 'noDocumentSelected': 'لم يتم تحديد مستند',\n },\n 'operation': {\n 'selectAnOperationToViewDetails': 'حدد عملية لعرض التفاصيل',\n },\n 'header': {\n 'operationSettings': 'إعدادات العملية',\n 'closeClient': 'إغلاق العميل',\n },\n 'openApiClientButton': {\n 'openAPIClient': 'فتح عميل API',\n },\n 'requestBody': {\n 'noBody': 'بدون جسم',\n 'delete': 'حذف',\n 'selectFile': 'اختيار ملف',\n 'multipartForm': 'نموذج متعدد الأجزاء',\n 'formUrlEncoded': 'نموذج بترميز URL',\n 'binaryFile': 'ملف ثنائي',\n 'other': 'آخر',\n 'none': 'لا شيء',\n },\n 'requestBodyStructured': {\n 'body': 'الجسم',\n },\n 'requestBodyViewToggle': {\n 'schema': 'المخطط',\n 'form': 'نموذج',\n 'raw': 'خام',\n 'fixBody': 'صحح الجسم للتبديل إلى عرض النموذج',\n },\n 'requestCodeSnippet': {\n unavailable: 'لا يوجد نموذج تعليمات برمجية متاح لهذا المثال.',\n 'codeSnippet': 'مقتطف برمجي',\n },\n 'requestTable': {\n 'enabled': 'مفعّل',\n 'key': 'المفتاح',\n 'value': 'القيمة',\n },\n 'requestTableRow': {\n 'key': 'المفتاح',\n 'value': 'القيمة',\n 'delete': 'حذف',\n 'selectFile': 'اختيار ملف',\n 'globalCookieHint': 'تتم مشاركة ملفات تعريف الارتباط العامة عبر مساحة العمل بأكملها. انقر للانتقال إليها.',\n 'readOnlyHint': 'هذه الخاصية للقراءة فقط. لتغييرها، يجب تجاوز قيمتها أو تعطيلها باستخدام مربع الاختيار.',\n 'include': 'تضمين {name} في الطلب',\n 'keyLabel': 'مفتاح {name}',\n 'valueLabel': 'قيمة {name}',\n 'deleteRow': 'حذف {name}',\n 'row': 'صف',\n },\n 'requestTableTooltip': {\n 'min': 'الحد الأدنى:',\n 'max': 'الحد الأقصى:',\n 'default': 'الافتراضي:',\n 'invalid': 'الإدخال غير صالح',\n 'moreInformation': 'مزيد من المعلومات',\n },\n 'headers': {\n 'headerKey': 'مفتاح الترويسة',\n 'headerValue': 'قيمة الترويسة',\n 'noHeaders': 'لا توجد ترويسات',\n },\n 'responseBody': {\n 'binaryFile': 'ملف ثنائي',\n },\n 'responseBodyPreview': {\n 'previewUnavailable': 'المعاينة غير متاحة',\n },\n 'responseBodyStreaming': {\n 'body': 'الجسم',\n 'listening': 'جارٍ الاستماع…',\n 'cancel': 'إلغاء',\n },\n 'responseBodyToggle': {\n 'preview': 'معاينة',\n 'raw': 'خام',\n },\n 'responseBodyVirtual': {\n 'body': 'الجسم',\n 'largeBodyHint': 'جسم هذه الاستجابة كبير جدًا ولا يمكن تمييز بنيته البرمجية.',\n },\n 'responseCookies': {\n 'cookies': 'ملفات تعريف الارتباط',\n 'cookieName': 'اسم ملف تعريف الارتباط',\n 'cookieValue': 'قيمة ملف تعريف الارتباط',\n 'noCookies': 'لا توجد ملفات تعريف ارتباط',\n },\n 'responseEmpty': {\n 'roadmap': 'خارطة الطريق',\n 'poweredByScalarcom': 'بدعم من Scalar.com',\n 'getStarted': 'البدء',\n 'newRequest': 'طلب جديد',\n 'sendRequest': 'إرسال الطلب',\n 'version': 'تطبيق Scalar V{version} التجريبي',\n },\n 'responseLoadingOverlay': {\n 'cancel': 'إلغاء',\n },\n 'addressBar': {\n 'path': 'المسار',\n 'copyUrl': 'نسخ الرابط',\n 'send': 'إرسال',\n 'sendRequest': 'إرسال طلب {method} إلى {url}',\n 'duplicateRequest': 'يوجد بالفعل طلب {method} إلى {path} في هذا المستند',\n 'urlPlaceholder': 'أدخل رابطًا',\n 'webhookUrlPlaceholder': 'أدخل رابط Webhook الكامل، مثل https://example.com/hook',\n },\n 'addressBarHistory': {\n 'requestHistory': 'سجل الطلبات',\n },\n 'environmentSelector': {\n 'noEnvironment': 'بدون بيئة',\n 'notAvailableInThisContext': 'غير متاح في هذا السياق',\n 'environmentHint': 'تتيح لك البيئات إدارة متغيرات مثل مفاتيح API والروابط الأساسية عبر سياقات مختلفة.',\n 'add': 'إضافة بيئة',\n 'select': 'اختيار بيئة',\n 'unavailable': '{name} (غير متاح)',\n 'current': 'البيئة الحالية: {name}',\n },\n 'deleteRequestAuthModal': {\n 'deleteSecurityScheme': 'حذف مخطط الأمان',\n 'cancel': 'إلغاء',\n 'delete': 'حذف',\n 'confirmation': 'لا يمكن التراجع عن هذا الإجراء. أنت على وشك حذف مخطط الأمان {name} من المجموعة.',\n },\n 'oauth2': {\n deviceAuthorizationUrl: 'رابط تفويض الجهاز',\n deviceVerificationPrompt: 'افتح صفحة التحقق وأدخل هذا الرمز:',\n waitingForAuthorization: 'في انتظار التفويض…',\n cancelDeviceAuthorization: 'إلغاء',\n\n 'accessToken': 'رمز الوصول',\n 'refreshUrl': 'رابط التجديد',\n 'refresh': 'تحديث',\n 'authUrl': 'رابط المصادقة',\n 'tokenUrl': 'رابط الرمز',\n 'redirectUrl': 'رابط إعادة التوجيه',\n 'username': 'اسم المستخدم',\n 'password': 'كلمة المرور',\n 'clientID': 'معرّف العميل',\n 'clientSecret': 'سر العميل',\n 'usePKCE': 'استخدام PKCE',\n 'credentialsLocation': 'موضع بيانات الاعتماد',\n 'authorize': 'تخويل',\n 'clear': 'مسح',\n 'failedToauthorize': 'فشل التخويل',\n 'failedToRefreshToken': 'فشل تجديد الرمز',\n 'optionalRedirectUrl': 'رابط إعادة توجيه اختياري',\n 'clearTokens': 'مسح الرموز',\n 'resetDiscovery': 'إعادة تعيين الاكتشاف',\n },\n 'oauthScopesAddModal': {\n 'name': 'الاسم:',\n 'description': 'الوصف:',\n 'readUserData': 'قراءة بيانات المستخدم',\n 'edit': 'تعديل النطاق',\n 'add': 'إضافة نطاق',\n 'save': 'حفظ',\n 'required': 'اسم النطاق مطلوب.',\n 'duplicate': 'يوجد بالفعل نطاق باسم «{name}».',\n },\n 'oauthScopesInput': {\n 'noScopesDefined': 'لم يتم تحديد نطاقات',\n 'addScope': 'إضافة نطاق',\n 'deselectAll': 'إلغاء تحديد الكل',\n 'selectAll': 'تحديد الكل',\n 'selectedScopes': 'النطاقات المحددة: {count} / {total}',\n 'editScope': 'تعديل {name}',\n 'deleteScope': 'حذف {name}',\n 'selectScope': 'تحديد النطاق {name}',\n },\n 'openIdConnect': {\n 'discoveryUrl': 'رابط الاكتشاف',\n 'fetchConfiguration': 'جلب الإعدادات',\n 'failedToFetchConfiguration': 'فشل جلب إعدادات OpenID Connect',\n },\n 'requestAuthDataTable': {\n 'noauthenticationSelected': 'لم يتم اختيار طريقة مصادقة',\n },\n 'requestAuthTab': {\n 'token': 'الرمز',\n 'bearerToken': 'رمز Bearer',\n 'getAToken': 'الحصول على رمز',\n 'refresh': 'تحديث',\n 'username': 'اسم المستخدم',\n 'password': 'كلمة المرور',\n 'name': 'الاسم',\n 'value': 'القيمة',\n 'cancel': 'إلغاء',\n 'authorize': 'تخويل',\n 'unsupportedCredentials': 'لا يرسل عميل المتصفح بيانات الاعتماد لمخطط أمان AsyncAPI هذا.',\n 'authorizeVia': 'التخويل عبر {name}',\n 'unsupportedType': 'نوع مخطط الأمان {type} غير مدعوم بعد.',\n 'missingType': 'لم يتم تحديد نوع مخطط الأمان. تحقق من مستند {type} أو إعدادات المصادقة.',\n 'failedToauthorize': 'فشل التخويل',\n 'failedToRefresh': 'فشل التحديث',\n 'configure': 'إعداد {name}',\n 'mutualTlsHint': 'تستخدم مصادقة TLS المتبادلة شهادة عميل تُقدَّم أثناء مصافحة TLS، لذلك لا يلزم إدخال أي شيء هنا.',\n },\n 'commandActionForm': {\n 'continue': 'متابعة',\n },\n 'environment': {\n 'thisIsTheActiveEnvironment': 'هذه هي البيئة النشطة',\n 'active': 'نشط',\n 'editEnvironment': 'تعديل البيئة',\n 'deleteEnvironment': 'حذف البيئة',\n },\n 'environmentCreateModal': {\n 'environmentName': 'اسم البيئة',\n 'thisEnvironmentNameIsAlreadyInUse': 'اسم البيئة هذا مستخدم بالفعل.',\n 'update': 'تحديث البيئة',\n 'add': 'إضافة بيئة',\n },\n 'environmentDeleteModal': {\n 'cancel': 'إلغاء',\n 'deleteEnvironment': 'حذف البيئة',\n 'deleteConfirmation': 'هل أنت متأكد من حذف هذه البيئة؟ لا يمكن التراجع عن هذا الإجراء.',\n 'title': 'حذف {name}',\n },\n 'environmentVariablesDropdown': {\n 'variableSuggestions': 'اقتراحات المتغيرات',\n 'addVariable': 'إضافة متغير',\n },\n 'environmentVariablesTable': {\n 'name': 'الاسم',\n 'value': 'القيمة',\n 'actions': 'الإجراءات',\n 'environmentVariableName': 'اسم متغير البيئة',\n 'environmentVariableValue': 'قيمة متغير البيئة',\n },\n 'documentSearchModal': {\n 'documentSearch': 'البحث في المستند',\n 'documentSearchResults': 'نتائج البحث في المستند',\n 'navigate': '↑↓ تنقّل',\n 'select': '⏎ تحديد',\n 'keyboardInstructions': 'اضغط على السهم لأعلى أو لأسفل للتنقل، وعلى Enter للتحديد، واكتب لتصفية النتائج',\n },\n 'searchResult': {\n 'httpMethod': 'طريقة HTTP:',\n 'path': 'المسار:',\n 'description': 'الوصف:',\n 'heading': 'عنوان',\n 'operation': 'عملية',\n 'tag': 'وسم',\n },\n 'sectionFilter': {\n 'all': 'الكل',\n 'auth': 'المصادقة',\n 'variables': 'المتغيرات',\n 'cookies': 'ملفات تعريف الارتباط',\n 'headers': 'الترويسات',\n 'query': 'الاستعلام',\n 'body': 'الجسم',\n },\n 'requestParams': {\n 'addParameter': 'إضافة معلمة',\n 'searchParameters': 'البحث عن المعلمات',\n 'noParametersFound': 'لا توجد معلمات مطابقة',\n 'clearAll': 'مسح الكل: {title}',\n 'clear': 'مسح',\n 'clearOptionalParameters': 'مسح المعاملات الاختيارية',\n },\n 'responseBodyDownload': {\n 'download': 'تنزيل جسم الاستجابة',\n 'label': 'تنزيل',\n 'body': 'جسم الاستجابة',\n },\n 'responseMetaInformation': {\n 'duration': 'معلومات الاستجابة، المدة:',\n 'size': '، الحجم:',\n 'status': '، الحالة:',\n },\n 'authSelector': {\n 'selectedType': 'نوع المصادقة المحدد: {type}',\n 'multipleTypes': 'تم تحديد عدة أنواع مصادقة',\n 'selectType': 'اختيار نوع المصادقة',\n 'optional': 'اختياري',\n 'required': 'مطلوب',\n 'deleteScheme': 'حذف {name}',\n 'requiredGroup': 'المصادقة المطلوبة',\n 'availableGroup': 'المصادقة المتاحة',\n 'addGroup': 'إضافة مصادقة جديدة',\n },\n 'operationBlock': {\n 'webhookUrlRequired': 'رابط Webhook مطلوب. أدخل وجهة أولًا.',\n 'pathParametersRequired': 'يجب أن تكون لمعاملات المسار قيم.',\n 'forbiddenMethod': 'لا يمكن لواجهة Fetch API إرسال طلبات {method}.',\n },\n 'dataTableCheckbox': {\n 'toggle': 'تبديل',\n },\n 'pillTooltipHost': {\n 'computedAtExecution': 'تُحسب عند تنفيذ الطلب',\n 'noValue': 'لا توجد قيمة',\n },\n 'authOptions': {\n oauth2DeviceAuthorization: 'تفويض الجهاز عبر OAuth2',\n 'apiKeyCookie': 'مفتاح API في ملفات تعريف الارتباط',\n 'apiKeyHeader': 'مفتاح API في الترويسات',\n 'apiKeyQuery': 'مفتاح API في معاملات الاستعلام',\n 'httpBasic': 'HTTP Basic',\n 'httpBearer': 'HTTP Bearer',\n 'oauth2Implicit': 'التدفق الضمني لـ OAuth2',\n 'oauth2Password': 'تدفق كلمة المرور لـ OAuth2',\n 'oauth2ClientCredentials': 'بيانات اعتماد العميل لـ OAuth2',\n 'oauth2AuthorizationFlow': 'رمز تخويل OAuth2',\n },\n 'deleteSidebarListElement': {\n 'delete': 'حذف {name}',\n },\n 'deleteModal': {\n 'delete': 'حذف {name}',\n },\n} satisfies ApiClientTranslations\n"],"mappings":";;AAGA,IAAa,KAAK;CAChB,yBAAyB,EACvB,YAAY,UACd;CACA,0BAA0B,EACxB,SAAS,OACX;CACA,0BAA0B,EACxB,UAAU,QACZ;CACA,gBAAgB;EACd,kBAAkB;EAClB,aAAa;EACb,WAAW;EACX,WAAW;EACX,mBAAmB;EACnB,eAAe;EACf,0BACE;EACF,eAAe;EACf,eAAe;EACf,SAAS;CACX;CACA,iBAAiB;EACf,iBAAiB;EACjB,oBACE;EACF,YAAY;EACZ,kBAAkB;EAClB,mBAAmB;EACnB,QAAQ;CACV;CACA,aAAa;EACX,YAAY;EACZ,YAAY;CACd;CACA,iBAAiB,EACf,YAAY,QACd;CACA,kBAAkB;EAChB,cAAc;EACd,cAAc;EACd,gBAAgB;EAChB,gBAAgB;CAClB;CACA,wBAAwB;EACtB,SAAS;EACT,YAAY;CACd;CACA,oBAAoB;EAClB,UAAU;EACV,QAAQ;CACV;CACA,sBAAsB;EACpB,aAAa;EACb,QAAQ;EACR,SAAS;CACX;CACA,wBAAwB,EACtB,SAAS,WACX;CACA,kBAAkB;EAChB,UAAU;EACV,aAAa;EACb,iBAAiB;EACjB,iBAAiB;CACnB;CACA,WAAW,EACT,UAAU,MACZ;CACA,eAAe,EACb,YAAY,YACd;CACA,iBAAiB;EACf,QAAQ;EACR,QAAQ;CACV;CACA,oBAAoB,EAClB,kBAAkB,aACpB;CACA,SAAS,EACP,sBAAsB,qBACxB;CACA,aAAa,EACX,kCAAkC,0BACpC;CACA,UAAU;EACR,qBAAqB;EACrB,eAAe;CACjB;CACA,uBAAuB,EACrB,iBAAiB,eACnB;CACA,eAAe;EACb,UAAU;EACV,UAAU;EACV,cAAc;EACd,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,SAAS;EACT,QAAQ;CACV;CACA,yBAAyB,EACvB,QAAQ,QACV;CACA,yBAAyB;EACvB,UAAU;EACV,QAAQ;EACR,OAAO;EACP,WAAW;CACb;CACA,sBAAsB;EACpB,aAAa;EACb,eAAe;CACjB;CACA,gBAAgB;EACd,WAAW;EACX,OAAO;EACP,SAAS;CACX;CACA,mBAAmB;EACjB,OAAO;EAC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"}
|
|
@@ -104,6 +104,7 @@ export declare const de: {
|
|
|
104
104
|
body: string;
|
|
105
105
|
};
|
|
106
106
|
requestBodyViewToggle: {
|
|
107
|
+
schema: string;
|
|
107
108
|
form: string;
|
|
108
109
|
raw: string;
|
|
109
110
|
fixBody: string;
|
|
@@ -335,6 +336,9 @@ export declare const de: {
|
|
|
335
336
|
body: string;
|
|
336
337
|
};
|
|
337
338
|
requestParams: {
|
|
339
|
+
addParameter: string;
|
|
340
|
+
searchParameters: string;
|
|
341
|
+
noParametersFound: string;
|
|
338
342
|
clearAll: string;
|
|
339
343
|
clear: string;
|
|
340
344
|
clearOptionalParameters: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/localization/locales/de.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../../src/v2/features/localization/locales/de.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuZkB,CAAA"}
|
|
@@ -81,6 +81,7 @@ var de = {
|
|
|
81
81
|
},
|
|
82
82
|
"requestBodyStructured": { "body": "Inhalt" },
|
|
83
83
|
"requestBodyViewToggle": {
|
|
84
|
+
"schema": "Schema",
|
|
84
85
|
"form": "Formular",
|
|
85
86
|
"raw": "Rohdaten",
|
|
86
87
|
"fixBody": "Korrigieren Sie den Inhalt, um zur Formularansicht zu wechseln"
|
|
@@ -300,6 +301,9 @@ var de = {
|
|
|
300
301
|
"body": "Inhalt"
|
|
301
302
|
},
|
|
302
303
|
"requestParams": {
|
|
304
|
+
"addParameter": "Parameter hinzufügen",
|
|
305
|
+
"searchParameters": "Parameter suchen",
|
|
306
|
+
"noParametersFound": "Keine passenden Parameter",
|
|
303
307
|
"clearAll": "Alle {title} leeren",
|
|
304
308
|
"clear": "Leeren",
|
|
305
309
|
"clearOptionalParameters": "Optionale Parameter leeren"
|