@scalar/api-reference 1.49.7 → 1.50.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/browser/standalone.js +185 -183
  3. package/dist/browser/webpack-stats.json +1 -1
  4. package/dist/components/ApiReference.vue.d.ts.map +1 -1
  5. package/dist/components/ApiReference.vue.js +1 -1
  6. package/dist/components/ApiReference.vue.js.map +1 -1
  7. package/dist/components/ApiReference.vue.script.js +4 -4
  8. package/dist/components/ApiReference.vue.script.js.map +1 -1
  9. package/dist/components/Content/Auth/Auth.vue.d.ts +1 -1
  10. package/dist/components/Content/Auth/Auth.vue.d.ts.map +1 -1
  11. package/dist/components/Content/Auth/Auth.vue.js.map +1 -1
  12. package/dist/components/Content/Auth/Auth.vue.script.js +1 -1
  13. package/dist/components/Content/Auth/Auth.vue.script.js.map +1 -1
  14. package/dist/components/Content/Auth/helpers/get-default-security.d.ts +1 -1
  15. package/dist/components/Content/Auth/helpers/get-default-security.d.ts.map +1 -1
  16. package/dist/components/Content/Auth/helpers/get-default-security.js.map +1 -1
  17. package/dist/components/Content/Content.vue.d.ts.map +1 -1
  18. package/dist/components/Content/Content.vue.js.map +1 -1
  19. package/dist/components/Content/Content.vue.script.js +2 -4
  20. package/dist/components/Content/Content.vue.script.js.map +1 -1
  21. package/dist/components/Content/Operations/TraversedEntry.vue.d.ts +1 -1
  22. package/dist/components/Content/Operations/TraversedEntry.vue.d.ts.map +1 -1
  23. package/dist/components/Content/Operations/TraversedEntry.vue.js.map +1 -1
  24. package/dist/components/Content/Operations/TraversedEntry.vue.script.js +1 -1
  25. package/dist/components/Content/Operations/TraversedEntry.vue.script.js.map +1 -1
  26. package/dist/components/Content/Tags/components/ClassicLayout.vue.d.ts.map +1 -1
  27. package/dist/components/Content/Tags/components/ClassicLayout.vue.js +1 -1
  28. package/dist/components/Content/Tags/components/ClassicLayout.vue.js.map +1 -1
  29. package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js +9 -5
  30. package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js.map +1 -1
  31. package/dist/features/Operation/Operation.vue.d.ts +1 -1
  32. package/dist/features/Operation/Operation.vue.d.ts.map +1 -1
  33. package/dist/features/Operation/Operation.vue.js.map +1 -1
  34. package/dist/features/Operation/Operation.vue.script.js +1 -1
  35. package/dist/features/Operation/Operation.vue.script.js.map +1 -1
  36. package/dist/features/Operation/helpers/filter-selected-security.d.ts +2 -1
  37. package/dist/features/Operation/helpers/filter-selected-security.d.ts.map +1 -1
  38. package/dist/features/Operation/helpers/filter-selected-security.js +1 -2
  39. package/dist/features/Operation/helpers/filter-selected-security.js.map +1 -1
  40. package/dist/features/Operation/layouts/ClassicLayout.vue.d.ts +1 -1
  41. package/dist/features/Operation/layouts/ClassicLayout.vue.d.ts.map +1 -1
  42. package/dist/features/Operation/layouts/ClassicLayout.vue.js +1 -1
  43. package/dist/features/Operation/layouts/ClassicLayout.vue.js.map +1 -1
  44. package/dist/features/Operation/layouts/ClassicLayout.vue.script.js.map +1 -1
  45. package/dist/features/Operation/layouts/ModernLayout.vue.d.ts +1 -1
  46. package/dist/features/Operation/layouts/ModernLayout.vue.d.ts.map +1 -1
  47. package/dist/features/Operation/layouts/ModernLayout.vue.js +1 -1
  48. package/dist/features/Operation/layouts/ModernLayout.vue.js.map +1 -1
  49. package/dist/features/Operation/layouts/ModernLayout.vue.script.js.map +1 -1
  50. package/dist/features/Search/helpers/create-fuse-instance.d.ts.map +1 -1
  51. package/dist/features/Search/helpers/create-fuse-instance.js +4 -0
  52. package/dist/features/Search/helpers/create-fuse-instance.js.map +1 -1
  53. package/dist/features/Search/helpers/create-search-index.d.ts.map +1 -1
  54. package/dist/features/Search/helpers/create-search-index.js +41 -4
  55. package/dist/features/Search/helpers/create-search-index.js.map +1 -1
  56. package/dist/features/Search/types.d.ts +1 -0
  57. package/dist/features/Search/types.d.ts.map +1 -1
  58. package/dist/features/example-responses/ExampleResponse.vue.d.ts.map +1 -1
  59. package/dist/features/example-responses/ExampleResponse.vue.js +1 -1
  60. package/dist/features/example-responses/ExampleResponse.vue.js.map +1 -1
  61. package/dist/features/example-responses/ExampleResponse.vue.script.js +2 -1
  62. package/dist/features/example-responses/ExampleResponse.vue.script.js.map +1 -1
  63. package/dist/features/example-responses/ExampleResponses.vue.js +1 -1
  64. package/dist/features/example-responses/ExampleResponses.vue.js.map +1 -1
  65. package/dist/features/example-responses/ExampleResponses.vue.script.js +1 -1
  66. package/dist/features/example-responses/ExampleResponses.vue.script.js.map +1 -1
  67. package/dist/features/external-docs/ExternalDocs.vue.d.ts +2 -2
  68. package/dist/features/external-docs/ExternalDocs.vue.d.ts.map +1 -1
  69. package/dist/features/external-docs/ExternalDocs.vue.js.map +1 -1
  70. package/dist/features/external-docs/ExternalDocs.vue.script.js.map +1 -1
  71. package/dist/features/info-object/Contact.vue.d.ts +2 -2
  72. package/dist/features/info-object/Contact.vue.d.ts.map +1 -1
  73. package/dist/features/info-object/Contact.vue.js.map +1 -1
  74. package/dist/features/info-object/Contact.vue.script.js.map +1 -1
  75. package/dist/features/info-object/License.vue.d.ts +2 -2
  76. package/dist/features/info-object/License.vue.d.ts.map +1 -1
  77. package/dist/features/info-object/License.vue.js.map +1 -1
  78. package/dist/features/info-object/License.vue.script.js.map +1 -1
  79. package/dist/features/info-object/TermsOfService.vue.d.ts +2 -2
  80. package/dist/features/info-object/TermsOfService.vue.d.ts.map +1 -1
  81. package/dist/features/info-object/TermsOfService.vue.js.map +1 -1
  82. package/dist/features/info-object/TermsOfService.vue.script.js.map +1 -1
  83. package/dist/helpers/openapi.d.ts +2 -5
  84. package/dist/helpers/openapi.d.ts.map +1 -1
  85. package/dist/helpers/openapi.js +25 -19
  86. package/dist/helpers/openapi.js.map +1 -1
  87. package/dist/style.css +340 -389
  88. package/package.json +20 -25
@@ -1,4 +1,4 @@
1
- import type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block';
1
+ import type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example';
2
2
  import type { OperationObject, ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
3
3
  import type { OperationProps } from '../../../features/Operation/Operation.vue.js';
4
4
  type __VLS_Props = Omit<OperationProps, 'document' | 'pathValue' | 'server' | 'securitySchemes' | 'authStore'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"ClassicLayout.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"names":[],"mappings":"AA2gBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AAkBzG,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,8DAA8D,CAAA;AAcrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAUxE,KAAK,WAAW,GAAG,IAAI,CACnB,cAAc,EACd,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,iBAAiB,GAAG,WAAW,CACtE,GAAG;IACF,wCAAwC;IACxC,SAAS,EAAE,eAAe,CAAA;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,sDAAsD;IACtD,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;CACtD,CAAC;AAooBJ,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ClassicLayout.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"names":[],"mappings":"AA4hBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AACzF,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,8DAA8D,CAAA;AAcrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAUxE,KAAK,WAAW,GAAG,IAAI,CACnB,cAAc,EACd,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,iBAAiB,GAAG,WAAW,CACtE,GAAG;IACF,wCAAwC;IACxC,SAAS,EAAE,eAAe,CAAA;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,sDAAsD;IACtD,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;CACtD,CAAC;AAooBJ,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import ClassicLayout_vue_vue_type_script_setup_true_lang_default from "./ClassicLayout.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/features/Operation/layouts/ClassicLayout.vue
5
- var ClassicLayout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ClassicLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-29d6b17f"]]);
5
+ var ClassicLayout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ClassicLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1f81471a"]]);
6
6
  //#endregion
7
7
  export { ClassicLayout_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"ClassicLayout.vue.js","names":[],"sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport {\n ScalarErrorBoundary,\n ScalarIconButton,\n ScalarMarkdown,\n} from '@scalar/components'\nimport {\n ScalarIconCopy,\n ScalarIconPlay,\n ScalarIconWebhooksLogo,\n} from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { useClipboard } from '@scalar/use-hooks/useClipboard'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport { SectionAccordion } from '@/components/Section'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n 'document' | 'pathValue' | 'server' | 'securitySchemes' | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Track the currently selected example for passing to the modal */\nconst selectedExampleKey = ref<string>('')\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n\nconst { copyToClipboard } = useClipboard()\n</script>\n<template>\n <SectionAccordion\n :id=\"id\"\n :aria-label=\"operationTitle\"\n class=\"reference-endpoint\"\n :modelValue=\"!isCollapsed\"\n transparent\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <div class=\"operation-title\">\n <div class=\"operation-details\">\n <HttpMethod\n class=\"endpoint-type\"\n :method=\"method\"\n short />\n <Anchor\n class=\"endpoint-anchor\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <h3 class=\"endpoint-label\">\n <div class=\"endpoint-label-path\">\n <OperationPath\n :deprecated=\"isOperationDeprecated(operation)\"\n :path=\"path\" />\n </div>\n <div class=\"endpoint-label-name\">\n {{ operationTitle }}\n </div>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </h3>\n </Anchor>\n </div>\n </div>\n </template>\n <template #actions=\"{ active }\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n <template v-if=\"!options.hideTestRequestButton\">\n <TestRequestButton\n v-if=\"active && !isWebhook\"\n :id\n :eventBus\n :exampleName=\"selectedExampleKey\"\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n <ScalarIconPlay\n v-else\n class=\"endpoint-try-hint size-4.5\" />\n </template>\n <span\n v-if=\"options.showOperationId && operation.operationId\"\n class=\"font-code text-sm\">\n {{ operation.operationId }}\n </span>\n <ScalarIconButton\n class=\"endpoint-copy p-0.5\"\n :icon=\"ScalarIconCopy\"\n label=\"Copy endpoint URL\"\n size=\"xs\"\n variant=\"ghost\"\n @click.stop=\"copyToClipboard(path)\" />\n </template>\n <template\n v-if=\"operation.description\"\n #description>\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n </template>\n <div class=\"endpoint-content\">\n <div class=\"operation-details-card\">\n <div\n v-if=\"Object.keys(operationExtensions).length > 0\"\n class=\"operation-details-card-item\">\n <SpecificationExtension :value=\"operationExtensions\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationParameters\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationResponses\n :eventBus\n :options\n :responses=\"operation.responses\" />\n </div>\n\n <!-- Callbacks -->\n <div\n v-if=\"operation?.callbacks\"\n class=\"operation-details-card-item\">\n <Callbacks\n :callbacks=\"operation.callbacks\"\n :eventBus\n :options\n :path />\n </div>\n </div>\n\n <ExampleResponses\n v-if=\"operation.responses\"\n class=\"operation-example-card\"\n :responses=\"operation.responses\" />\n\n <!-- New Example Request -->\n <div>\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n <!-- Request Example -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n v-model:selectedExample=\"selectedExampleKey\"\n :key=\"requestBodyCompositionSelectionKey\"\n class=\"operation-example-card\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer />\n </ScalarErrorBoundary>\n </div>\n </div>\n </SectionAccordion>\n</template>\n\n<style scoped>\n@reference \"@/style.css\";\n\n.operation-title {\n display: flex;\n justify-content: space-between;\n}\n.operation-details {\n display: flex;\n align-items: center;\n margin-top: 0;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n}\n.operation-details :deep(.endpoint-anchor .scalar-button svg) {\n width: 16px;\n height: 16px;\n}\n.endpoint-type {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n\n position: relative;\n z-index: 0;\n\n width: 60px;\n padding: 6px;\n flex-shrink: 0;\n\n font-size: var(--scalar-small);\n\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-family: var(--scalar-font);\n}\n.endpoint-type::after {\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n\n background: currentColor;\n opacity: 0.15;\n\n border-radius: var(--scalar-radius);\n}\n\n.endpoint-anchor {\n display: flex;\n align-items: center;\n min-width: 0;\n flex-shrink: 1;\n}\n.endpoint-anchor.label {\n display: flex;\n}\n.endpoint-label {\n display: flex;\n align-items: baseline;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n\n color: var(--scalar-color-1);\n}\n\n.endpoint-label-path {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-mini);\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.endpoint-label-path :deep(em) {\n color: var(--scalar-color-2);\n}\n.endpoint-label-name {\n color: var(--scalar-color-2);\n font-size: var(--scalar-small);\n\n /* Concatenate the name before we shrink the path */\n flex-shrink: 1000000000;\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.endpoint-try-hint {\n padding: 2px;\n flex-shrink: 0;\n}\n.endpoint-copy {\n color: currentColor;\n}\n.endpoint-copy :deep(svg) {\n stroke-width: 2px;\n}\n\n.endpoint-content {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: row;\n gap: 9px;\n padding: 9px;\n}\n\n@variant lg {\n .endpoint-content {\n grid-auto-flow: column;\n }\n}\n\n@container (max-width: 900px) {\n .endpoint-content {\n grid-template-columns: 1fr;\n }\n}\n\n.endpoint-content > * {\n min-width: 0;\n}\n\n.operation-details-card {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 0;\n}\n.operation-details-card-item :deep(.parameter-list),\n.operation-details-card-item :deep(.callbacks-list) {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-top: 0;\n}\n\n.operation-details-card-item {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.operation-details-card-item :deep(.parameter-list-items) {\n margin-bottom: 0;\n}\n.operation-details-card :deep(.parameter-item:last-of-type .parameter-schema) {\n padding-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-list .parameter-list) {\n margin-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-item) {\n margin: 0;\n padding: 0;\n}\n.operation-details-card :deep(.property) {\n padding: 9px;\n margin: 0;\n}\n.operation-details-card :deep(.parameter-list-title),\n.operation-details-card :deep(.request-body-title),\n.operation-details-card :deep(.callbacks-title) {\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n line-height: 1.33;\n padding: 9px;\n margin: 0;\n}\n\n.operation-details-card :deep(.callback-list-item-title) {\n padding-left: 28px;\n padding-right: 12px;\n}\n\n.operation-details-card :deep(.callback-list-item-icon) {\n left: 6px;\n}\n\n.operation-details-card :deep(.callback-operation-container) {\n padding-inline: 9px;\n padding-bottom: 9px;\n}\n\n.operation-details-card :deep(.callback-operation-container > .request-body),\n.operation-details-card :deep(.callback-operation-container > .parameter-list) {\n border: none;\n}\n\n.operation-details-card\n :deep(.callback-operation-container > .request-body > .request-body-header) {\n padding: 0;\n padding-bottom: 9px;\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body-description) {\n margin-top: 0;\n padding: 9px 9px 0 9px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body) {\n margin-top: 0;\n border-radius: var(--scalar-radius-lg);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.operation-details-card\n :deep(.request-body .schema-card--level-0 > .schema-card-description) {\n padding-inline: 9px;\n}\n\n.operation-details-card :deep(.request-body-header) {\n padding-bottom: 0;\n border-bottom: 0;\n}\n\n.operation-details-card :deep(.contents button) {\n margin-right: 9px;\n}\n\n.operation-details-card\n :deep(.schema-card--open + .schema-card:not(.schema-card--open)) {\n margin-inline: 9px;\n margin-bottom: 9px;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n\n.operation-details-card :deep(.selected-content-type) {\n margin-right: 9px;\n}\n\n.operation-example-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n max-height: calc(var(--refs-viewport-height) - 48px);\n}\n\n@media (max-width: 600px) {\n .operation-example-card {\n max-height: unset;\n position: static;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ClassicLayout.vue.js","names":[],"sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport {\n ScalarErrorBoundary,\n ScalarIconButton,\n ScalarMarkdown,\n} from '@scalar/components'\nimport {\n ScalarIconCopy,\n ScalarIconPlay,\n ScalarIconWebhooksLogo,\n} from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { useClipboard } from '@scalar/use-hooks/useClipboard'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport { SectionAccordion } from '@/components/Section'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n 'document' | 'pathValue' | 'server' | 'securitySchemes' | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Track the currently selected example for passing to the modal */\nconst selectedExampleKey = ref<string>('')\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n\nconst { copyToClipboard } = useClipboard()\n</script>\n<template>\n <SectionAccordion\n :id=\"id\"\n :aria-label=\"operationTitle\"\n class=\"reference-endpoint\"\n :modelValue=\"!isCollapsed\"\n transparent\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <div class=\"operation-title\">\n <div class=\"operation-details\">\n <HttpMethod\n class=\"endpoint-type\"\n :method=\"method\"\n short />\n <Anchor\n class=\"endpoint-anchor\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <h3 class=\"endpoint-label\">\n <div class=\"endpoint-label-path\">\n <OperationPath\n :deprecated=\"isOperationDeprecated(operation)\"\n :path=\"path\" />\n </div>\n <div class=\"endpoint-label-name\">\n {{ operationTitle }}\n </div>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </h3>\n </Anchor>\n </div>\n </div>\n </template>\n <template #actions=\"{ active }\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n <template v-if=\"!options.hideTestRequestButton\">\n <TestRequestButton\n v-if=\"active && !isWebhook\"\n :id\n :eventBus\n :exampleName=\"selectedExampleKey\"\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n <ScalarIconPlay\n v-else\n class=\"endpoint-try-hint size-4.5\" />\n </template>\n <span\n v-if=\"options.showOperationId && operation.operationId\"\n class=\"font-code text-sm\">\n {{ operation.operationId }}\n </span>\n <ScalarIconButton\n class=\"endpoint-copy p-0.5\"\n :icon=\"ScalarIconCopy\"\n label=\"Copy endpoint URL\"\n size=\"xs\"\n variant=\"ghost\"\n @click.stop=\"copyToClipboard(path)\" />\n </template>\n <template\n v-if=\"operation.description\"\n #description>\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n </template>\n <div class=\"endpoint-content\">\n <div class=\"operation-details-card\">\n <div\n v-if=\"Object.keys(operationExtensions).length > 0\"\n class=\"operation-details-card-item\">\n <SpecificationExtension :value=\"operationExtensions\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationParameters\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationResponses\n :eventBus\n :options\n :responses=\"operation.responses\" />\n </div>\n\n <!-- Callbacks -->\n <div\n v-if=\"operation?.callbacks\"\n class=\"operation-details-card-item\">\n <Callbacks\n :callbacks=\"operation.callbacks\"\n :eventBus\n :options\n :path />\n </div>\n </div>\n\n <ExampleResponses\n v-if=\"operation.responses\"\n class=\"operation-example-card\"\n :responses=\"operation.responses\" />\n\n <!-- New Example Request -->\n <div>\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n <!-- Request Example -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n v-model:selectedExample=\"selectedExampleKey\"\n :key=\"requestBodyCompositionSelectionKey\"\n class=\"operation-example-card\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer />\n </ScalarErrorBoundary>\n </div>\n </div>\n </SectionAccordion>\n</template>\n\n<style scoped>\n@reference \"@/style.css\";\n\n.operation-title {\n display: flex;\n justify-content: space-between;\n}\n.operation-details {\n display: flex;\n align-items: center;\n margin-top: 0;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n}\n.operation-details :deep(.endpoint-anchor .scalar-button svg) {\n width: 16px;\n height: 16px;\n}\n.endpoint-type {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n\n position: relative;\n z-index: 0;\n\n width: 60px;\n padding: 6px;\n flex-shrink: 0;\n\n font-size: var(--scalar-small);\n\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-family: var(--scalar-font);\n}\n.endpoint-type::after {\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n\n background: currentColor;\n opacity: 0.15;\n\n border-radius: var(--scalar-radius);\n}\n\n.endpoint-anchor {\n display: flex;\n align-items: center;\n min-width: 0;\n flex-shrink: 1;\n}\n.endpoint-anchor.label {\n display: flex;\n}\n.endpoint-label {\n display: flex;\n align-items: baseline;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n\n color: var(--scalar-color-1);\n}\n\n.endpoint-label-path {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-mini);\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.endpoint-label-path :deep(em) {\n color: var(--scalar-color-2);\n}\n.endpoint-label-name {\n color: var(--scalar-color-2);\n font-size: var(--scalar-small);\n\n /* Concatenate the name before we shrink the path */\n flex-shrink: 1000000000;\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.endpoint-try-hint {\n padding: 2px;\n flex-shrink: 0;\n}\n.endpoint-copy {\n color: currentColor;\n}\n.endpoint-copy :deep(svg) {\n stroke-width: 2px;\n}\n\n.endpoint-content {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: row;\n gap: 9px;\n padding: 9px;\n}\n\n@variant lg {\n .endpoint-content {\n grid-auto-flow: column;\n }\n}\n\n@container (max-width: 900px) {\n .endpoint-content {\n grid-template-columns: 1fr;\n }\n}\n\n.endpoint-content > * {\n min-width: 0;\n}\n\n.operation-details-card {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 0;\n}\n.operation-details-card-item :deep(.parameter-list),\n.operation-details-card-item :deep(.callbacks-list) {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-top: 0;\n}\n\n.operation-details-card-item {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.operation-details-card-item :deep(.parameter-list-items) {\n margin-bottom: 0;\n}\n.operation-details-card :deep(.parameter-item:last-of-type .parameter-schema) {\n padding-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-list .parameter-list) {\n margin-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-item) {\n margin: 0;\n padding: 0;\n}\n.operation-details-card :deep(.property) {\n padding: 9px;\n margin: 0;\n}\n.operation-details-card :deep(.parameter-list-title),\n.operation-details-card :deep(.request-body-title),\n.operation-details-card :deep(.callbacks-title) {\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n line-height: 1.33;\n padding: 9px;\n margin: 0;\n}\n\n.operation-details-card :deep(.callback-list-item-title) {\n padding-left: 28px;\n padding-right: 12px;\n}\n\n.operation-details-card :deep(.callback-list-item-icon) {\n left: 6px;\n}\n\n.operation-details-card :deep(.callback-operation-container) {\n padding-inline: 9px;\n padding-bottom: 9px;\n}\n\n.operation-details-card :deep(.callback-operation-container > .request-body),\n.operation-details-card :deep(.callback-operation-container > .parameter-list) {\n border: none;\n}\n\n.operation-details-card\n :deep(.callback-operation-container > .request-body > .request-body-header) {\n padding: 0;\n padding-bottom: 9px;\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body-description) {\n margin-top: 0;\n padding: 9px 9px 0 9px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body) {\n margin-top: 0;\n border-radius: var(--scalar-radius-lg);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.operation-details-card\n :deep(.request-body .schema-card--level-0 > .schema-card-description) {\n padding-inline: 9px;\n}\n\n.operation-details-card :deep(.request-body-header) {\n padding-bottom: 0;\n border-bottom: 0;\n}\n\n.operation-details-card :deep(.contents button) {\n margin-right: 9px;\n}\n\n.operation-details-card\n :deep(.schema-card--open + .schema-card:not(.schema-card--open)) {\n margin-inline: 9px;\n margin-bottom: 9px;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n\n.operation-details-card :deep(.selected-content-type) {\n margin-right: 9px;\n}\n\n.operation-example-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n max-height: calc(var(--refs-viewport-height) - 48px);\n}\n\n@media (max-width: 600px) {\n .operation-example-card {\n max-height: unset;\n position: static;\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ClassicLayout.vue.script.js","names":[],"sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport {\n ScalarErrorBoundary,\n ScalarIconButton,\n ScalarMarkdown,\n} from '@scalar/components'\nimport {\n ScalarIconCopy,\n ScalarIconPlay,\n ScalarIconWebhooksLogo,\n} from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { useClipboard } from '@scalar/use-hooks/useClipboard'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport { SectionAccordion } from '@/components/Section'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n 'document' | 'pathValue' | 'server' | 'securitySchemes' | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Track the currently selected example for passing to the modal */\nconst selectedExampleKey = ref<string>('')\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n\nconst { copyToClipboard } = useClipboard()\n</script>\n<template>\n <SectionAccordion\n :id=\"id\"\n :aria-label=\"operationTitle\"\n class=\"reference-endpoint\"\n :modelValue=\"!isCollapsed\"\n transparent\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <div class=\"operation-title\">\n <div class=\"operation-details\">\n <HttpMethod\n class=\"endpoint-type\"\n :method=\"method\"\n short />\n <Anchor\n class=\"endpoint-anchor\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <h3 class=\"endpoint-label\">\n <div class=\"endpoint-label-path\">\n <OperationPath\n :deprecated=\"isOperationDeprecated(operation)\"\n :path=\"path\" />\n </div>\n <div class=\"endpoint-label-name\">\n {{ operationTitle }}\n </div>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </h3>\n </Anchor>\n </div>\n </div>\n </template>\n <template #actions=\"{ active }\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n <template v-if=\"!options.hideTestRequestButton\">\n <TestRequestButton\n v-if=\"active && !isWebhook\"\n :id\n :eventBus\n :exampleName=\"selectedExampleKey\"\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n <ScalarIconPlay\n v-else\n class=\"endpoint-try-hint size-4.5\" />\n </template>\n <span\n v-if=\"options.showOperationId && operation.operationId\"\n class=\"font-code text-sm\">\n {{ operation.operationId }}\n </span>\n <ScalarIconButton\n class=\"endpoint-copy p-0.5\"\n :icon=\"ScalarIconCopy\"\n label=\"Copy endpoint URL\"\n size=\"xs\"\n variant=\"ghost\"\n @click.stop=\"copyToClipboard(path)\" />\n </template>\n <template\n v-if=\"operation.description\"\n #description>\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n </template>\n <div class=\"endpoint-content\">\n <div class=\"operation-details-card\">\n <div\n v-if=\"Object.keys(operationExtensions).length > 0\"\n class=\"operation-details-card-item\">\n <SpecificationExtension :value=\"operationExtensions\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationParameters\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationResponses\n :eventBus\n :options\n :responses=\"operation.responses\" />\n </div>\n\n <!-- Callbacks -->\n <div\n v-if=\"operation?.callbacks\"\n class=\"operation-details-card-item\">\n <Callbacks\n :callbacks=\"operation.callbacks\"\n :eventBus\n :options\n :path />\n </div>\n </div>\n\n <ExampleResponses\n v-if=\"operation.responses\"\n class=\"operation-example-card\"\n :responses=\"operation.responses\" />\n\n <!-- New Example Request -->\n <div>\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n <!-- Request Example -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n v-model:selectedExample=\"selectedExampleKey\"\n :key=\"requestBodyCompositionSelectionKey\"\n class=\"operation-example-card\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer />\n </ScalarErrorBoundary>\n </div>\n </div>\n </SectionAccordion>\n</template>\n\n<style scoped>\n@reference \"@/style.css\";\n\n.operation-title {\n display: flex;\n justify-content: space-between;\n}\n.operation-details {\n display: flex;\n align-items: center;\n margin-top: 0;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n}\n.operation-details :deep(.endpoint-anchor .scalar-button svg) {\n width: 16px;\n height: 16px;\n}\n.endpoint-type {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n\n position: relative;\n z-index: 0;\n\n width: 60px;\n padding: 6px;\n flex-shrink: 0;\n\n font-size: var(--scalar-small);\n\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-family: var(--scalar-font);\n}\n.endpoint-type::after {\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n\n background: currentColor;\n opacity: 0.15;\n\n border-radius: var(--scalar-radius);\n}\n\n.endpoint-anchor {\n display: flex;\n align-items: center;\n min-width: 0;\n flex-shrink: 1;\n}\n.endpoint-anchor.label {\n display: flex;\n}\n.endpoint-label {\n display: flex;\n align-items: baseline;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n\n color: var(--scalar-color-1);\n}\n\n.endpoint-label-path {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-mini);\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.endpoint-label-path :deep(em) {\n color: var(--scalar-color-2);\n}\n.endpoint-label-name {\n color: var(--scalar-color-2);\n font-size: var(--scalar-small);\n\n /* Concatenate the name before we shrink the path */\n flex-shrink: 1000000000;\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.endpoint-try-hint {\n padding: 2px;\n flex-shrink: 0;\n}\n.endpoint-copy {\n color: currentColor;\n}\n.endpoint-copy :deep(svg) {\n stroke-width: 2px;\n}\n\n.endpoint-content {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: row;\n gap: 9px;\n padding: 9px;\n}\n\n@variant lg {\n .endpoint-content {\n grid-auto-flow: column;\n }\n}\n\n@container (max-width: 900px) {\n .endpoint-content {\n grid-template-columns: 1fr;\n }\n}\n\n.endpoint-content > * {\n min-width: 0;\n}\n\n.operation-details-card {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 0;\n}\n.operation-details-card-item :deep(.parameter-list),\n.operation-details-card-item :deep(.callbacks-list) {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-top: 0;\n}\n\n.operation-details-card-item {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.operation-details-card-item :deep(.parameter-list-items) {\n margin-bottom: 0;\n}\n.operation-details-card :deep(.parameter-item:last-of-type .parameter-schema) {\n padding-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-list .parameter-list) {\n margin-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-item) {\n margin: 0;\n padding: 0;\n}\n.operation-details-card :deep(.property) {\n padding: 9px;\n margin: 0;\n}\n.operation-details-card :deep(.parameter-list-title),\n.operation-details-card :deep(.request-body-title),\n.operation-details-card :deep(.callbacks-title) {\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n line-height: 1.33;\n padding: 9px;\n margin: 0;\n}\n\n.operation-details-card :deep(.callback-list-item-title) {\n padding-left: 28px;\n padding-right: 12px;\n}\n\n.operation-details-card :deep(.callback-list-item-icon) {\n left: 6px;\n}\n\n.operation-details-card :deep(.callback-operation-container) {\n padding-inline: 9px;\n padding-bottom: 9px;\n}\n\n.operation-details-card :deep(.callback-operation-container > .request-body),\n.operation-details-card :deep(.callback-operation-container > .parameter-list) {\n border: none;\n}\n\n.operation-details-card\n :deep(.callback-operation-container > .request-body > .request-body-header) {\n padding: 0;\n padding-bottom: 9px;\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body-description) {\n margin-top: 0;\n padding: 9px 9px 0 9px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body) {\n margin-top: 0;\n border-radius: var(--scalar-radius-lg);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.operation-details-card\n :deep(.request-body .schema-card--level-0 > .schema-card-description) {\n padding-inline: 9px;\n}\n\n.operation-details-card :deep(.request-body-header) {\n padding-bottom: 0;\n border-bottom: 0;\n}\n\n.operation-details-card :deep(.contents button) {\n margin-right: 9px;\n}\n\n.operation-details-card\n :deep(.schema-card--open + .schema-card:not(.schema-card--open)) {\n margin-inline: 9px;\n margin-bottom: 9px;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n\n.operation-details-card :deep(.selected-content-type) {\n margin-right: 9px;\n}\n\n.operation-example-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n max-height: calc(var(--refs-viewport-height) - 48px);\n}\n\n@media (max-width: 600px) {\n .operation-example-card {\n max-height: unset;\n position: static;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEA,MAAM,iBAAiB,eAAe,QAAA,UAAU,WAAW,QAAA,QAAQ,GAAE;EACrE,MAAM,sBAAsB,eAAe,mBAAmB,QAAA,UAAU,CAAA;;EAGxE,MAAM,qBAAqB,IAAY,GAAE;;EAGzC,MAAM,kCAAkC,IAAqC,EAAE,CAAA;EAE/E,MAAM,+CAA+C,gBACX,EACtC,GAAG,gCAAgC,OACpC,EACH;EAEA,MAAM,qCAAqC,eACzC,KAAK,UAAU,6CAA6C,MAAM,CACpE;AAEA,UAAQ,uCAAuC,gCAA+B;EAE9E,MAAM,EAAE,oBAAoB,cAAa;;uBAGvC,YAmKmB,MAAA,yBAAA,EAAA;IAlKhB,IAAI,QAAA;IACJ,cAAY,eAAA;IACb,OAAM;IACL,YAAU,CAAG,QAAA;IACd,aAAA;IACC,uBAAiB,OAAA,OAAA,OAAA,MAAU,UAAU,QAAA,UAAU,KAAI,mBAAA;KAAA,IAAsB,QAAA;KAAE,MAAQ;KAAK,CAAA;;IAG9E,OAAK,cAyCR,CAxCN,mBAwCM,OAxCN,YAwCM,CAvCJ,mBAsCM,OAtCN,YAsCM,CArCJ,YAGU,MAAA,mBAAA,EAAA;KAFR,OAAM;KACL,QAAQ,QAAA;KACT,OAAA;6BACF,YAgCS,MAAA,eAAA,EAAA;KA/BP,OAAM;KACL,iBAAa,OAAA,OAAA,OAAA,WAAQ,QAAA,UAAU,KAAI,qBAAA,EAAA,IAAwB,QAAA,IAAE,CAAA;;4BA6BzD,CA5BL,mBA4BK,MA5BL,YA4BK;MA3BH,mBAIM,OAJN,YAIM,CAHJ,YAEiB,uBAAA;OADd,YAAY,MAAA,sBAAqB,CAAC,QAAA,UAAS;OAC3C,MAAM,QAAA;;MAEX,mBAEM,OAFN,YAEM,gBADD,eAAA,MAAc,EAAA,EAAA;MAIX,MAAA,sBAAqB,CAAC,QAAA,UAAS,IAAA,WAAA,EADvC,YAKQ,MAAA,cAAA,EAAA;;OAHN,OAAK,eAAA,CAAC,cACE,MAAA,2BAA0B,CAAC,QAAA,UAAS,CAAA,CAAA;;8BACN,CAAA,gBAAA,gBAAnC,MAAA,sBAAqB,CAAC,QAAA,UAAS,CAAA,EAAA,EAAA,CAAA,CAAA;;;MAK5B,QAAA,aAAA,WAAA,EADR,YAIQ,MAAA,cAAA,EAAA;;OAFN,OAAM;;8BACkC,CAAxC,YAAwC,MAAA,uBAAA,EAAA,EAAhB,QAAO,QAAM,CAAA,EAAA,OAAA,OAAA,OAAA,KAAA,gBAAG,YAC1C,GAAA,EAAA,CAAA;;;MAGA,YAEsB,MAAA,gBAAA,EAAA;OADnB,QAAQ,QAAA,UAAS;OAClB,UAAS;;;;;IAMV,SAAO,SAIK,EAJD,aAAM;KAE1B,YAEqB,MAAA,gBAAA,EAAA;MADlB,QAAQ,QAAA,UAAS;MAClB,UAAS;;MACM,QAAA,QAAQ,yBAAA,WAAA,EAAzB,mBAcW,UAAA,EAAA,KAAA,GAAA,EAAA,CAZD,UAAM,CAAK,QAAA,aAAA,WAAA,EADnB,YASM,MAAA,0BAAA,EAAA;;MAPH,IAAA,QAAA;MACA,UAAA,QAAA;MACA,aAAa,mBAAA;MACb,QAAA,QAAA;MACA,MAAA,QAAA;MACA,iCAA8C,6CAAA;;;;;;;;yBAGjD,YAEuC,MAAA,eAAA,EAAA;;MAArC,OAAM;;KAGF,QAAA,QAAQ,mBAAmB,QAAA,UAAU,eAAA,WAAA,EAD7C,mBAIO,QAJP,YAIO,gBADF,QAAA,UAAU,YAAW,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAE1B,YAMwC,MAAA,iBAAA,EAAA;MALtC,OAAM;MACL,MAAM,MAAA,eAAc;MACrB,OAAM;MACN,MAAK;MACL,SAAQ;MACP,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,MAAA,gBAAe,CAAC,QAAA,KAAI,EAAA,CAAA,OAAA,CAAA;;;2BA+E/B,CAjEN,mBAiEM,OAjEN,YAiEM;KAhEJ,mBA8BM,OA9BN,YA8BM;MA5BI,OAAO,KAAK,oBAAA,MAAmB,CAAE,SAAM,KAAA,WAAA,EAD/C,mBAIM,OAJN,YAIM,CADJ,YAAuD,gCAAA,EAA9B,OAAO,oBAAA,OAAmB,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA;MAErD,mBAMM,OANN,aAMM,CALJ,YAIyD,6BAAA;OAHtD,UAAA,QAAA;OACA,SAAA,QAAA;OACA,YAAY,QAAA,UAAU;OACtB,aAAa,MAAA,eAAc,CAAC,QAAA,UAAU,YAAW;;;;;;;MAEtD,mBAKM,OALN,aAKM,CAJJ,YAGqC,4BAAA;OAFlC,UAAA,QAAA;OACA,SAAA,QAAA;OACA,WAAW,QAAA,UAAU;;;;;;MAKlB,QAAA,WAAW,aAAA,WAAA,EADnB,mBAQM,OARN,aAQM,CALJ,YAIU,mBAAA;OAHP,WAAW,QAAA,UAAU;OACrB,UAAA,QAAA;OACA,SAAA,QAAA;OACA,MAAA,QAAA;;;;;;;;KAKC,QAAA,UAAU,aAAA,WAAA,EADlB,YAGqC,MAAA,yBAAA,EAAA;;MADnC,OAAM;MACL,WAAW,QAAA,UAAU;;KAGxB,mBAyBM,OAAA,MAAA,CAvBY,QAAA,UAAU,gBAAA,WAAA,EAA1B,YAEW,MAAA,iBAAA,EAAA,EAAA,KAAA,GAAA,EAAA;6BADuC,CAAhD,YAAgD,MAAA,qBAAA,EAAA,EAAjC,OAAO,QAAA,UAAU,cAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;yCAGlC,YAkBsB,MAAA,oBAAA,EAAA,MAAA;6BADA,EAAA,WAAA,EAhBpB,YAgBoB,MAAA,oBAAA,EAAA;OAfV,iBAAiB,mBAAA;4FAAkB,QAAA;OAC1C,KAAK,mCAAA;OACN,OAAM;OACL,eAAA,QAAA;OACA,UAAA,QAAA;OACD,UAAA;OACC,WAAA,QAAA;OACA,QAAA,QAAA;OACA,WAAA,QAAA;OACA,MAAA,QAAA;OACA,iCAAgD,6CAAA;OAGhD,iBAAiB,QAAA;OACjB,gBAAA,QAAA;OACA,gBAAA,QAAA;;;;;;;;;;;;;;;;;;OAzED,QAAA,UAAU,cAAA;UACf;sBAQc,CAPf,YAOe,MAAA,eAAA,EAAA;KANZ,cAAc,QAAA;KACf,cAAW;KACX,MAAK;KACL,eAAc;KACb,OAAO,QAAA,UAAU;KAClB,aAAA;KACA,YAAA"}
1
+ {"version":3,"file":"ClassicLayout.vue.script.js","names":[],"sources":["../../../../src/features/Operation/layouts/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport {\n ScalarErrorBoundary,\n ScalarIconButton,\n ScalarMarkdown,\n} from '@scalar/components'\nimport {\n ScalarIconCopy,\n ScalarIconPlay,\n ScalarIconWebhooksLogo,\n} from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { useClipboard } from '@scalar/use-hooks/useClipboard'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport { SectionAccordion } from '@/components/Section'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n 'document' | 'pathValue' | 'server' | 'securitySchemes' | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Track the currently selected example for passing to the modal */\nconst selectedExampleKey = ref<string>('')\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n\nconst { copyToClipboard } = useClipboard()\n</script>\n<template>\n <SectionAccordion\n :id=\"id\"\n :aria-label=\"operationTitle\"\n class=\"reference-endpoint\"\n :modelValue=\"!isCollapsed\"\n transparent\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <div class=\"operation-title\">\n <div class=\"operation-details\">\n <HttpMethod\n class=\"endpoint-type\"\n :method=\"method\"\n short />\n <Anchor\n class=\"endpoint-anchor\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <h3 class=\"endpoint-label\">\n <div class=\"endpoint-label-path\">\n <OperationPath\n :deprecated=\"isOperationDeprecated(operation)\"\n :path=\"path\" />\n </div>\n <div class=\"endpoint-label-name\">\n {{ operationTitle }}\n </div>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </h3>\n </Anchor>\n </div>\n </div>\n </template>\n <template #actions=\"{ active }\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n <template v-if=\"!options.hideTestRequestButton\">\n <TestRequestButton\n v-if=\"active && !isWebhook\"\n :id\n :eventBus\n :exampleName=\"selectedExampleKey\"\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n <ScalarIconPlay\n v-else\n class=\"endpoint-try-hint size-4.5\" />\n </template>\n <span\n v-if=\"options.showOperationId && operation.operationId\"\n class=\"font-code text-sm\">\n {{ operation.operationId }}\n </span>\n <ScalarIconButton\n class=\"endpoint-copy p-0.5\"\n :icon=\"ScalarIconCopy\"\n label=\"Copy endpoint URL\"\n size=\"xs\"\n variant=\"ghost\"\n @click.stop=\"copyToClipboard(path)\" />\n </template>\n <template\n v-if=\"operation.description\"\n #description>\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n </template>\n <div class=\"endpoint-content\">\n <div class=\"operation-details-card\">\n <div\n v-if=\"Object.keys(operationExtensions).length > 0\"\n class=\"operation-details-card-item\">\n <SpecificationExtension :value=\"operationExtensions\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationParameters\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n </div>\n <div class=\"operation-details-card-item\">\n <OperationResponses\n :eventBus\n :options\n :responses=\"operation.responses\" />\n </div>\n\n <!-- Callbacks -->\n <div\n v-if=\"operation?.callbacks\"\n class=\"operation-details-card-item\">\n <Callbacks\n :callbacks=\"operation.callbacks\"\n :eventBus\n :options\n :path />\n </div>\n </div>\n\n <ExampleResponses\n v-if=\"operation.responses\"\n class=\"operation-example-card\"\n :responses=\"operation.responses\" />\n\n <!-- New Example Request -->\n <div>\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n <!-- Request Example -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n v-model:selectedExample=\"selectedExampleKey\"\n :key=\"requestBodyCompositionSelectionKey\"\n class=\"operation-example-card\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer />\n </ScalarErrorBoundary>\n </div>\n </div>\n </SectionAccordion>\n</template>\n\n<style scoped>\n@reference \"@/style.css\";\n\n.operation-title {\n display: flex;\n justify-content: space-between;\n}\n.operation-details {\n display: flex;\n align-items: center;\n margin-top: 0;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n}\n.operation-details :deep(.endpoint-anchor .scalar-button svg) {\n width: 16px;\n height: 16px;\n}\n.endpoint-type {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n\n position: relative;\n z-index: 0;\n\n width: 60px;\n padding: 6px;\n flex-shrink: 0;\n\n font-size: var(--scalar-small);\n\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-family: var(--scalar-font);\n}\n.endpoint-type::after {\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n\n background: currentColor;\n opacity: 0.15;\n\n border-radius: var(--scalar-radius);\n}\n\n.endpoint-anchor {\n display: flex;\n align-items: center;\n min-width: 0;\n flex-shrink: 1;\n}\n.endpoint-anchor.label {\n display: flex;\n}\n.endpoint-label {\n display: flex;\n align-items: baseline;\n gap: 9px;\n\n min-width: 0;\n flex-shrink: 1;\n\n color: var(--scalar-color-1);\n}\n\n.endpoint-label-path {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-mini);\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.endpoint-label-path :deep(em) {\n color: var(--scalar-color-2);\n}\n.endpoint-label-name {\n color: var(--scalar-color-2);\n font-size: var(--scalar-small);\n\n /* Concatenate the name before we shrink the path */\n flex-shrink: 1000000000;\n\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.endpoint-try-hint {\n padding: 2px;\n flex-shrink: 0;\n}\n.endpoint-copy {\n color: currentColor;\n}\n.endpoint-copy :deep(svg) {\n stroke-width: 2px;\n}\n\n.endpoint-content {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: row;\n gap: 9px;\n padding: 9px;\n}\n\n@variant lg {\n .endpoint-content {\n grid-auto-flow: column;\n }\n}\n\n@container (max-width: 900px) {\n .endpoint-content {\n grid-template-columns: 1fr;\n }\n}\n\n.endpoint-content > * {\n min-width: 0;\n}\n\n.operation-details-card {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 0;\n}\n.operation-details-card-item :deep(.parameter-list),\n.operation-details-card-item :deep(.callbacks-list) {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-top: 0;\n}\n\n.operation-details-card-item {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.operation-details-card-item :deep(.parameter-list-items) {\n margin-bottom: 0;\n}\n.operation-details-card :deep(.parameter-item:last-of-type .parameter-schema) {\n padding-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-list .parameter-list) {\n margin-bottom: 12px;\n}\n.operation-details-card :deep(.parameter-item) {\n margin: 0;\n padding: 0;\n}\n.operation-details-card :deep(.property) {\n padding: 9px;\n margin: 0;\n}\n.operation-details-card :deep(.parameter-list-title),\n.operation-details-card :deep(.request-body-title),\n.operation-details-card :deep(.callbacks-title) {\n text-transform: uppercase;\n font-weight: var(--scalar-bold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n line-height: 1.33;\n padding: 9px;\n margin: 0;\n}\n\n.operation-details-card :deep(.callback-list-item-title) {\n padding-left: 28px;\n padding-right: 12px;\n}\n\n.operation-details-card :deep(.callback-list-item-icon) {\n left: 6px;\n}\n\n.operation-details-card :deep(.callback-operation-container) {\n padding-inline: 9px;\n padding-bottom: 9px;\n}\n\n.operation-details-card :deep(.callback-operation-container > .request-body),\n.operation-details-card :deep(.callback-operation-container > .parameter-list) {\n border: none;\n}\n\n.operation-details-card\n :deep(.callback-operation-container > .request-body > .request-body-header) {\n padding: 0;\n padding-bottom: 9px;\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body-description) {\n margin-top: 0;\n padding: 9px 9px 0 9px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.operation-details-card :deep(.request-body) {\n margin-top: 0;\n border-radius: var(--scalar-radius-lg);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.operation-details-card\n :deep(.request-body .schema-card--level-0 > .schema-card-description) {\n padding-inline: 9px;\n}\n\n.operation-details-card :deep(.request-body-header) {\n padding-bottom: 0;\n border-bottom: 0;\n}\n\n.operation-details-card :deep(.contents button) {\n margin-right: 9px;\n}\n\n.operation-details-card\n :deep(.schema-card--open + .schema-card:not(.schema-card--open)) {\n margin-inline: 9px;\n margin-bottom: 9px;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n.operation-details-card :deep(.request-body-schema .property--level-0) {\n padding: 0;\n}\n\n.operation-details-card :deep(.selected-content-type) {\n margin-right: 9px;\n}\n\n.operation-example-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n max-height: calc(var(--refs-viewport-height) - 48px);\n}\n\n@media (max-width: 600px) {\n .operation-example-card {\n max-height: unset;\n position: static;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEA,MAAM,iBAAiB,eAAe,QAAA,UAAU,WAAW,QAAA,QAAQ,GAAE;EACrE,MAAM,sBAAsB,eAAe,mBAAmB,QAAA,UAAU,CAAA;;EAGxE,MAAM,qBAAqB,IAAY,GAAE;;EAGzC,MAAM,kCAAkC,IAAqC,EAAE,CAAA;EAE/E,MAAM,+CAA+C,gBACX,EACtC,GAAG,gCAAgC,OACpC,EACH;EAEA,MAAM,qCAAqC,eACzC,KAAK,UAAU,6CAA6C,MAAM,CACpE;AAEA,UAAQ,uCAAuC,gCAA+B;EAE9E,MAAM,EAAE,oBAAoB,cAAa;;uBAGvC,YAmKmB,MAAA,yBAAA,EAAA;IAlKhB,IAAI,QAAA;IACJ,cAAY,eAAA;IACb,OAAM;IACL,YAAU,CAAG,QAAA;IACd,aAAA;IACC,uBAAiB,OAAA,OAAA,OAAA,MAAU,UAAU,QAAA,UAAU,KAAI,mBAAA;KAAA,IAAsB,QAAA;KAAE,MAAQ;KAAK,CAAA;;IAG9E,OAAK,cAyCR,CAxCN,mBAwCM,OAxCN,YAwCM,CAvCJ,mBAsCM,OAtCN,YAsCM,CArCJ,YAGU,MAAA,mBAAA,EAAA;KAFR,OAAM;KACL,QAAQ,QAAA;KACT,OAAA;6BACF,YAgCS,MAAA,eAAA,EAAA;KA/BP,OAAM;KACL,iBAAa,OAAA,OAAA,OAAA,WAAQ,QAAA,UAAU,KAAI,qBAAA,EAAA,IAAwB,QAAA,IAAE,CAAA;;4BA6BzD,CA5BL,mBA4BK,MA5BL,YA4BK;MA3BH,mBAIM,OAJN,YAIM,CAHJ,YAEiB,uBAAA;OADd,YAAY,MAAA,sBAAqB,CAAC,QAAA,UAAS;OAC3C,MAAM,QAAA;;MAEX,mBAEM,OAFN,YAEM,gBADD,eAAA,MAAc,EAAA,EAAA;MAIX,MAAA,sBAAqB,CAAC,QAAA,UAAS,IAAA,WAAA,EADvC,YAKQ,MAAA,cAAA,EAAA;;OAHN,OAAK,eAAA,CAAC,cACE,MAAA,2BAA0B,CAAC,QAAA,UAAS,CAAA,CAAA;;8BACN,CAAA,gBAAA,gBAAnC,MAAA,sBAAqB,CAAC,QAAA,UAAS,CAAA,EAAA,EAAA,CAAA,CAAA;;;MAK5B,QAAA,aAAA,WAAA,EADR,YAIQ,MAAA,cAAA,EAAA;;OAFN,OAAM;;8BACkC,CAAxC,YAAwC,MAAA,uBAAA,EAAA,EAAhB,QAAO,QAAM,CAAA,EAAA,OAAA,OAAA,OAAA,KAAA,gBAAG,YAC1C,GAAA,EAAA,CAAA;;;MAGA,YAEsB,MAAA,gBAAA,EAAA;OADnB,QAAQ,QAAA,UAAS;OAClB,UAAS;;;;;IAMV,SAAO,SAIK,EAJD,aAAM;KAE1B,YAEqB,MAAA,gBAAA,EAAA;MADlB,QAAQ,QAAA,UAAS;MAClB,UAAS;;MACM,QAAA,QAAQ,yBAAA,WAAA,EAAzB,mBAcW,UAAA,EAAA,KAAA,GAAA,EAAA,CAZD,UAAM,CAAK,QAAA,aAAA,WAAA,EADnB,YASM,MAAA,0BAAA,EAAA;;MAPH,IAAA,QAAA;MACA,UAAA,QAAA;MACA,aAAa,mBAAA;MACb,QAAA,QAAA;MACA,MAAA,QAAA;MACA,iCAA8C,6CAAA;;;;;;;;yBAGjD,YAEuC,MAAA,eAAA,EAAA;;MAArC,OAAM;;KAGF,QAAA,QAAQ,mBAAmB,QAAA,UAAU,eAAA,WAAA,EAD7C,mBAIO,QAJP,YAIO,gBADF,QAAA,UAAU,YAAW,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAE1B,YAMwC,MAAA,iBAAA,EAAA;MALtC,OAAM;MACL,MAAM,MAAA,eAAc;MACrB,OAAM;MACN,MAAK;MACL,SAAQ;MACP,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,MAAA,gBAAe,CAAC,QAAA,KAAI,EAAA,CAAA,OAAA,CAAA;;;2BA+E/B,CAjEN,mBAiEM,OAjEN,YAiEM;KAhEJ,mBA8BM,OA9BN,YA8BM;MA5BI,OAAO,KAAK,oBAAA,MAAmB,CAAE,SAAM,KAAA,WAAA,EAD/C,mBAIM,OAJN,YAIM,CADJ,YAAuD,gCAAA,EAA9B,OAAO,oBAAA,OAAmB,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA;MAErD,mBAMM,OANN,aAMM,CALJ,YAIyD,6BAAA;OAHtD,UAAA,QAAA;OACA,SAAA,QAAA;OACA,YAAY,QAAA,UAAU;OACtB,aAAa,MAAA,eAAc,CAAC,QAAA,UAAU,YAAW;;;;;;;MAEtD,mBAKM,OALN,aAKM,CAJJ,YAGqC,4BAAA;OAFlC,UAAA,QAAA;OACA,SAAA,QAAA;OACA,WAAW,QAAA,UAAU;;;;;;MAKlB,QAAA,WAAW,aAAA,WAAA,EADnB,mBAQM,OARN,aAQM,CALJ,YAIU,mBAAA;OAHP,WAAW,QAAA,UAAU;OACrB,UAAA,QAAA;OACA,SAAA,QAAA;OACA,MAAA,QAAA;;;;;;;;KAKC,QAAA,UAAU,aAAA,WAAA,EADlB,YAGqC,MAAA,yBAAA,EAAA;;MADnC,OAAM;MACL,WAAW,QAAA,UAAU;;KAGxB,mBAyBM,OAAA,MAAA,CAvBY,QAAA,UAAU,gBAAA,WAAA,EAA1B,YAEW,MAAA,iBAAA,EAAA,EAAA,KAAA,GAAA,EAAA;6BADuC,CAAhD,YAAgD,MAAA,qBAAA,EAAA,EAAjC,OAAO,QAAA,UAAU,cAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;yCAGlC,YAkBsB,MAAA,oBAAA,EAAA,MAAA;6BADA,EAAA,WAAA,EAhBpB,YAgBoB,MAAA,oBAAA,EAAA;OAfV,iBAAiB,mBAAA;4FAAkB,QAAA;OAC1C,KAAK,mCAAA;OACN,OAAM;OACL,eAAA,QAAA;OACA,UAAA,QAAA;OACD,UAAA;OACC,WAAA,QAAA;OACA,QAAA,QAAA;OACA,WAAA,QAAA;OACA,MAAA,QAAA;OACA,iCAAgD,6CAAA;OAGhD,iBAAiB,QAAA;OACjB,gBAAA,QAAA;OACA,gBAAA,QAAA;;;;;;;;;;;;;;;;;;OAzED,QAAA,UAAU,cAAA;UACf;sBAQc,CAPf,YAOe,MAAA,eAAA,EAAA;KANZ,cAAc,QAAA;KACf,cAAW;KACX,MAAK;KACL,eAAc;KACb,OAAO,QAAA,UAAU;KAClB,aAAA;KACA,YAAA"}
@@ -1,4 +1,4 @@
1
- import type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block';
1
+ import type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example';
2
2
  import type { OperationObject, ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
3
3
  import type { OperationProps } from '../../../features/Operation/Operation.vue.js';
4
4
  type __VLS_Props = Omit<OperationProps, 'document' | 'pathValue' | 'server' | 'isCollapsed' | 'securitySchemes' | 'authStore'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"ModernLayout.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"names":[],"mappings":"AA0RA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AASzG,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,8DAA8D,CAAA;AAqBrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAUxE,KAAK,WAAW,GAAG,IAAI,CACnB,cAAc,EACZ,UAAU,GACV,WAAW,GACX,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,WAAW,CACd,GAAG;IACF,wCAAwC;IACxC,SAAS,EAAE,eAAe,CAAA;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,sDAAsD;IACtD,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;CACtD,CAAC;AAklBJ,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ModernLayout.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"names":[],"mappings":"AAkSA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AACzF,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,8DAA8D,CAAA;AAqBrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAUxE,KAAK,WAAW,GAAG,IAAI,CACnB,cAAc,EACZ,UAAU,GACV,WAAW,GACX,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,WAAW,CACd,GAAG;IACF,wCAAwC;IACxC,SAAS,EAAE,eAAe,CAAA;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,sDAAsD;IACtD,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;CACtD,CAAC;AAklBJ,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import ModernLayout_vue_vue_type_script_setup_true_lang_default from "./ModernLayout.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/features/Operation/layouts/ModernLayout.vue
5
- var ModernLayout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ModernLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9c51b5c5"]]);
5
+ var ModernLayout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ModernLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6488f75e"]]);
6
6
  //#endregion
7
7
  export { ModernLayout_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"ModernLayout.vue.js","names":[],"sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { ScalarErrorBoundary, ScalarMarkdown } from '@scalar/components'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref, useId } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport AskAgentButton from '@/features/ask-agent-button/AskAgentButton.vue'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n | 'document'\n | 'pathValue'\n | 'server'\n | 'isCollapsed'\n | 'securitySchemes'\n | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\n\nconst labelId = useId()\n\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n</script>\n\n<template>\n <Section\n :id=\"id\"\n :aria-labelledby=\"labelId\"\n :label=\"operationTitle\"\n tabindex=\"-1\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionContent>\n <div class=\"flex flex-row justify-between gap-1\">\n <!-- Left -->\n <div class=\"flex gap-1\">\n <!-- Operation ID -->\n <Badge v-if=\"options?.showOperationId && operation.operationId\">\n {{ operation.operationId }}\n </Badge>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </div>\n <!-- Right -->\n <div class=\"flex gap-1\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n </div>\n </div>\n <div :class=\"isOperationDeprecated(operation) ? 'deprecated' : ''\">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag\n :id=\"labelId\"\n :level=\"3\">\n {{ operationTitle }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n </div>\n <SectionColumns>\n <SectionColumn>\n <div class=\"operation-details\">\n <SpecificationExtension :value=\"operationExtensions\" />\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n <OperationParameters\n :breadcrumb=\"[id]\"\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n <OperationResponses\n :breadcrumb=\"[id]\"\n :collapsableItems=\"!options.expandAllResponses\"\n :eventBus\n :options\n :responses=\"operation.responses\" />\n\n <!-- Callbacks -->\n <ScalarErrorBoundary>\n <Callbacks\n v-if=\"operation.callbacks\"\n :callbacks=\"operation.callbacks\"\n class=\"mt-6\"\n :eventBus\n :options\n :path />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n <SectionColumn>\n <div class=\"examples\">\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n\n <!-- New Example Request -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n :key=\"requestBodyCompositionSelectionKey\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer>\n <template #header>\n <OperationPath\n class=\"font-code text-c-2 [&_em]:text-c-1 [&_em]:not-italic\"\n :deprecated=\"operation?.deprecated\"\n :path=\"path\" />\n </template>\n <template\n v-if=\"!isWebhook\"\n #footer=\"{ exampleName }\">\n <div class=\"flex\">\n <AskAgentButton />\n <TestRequestButton\n v-if=\"!options.hideTestRequestButton\"\n :id\n :eventBus\n :exampleName\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n </div>\n </template>\n </OperationCodeSample>\n </ScalarErrorBoundary>\n\n <ScalarErrorBoundary>\n <ExampleResponses\n v-if=\"operation.responses\"\n :responses=\"operation.responses\"\n style=\"margin-top: 12px\" />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n </Section>\n</template>\n\n<style scoped>\n.examples {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n}\n\n.examples > * {\n max-height: calc((var(--refs-viewport-height) - 60px) / 2);\n position: relative;\n}\n\n.examples > *:first-of-type:last-of-type {\n max-height: calc((var(--refs-viewport-height) - 60px));\n}\n\n/*\n * Don't constrain card height on mobile\n * (or zoomed in screens)\n */\n@media (max-width: 600px) {\n .examples > * {\n max-height: unset;\n }\n}\n.deprecated * {\n text-decoration: line-through;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ModernLayout.vue.js","names":[],"sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { ScalarErrorBoundary, ScalarMarkdown } from '@scalar/components'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref, useId } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport AskAgentButton from '@/features/ask-agent-button/AskAgentButton.vue'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n | 'document'\n | 'pathValue'\n | 'server'\n | 'isCollapsed'\n | 'securitySchemes'\n | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\n\nconst labelId = useId()\n\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n</script>\n\n<template>\n <Section\n :id=\"id\"\n :aria-labelledby=\"labelId\"\n :label=\"operationTitle\"\n tabindex=\"-1\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionContent>\n <div class=\"flex flex-row justify-between gap-1\">\n <!-- Left -->\n <div class=\"flex gap-1\">\n <!-- Operation ID -->\n <Badge v-if=\"options?.showOperationId && operation.operationId\">\n {{ operation.operationId }}\n </Badge>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </div>\n <!-- Right -->\n <div class=\"flex gap-1\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n </div>\n </div>\n <div :class=\"isOperationDeprecated(operation) ? 'deprecated' : ''\">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag\n :id=\"labelId\"\n :level=\"3\">\n {{ operationTitle }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n </div>\n <SectionColumns>\n <SectionColumn>\n <div class=\"operation-details\">\n <SpecificationExtension :value=\"operationExtensions\" />\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n <OperationParameters\n :breadcrumb=\"[id]\"\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n <OperationResponses\n :breadcrumb=\"[id]\"\n :collapsableItems=\"!options.expandAllResponses\"\n :eventBus\n :options\n :responses=\"operation.responses\" />\n\n <!-- Callbacks -->\n <ScalarErrorBoundary>\n <Callbacks\n v-if=\"operation.callbacks\"\n :callbacks=\"operation.callbacks\"\n class=\"mt-6\"\n :eventBus\n :options\n :path />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n <SectionColumn>\n <div class=\"examples\">\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n\n <!-- New Example Request -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n :key=\"requestBodyCompositionSelectionKey\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer>\n <template #header>\n <OperationPath\n class=\"font-code text-c-2 [&_em]:text-c-1 [&_em]:not-italic\"\n :deprecated=\"operation?.deprecated\"\n :path=\"path\" />\n </template>\n <template\n v-if=\"!isWebhook\"\n #footer=\"{ exampleName }\">\n <div class=\"flex\">\n <AskAgentButton />\n <TestRequestButton\n v-if=\"!options.hideTestRequestButton\"\n :id\n :eventBus\n :exampleName\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n </div>\n </template>\n </OperationCodeSample>\n </ScalarErrorBoundary>\n\n <ScalarErrorBoundary>\n <ExampleResponses\n v-if=\"operation.responses\"\n :responses=\"operation.responses\"\n style=\"margin-top: 12px\" />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n </Section>\n</template>\n\n<style scoped>\n.examples {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n}\n\n.examples > * {\n max-height: calc((var(--refs-viewport-height) - 60px) / 2);\n position: relative;\n}\n\n.examples > *:first-of-type:last-of-type {\n max-height: calc((var(--refs-viewport-height) - 60px));\n}\n\n/*\n * Don't constrain card height on mobile\n * (or zoomed in screens)\n */\n@media (max-width: 600px) {\n .examples > * {\n max-height: unset;\n }\n}\n.deprecated * {\n text-decoration: line-through;\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ModernLayout.vue.script.js","names":[],"sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { ScalarErrorBoundary, ScalarMarkdown } from '@scalar/components'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref, useId } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport AskAgentButton from '@/features/ask-agent-button/AskAgentButton.vue'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n | 'document'\n | 'pathValue'\n | 'server'\n | 'isCollapsed'\n | 'securitySchemes'\n | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\n\nconst labelId = useId()\n\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n</script>\n\n<template>\n <Section\n :id=\"id\"\n :aria-labelledby=\"labelId\"\n :label=\"operationTitle\"\n tabindex=\"-1\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionContent>\n <div class=\"flex flex-row justify-between gap-1\">\n <!-- Left -->\n <div class=\"flex gap-1\">\n <!-- Operation ID -->\n <Badge v-if=\"options?.showOperationId && operation.operationId\">\n {{ operation.operationId }}\n </Badge>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </div>\n <!-- Right -->\n <div class=\"flex gap-1\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n </div>\n </div>\n <div :class=\"isOperationDeprecated(operation) ? 'deprecated' : ''\">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag\n :id=\"labelId\"\n :level=\"3\">\n {{ operationTitle }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n </div>\n <SectionColumns>\n <SectionColumn>\n <div class=\"operation-details\">\n <SpecificationExtension :value=\"operationExtensions\" />\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n <OperationParameters\n :breadcrumb=\"[id]\"\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n <OperationResponses\n :breadcrumb=\"[id]\"\n :collapsableItems=\"!options.expandAllResponses\"\n :eventBus\n :options\n :responses=\"operation.responses\" />\n\n <!-- Callbacks -->\n <ScalarErrorBoundary>\n <Callbacks\n v-if=\"operation.callbacks\"\n :callbacks=\"operation.callbacks\"\n class=\"mt-6\"\n :eventBus\n :options\n :path />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n <SectionColumn>\n <div class=\"examples\">\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n\n <!-- New Example Request -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n :key=\"requestBodyCompositionSelectionKey\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer>\n <template #header>\n <OperationPath\n class=\"font-code text-c-2 [&_em]:text-c-1 [&_em]:not-italic\"\n :deprecated=\"operation?.deprecated\"\n :path=\"path\" />\n </template>\n <template\n v-if=\"!isWebhook\"\n #footer=\"{ exampleName }\">\n <div class=\"flex\">\n <AskAgentButton />\n <TestRequestButton\n v-if=\"!options.hideTestRequestButton\"\n :id\n :eventBus\n :exampleName\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n </div>\n </template>\n </OperationCodeSample>\n </ScalarErrorBoundary>\n\n <ScalarErrorBoundary>\n <ExampleResponses\n v-if=\"operation.responses\"\n :responses=\"operation.responses\"\n style=\"margin-top: 12px\" />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n </Section>\n</template>\n\n<style scoped>\n.examples {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n}\n\n.examples > * {\n max-height: calc((var(--refs-viewport-height) - 60px) / 2);\n position: relative;\n}\n\n.examples > *:first-of-type:last-of-type {\n max-height: calc((var(--refs-viewport-height) - 60px));\n}\n\n/*\n * Don't constrain card height on mobile\n * (or zoomed in screens)\n */\n@media (max-width: 600px) {\n .examples > * {\n max-height: unset;\n }\n}\n.deprecated * {\n text-decoration: line-through;\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModernLayout.vue.script.js","names":[],"sources":["../../../../src/features/Operation/layouts/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { OperationCodeSample } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { ScalarErrorBoundary, ScalarMarkdown } from '@scalar/components'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport {\n getOperationStability,\n getOperationStabilityColor,\n isOperationDeprecated,\n} from '@scalar/oas-utils/helpers'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport type {\n OperationObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, provide, ref, useId } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport { Badge } from '@/components/Badge'\nimport { LinkList } from '@/components/LinkList'\nimport OperationPath from '@/components/OperationPath.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport AskAgentButton from '@/features/ask-agent-button/AskAgentButton.vue'\nimport { ExampleResponses } from '@/features/example-responses'\nimport { ExternalDocs } from '@/features/external-docs'\nimport Callbacks from '@/features/Operation/components/callbacks/Callbacks.vue'\nimport OperationParameters from '@/features/Operation/components/OperationParameters.vue'\nimport OperationResponses from '@/features/Operation/components/OperationResponses.vue'\nimport type { OperationProps } from '@/features/Operation/Operation.vue'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport SpecificationExtension from '@/features/specification-extension/SpecificationExtension.vue'\nimport { TestRequestButton } from '@/features/test-request-button'\nimport { XBadges } from '@/features/x-badges'\n\nconst {\n clientOptions,\n eventBus,\n isWebhook,\n method,\n operation,\n options,\n path,\n selectedServer,\n selectedSecuritySchemes,\n selectedClient,\n} = defineProps<\n Omit<\n OperationProps,\n | 'document'\n | 'pathValue'\n | 'server'\n | 'isCollapsed'\n | 'securitySchemes'\n | 'authStore'\n > & {\n /** Operation object with path params */\n operation: OperationObject\n /** The selected server for the operation */\n selectedServer: ServerObject | null\n /** The selected security schemes for the operation */\n selectedSecuritySchemes: SecuritySchemeObjectSecret[]\n }\n>()\n\nconst operationTitle = computed(() => operation.summary || path || '')\n\nconst labelId = useId()\n\nconst operationExtensions = computed(() => getXKeysFromObject(operation))\n\n/** Selected request body oneOf/anyOf variants; synced with schema dropdowns and code sample */\nconst requestBodyCompositionSelection = ref<RequestBodyCompositionSelection>({})\n\nconst requestBodyCompositionSelectionForCodeSample = computed(\n (): RequestBodyCompositionSelection => ({\n ...requestBodyCompositionSelection.value,\n }),\n)\n\nconst requestBodyCompositionSelectionKey = computed(() =>\n JSON.stringify(requestBodyCompositionSelectionForCodeSample.value),\n)\n\nprovide(REQUEST_BODY_COMPOSITION_INDEX_SYMBOL, requestBodyCompositionSelection)\n</script>\n\n<template>\n <Section\n :id=\"id\"\n :aria-labelledby=\"labelId\"\n :label=\"operationTitle\"\n tabindex=\"-1\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionContent>\n <div class=\"flex flex-row justify-between gap-1\">\n <!-- Left -->\n <div class=\"flex gap-1\">\n <!-- Operation ID -->\n <Badge v-if=\"options?.showOperationId && operation.operationId\">\n {{ operation.operationId }}\n </Badge>\n <!-- Stability badge -->\n <Badge\n v-if=\"getOperationStability(operation)\"\n class=\"capitalize\"\n :class=\"getOperationStabilityColor(operation)\">\n {{ getOperationStability(operation) }}\n </Badge>\n <!-- Webhook badge -->\n <Badge\n v-if=\"isWebhook\"\n class=\"font-code text-green flex w-fit items-center justify-center gap-1\">\n <ScalarIconWebhooksLogo weight=\"bold\" />Webhook\n </Badge>\n <!-- x-badges before -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"before\" />\n </div>\n <!-- Right -->\n <div class=\"flex gap-1\">\n <!-- x-badges after -->\n <XBadges\n :badges=\"operation['x-badges']\"\n position=\"after\" />\n </div>\n </div>\n <div :class=\"isOperationDeprecated(operation) ? 'deprecated' : ''\">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag\n :id=\"labelId\"\n :level=\"3\">\n {{ operationTitle }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n </div>\n <SectionColumns>\n <SectionColumn>\n <div class=\"operation-details\">\n <SpecificationExtension :value=\"operationExtensions\" />\n <ScalarMarkdown\n :anchorPrefix=\"id\"\n aria-label=\"Operation Description\"\n role=\"group\"\n transformType=\"heading\"\n :value=\"operation.description\"\n withAnchors\n withImages />\n <OperationParameters\n :breadcrumb=\"[id]\"\n :eventBus\n :options\n :parameters=\"operation.parameters\"\n :requestBody=\"getResolvedRef(operation.requestBody)\" />\n <OperationResponses\n :breadcrumb=\"[id]\"\n :collapsableItems=\"!options.expandAllResponses\"\n :eventBus\n :options\n :responses=\"operation.responses\" />\n\n <!-- Callbacks -->\n <ScalarErrorBoundary>\n <Callbacks\n v-if=\"operation.callbacks\"\n :callbacks=\"operation.callbacks\"\n class=\"mt-6\"\n :eventBus\n :options\n :path />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n <SectionColumn>\n <div class=\"examples\">\n <!-- External Docs -->\n <LinkList v-if=\"operation.externalDocs\">\n <ExternalDocs :value=\"operation.externalDocs\" />\n </LinkList>\n\n <!-- New Example Request -->\n <ScalarErrorBoundary>\n <OperationCodeSample\n :key=\"requestBodyCompositionSelectionKey\"\n :clientOptions\n :eventBus\n fallback\n :isWebhook\n :method\n :operation\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \"\n :securitySchemes=\"selectedSecuritySchemes\"\n :selectedClient\n :selectedServer>\n <template #header>\n <OperationPath\n class=\"font-code text-c-2 [&_em]:text-c-1 [&_em]:not-italic\"\n :deprecated=\"operation?.deprecated\"\n :path=\"path\" />\n </template>\n <template\n v-if=\"!isWebhook\"\n #footer=\"{ exampleName }\">\n <div class=\"flex\">\n <AskAgentButton />\n <TestRequestButton\n v-if=\"!options.hideTestRequestButton\"\n :id\n :eventBus\n :exampleName\n :method\n :path\n :requestBodyCompositionSelection=\"\n requestBodyCompositionSelectionForCodeSample\n \" />\n </div>\n </template>\n </OperationCodeSample>\n </ScalarErrorBoundary>\n\n <ScalarErrorBoundary>\n <ExampleResponses\n v-if=\"operation.responses\"\n :responses=\"operation.responses\"\n style=\"margin-top: 12px\" />\n </ScalarErrorBoundary>\n </div>\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n </Section>\n</template>\n\n<style scoped>\n.examples {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n}\n\n.examples > * {\n max-height: calc((var(--refs-viewport-height) - 60px) / 2);\n position: relative;\n}\n\n.examples > *:first-of-type:last-of-type {\n max-height: calc((var(--refs-viewport-height) - 60px));\n}\n\n/*\n * Don't constrain card height on mobile\n * (or zoomed in screens)\n */\n@media (max-width: 600px) {\n .examples > * {\n max-height: unset;\n }\n}\n.deprecated * {\n text-decoration: line-through;\n}\n</style>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-fuse-instance.d.ts","sourceRoot":"","sources":["../../../../src/features/Search/helpers/create-fuse-instance.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEvD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,CA6CnD"}
1
+ {"version":3,"file":"create-fuse-instance.d.ts","sourceRoot":"","sources":["../../../../src/features/Search/helpers/create-fuse-instance.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEvD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,CA+CnD"}
@@ -20,6 +20,10 @@ function createFuseInstance() {
20
20
  name: "body",
21
21
  weight: .2
22
22
  },
23
+ {
24
+ name: "responseExamples",
25
+ weight: .25
26
+ },
23
27
  {
24
28
  name: "operationId",
25
29
  weight: .6
@@ -1 +1 @@
1
- {"version":3,"file":"create-fuse-instance.js","names":[],"sources":["../../../../src/features/Search/helpers/create-fuse-instance.ts"],"sourcesContent":["import Fuse from 'fuse.js'\n\nimport type { FuseData } from '@/features/Search/types'\n\n/**\n * Create a Fuse instance for searching the API reference.\n *\n * Doesn't have any data yet, so it's empty.\n */\nexport function createFuseInstance(): Fuse<FuseData> {\n return new Fuse([], {\n // Define searchable fields with weights to prioritize more important matches\n keys: [\n // Highest weight - titles are most descriptive\n { name: 'title', weight: 0.7 },\n // Medium weight - helpful but often verbose\n { name: 'description', weight: 0.3 },\n // Lowest weight - can be very long and noisy\n { name: 'body', weight: 0.2 },\n // High weight - unique identifiers for operations\n { name: 'operationId', weight: 0.6 },\n // Good weight - endpoint paths are searchable\n { name: 'path', weight: 0.5 },\n // Medium-high weight - helps with categorization\n { name: 'tag', weight: 0.4 },\n // Medium weight - useful for filtering by method\n { name: 'method', weight: 0.3 },\n ],\n\n // Threshold controls how strict the matching is (0.0 = perfect match, 1.0 = very loose)\n // 0.3 allows for some typos and partial matches while maintaining relevance\n threshold: 0.3,\n\n // Maximum distance between characters that can be matched\n // Higher values allow matches even when characters are far apart in long text\n distance: 100,\n\n // Include the match score in results for debugging and potential UI enhancements\n includeScore: true,\n\n // Include detailed match information showing which parts of the text matched\n includeMatches: true,\n\n // Don't require matches to be at the beginning of strings\n // Makes search more flexible and user-friendly\n ignoreLocation: true,\n\n // Enable advanced search syntax like 'exact' for exact matches or !exclude for exclusions\n useExtendedSearch: true,\n\n // Find all possible matches in each item, not just the first one\n // Ensures comprehensive search results\n findAllMatches: true,\n })\n}\n"],"mappings":";;;;;;;AASA,SAAgB,qBAAqC;AACnD,QAAO,IAAI,KAAK,EAAE,EAAE;EAElB,MAAM;GAEJ;IAAE,MAAM;IAAS,QAAQ;IAAK;GAE9B;IAAE,MAAM;IAAe,QAAQ;IAAK;GAEpC;IAAE,MAAM;IAAQ,QAAQ;IAAK;GAE7B;IAAE,MAAM;IAAe,QAAQ;IAAK;GAEpC;IAAE,MAAM;IAAQ,QAAQ;IAAK;GAE7B;IAAE,MAAM;IAAO,QAAQ;IAAK;GAE5B;IAAE,MAAM;IAAU,QAAQ;IAAK;GAChC;EAID,WAAW;EAIX,UAAU;EAGV,cAAc;EAGd,gBAAgB;EAIhB,gBAAgB;EAGhB,mBAAmB;EAInB,gBAAgB;EACjB,CAAC"}
1
+ {"version":3,"file":"create-fuse-instance.js","names":[],"sources":["../../../../src/features/Search/helpers/create-fuse-instance.ts"],"sourcesContent":["import Fuse from 'fuse.js'\n\nimport type { FuseData } from '@/features/Search/types'\n\n/**\n * Create a Fuse instance for searching the API reference.\n *\n * Doesn't have any data yet, so it's empty.\n */\nexport function createFuseInstance(): Fuse<FuseData> {\n return new Fuse([], {\n // Define searchable fields with weights to prioritize more important matches\n keys: [\n // Highest weight - titles are most descriptive\n { name: 'title', weight: 0.7 },\n // Medium weight - helpful but often verbose\n { name: 'description', weight: 0.3 },\n // Lowest weight - can be very long and noisy\n { name: 'body', weight: 0.2 },\n // Low-medium weight - response examples can help full-text matching\n { name: 'responseExamples', weight: 0.25 },\n // High weight - unique identifiers for operations\n { name: 'operationId', weight: 0.6 },\n // Good weight - endpoint paths are searchable\n { name: 'path', weight: 0.5 },\n // Medium-high weight - helps with categorization\n { name: 'tag', weight: 0.4 },\n // Medium weight - useful for filtering by method\n { name: 'method', weight: 0.3 },\n ],\n\n // Threshold controls how strict the matching is (0.0 = perfect match, 1.0 = very loose)\n // 0.3 allows for some typos and partial matches while maintaining relevance\n threshold: 0.3,\n\n // Maximum distance between characters that can be matched\n // Higher values allow matches even when characters are far apart in long text\n distance: 100,\n\n // Include the match score in results for debugging and potential UI enhancements\n includeScore: true,\n\n // Include detailed match information showing which parts of the text matched\n includeMatches: true,\n\n // Don't require matches to be at the beginning of strings\n // Makes search more flexible and user-friendly\n ignoreLocation: true,\n\n // Enable advanced search syntax like 'exact' for exact matches or !exclude for exclusions\n useExtendedSearch: true,\n\n // Find all possible matches in each item, not just the first one\n // Ensures comprehensive search results\n findAllMatches: true,\n })\n}\n"],"mappings":";;;;;;;AASA,SAAgB,qBAAqC;AACnD,QAAO,IAAI,KAAK,EAAE,EAAE;EAElB,MAAM;GAEJ;IAAE,MAAM;IAAS,QAAQ;IAAK;GAE9B;IAAE,MAAM;IAAe,QAAQ;IAAK;GAEpC;IAAE,MAAM;IAAQ,QAAQ;IAAK;GAE7B;IAAE,MAAM;IAAoB,QAAQ;IAAM;GAE1C;IAAE,MAAM;IAAe,QAAQ;IAAK;GAEpC;IAAE,MAAM;IAAQ,QAAQ;IAAK;GAE7B;IAAE,MAAM;IAAO,QAAQ;IAAK;GAE5B;IAAE,MAAM;IAAU,QAAQ;IAAK;GAChC;EAID,WAAW;EAIX,UAAU;EAGV,cAAc;EAGd,gBAAgB;EAIhB,gBAAgB;EAGhB,mBAAmB;EAInB,gBAAgB;EACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-search-index.d.ts","sourceRoot":"","sources":["../../../../src/features/Search/helpers/create-search-index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,QAAQ,EAAE,CAoBnF"}
1
+ {"version":3,"file":"create-search-index.d.ts","sourceRoot":"","sources":["../../../../src/features/Search/helpers/create-search-index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,8DAA8D,CAAA;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AA0DvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,QAAQ,EAAE,CAoBnF"}
@@ -1,6 +1,36 @@
1
1
  import { createParameterMap, extractRequestBody } from "../../../helpers/openapi.js";
2
+ import { combineParams } from "@scalar/workspace-store/request-example";
2
3
  import { getResolvedRef } from "@scalar/workspace-store/helpers/get-resolved-ref";
3
4
  //#region src/features/Search/helpers/create-search-index.ts
5
+ function responseExampleValueToString(value) {
6
+ if (typeof value === "string") return value;
7
+ try {
8
+ return JSON.stringify(value);
9
+ } catch (_error) {
10
+ return "";
11
+ }
12
+ }
13
+ function mediaTypeExamplesToStrings(mediaType) {
14
+ const examplesFromNamedMap = Object.values(mediaType.examples ?? {}).flatMap((example) => {
15
+ const resolvedExample = getResolvedRef(example);
16
+ if (!resolvedExample || !("value" in resolvedExample)) return [];
17
+ return responseExampleValueToString(resolvedExample.value);
18
+ }).filter((value) => value.length > 0);
19
+ const mediaTypeExample = "example" in mediaType && mediaType.example !== void 0 ? responseExampleValueToString(mediaType.example) : "";
20
+ return mediaTypeExample ? [mediaTypeExample, ...examplesFromNamedMap] : examplesFromNamedMap;
21
+ }
22
+ function extractResponseExamples(responses) {
23
+ if (!responses) return [];
24
+ return Object.values(responses).flatMap((response) => {
25
+ const resolvedResponse = getResolvedRef(response);
26
+ if (!resolvedResponse?.content) return [];
27
+ return Object.values(resolvedResponse.content).flatMap((mediaType) => {
28
+ const resolvedMediaType = getResolvedRef(mediaType);
29
+ if (!resolvedMediaType) return [];
30
+ return mediaTypeExamplesToStrings(resolvedMediaType);
31
+ });
32
+ }).filter((value) => value.length > 0);
33
+ }
4
34
  /**
5
35
  * Create a search index from a list of entries.
6
36
  */
@@ -23,18 +53,25 @@ function createSearchIndex(document) {
23
53
  */
24
54
  function addEntryToIndex(entry, index, document) {
25
55
  if (entry.type === "operation") {
26
- const operation = getResolvedRef(document?.paths?.[entry.path]?.[entry.method]) ?? {};
27
- const requestBodyOrParameterMap = extractRequestBody(operation) || createParameterMap(operation);
56
+ const pathItem = getResolvedRef(document?.paths?.[entry.path]);
57
+ const operation = getResolvedRef(pathItem?.[entry.method]) ?? {};
58
+ const operationWithPathParams = {
59
+ ...operation,
60
+ parameters: combineParams(pathItem?.parameters, operation.parameters)
61
+ };
62
+ const requestBodyOrParameterMap = extractRequestBody(operationWithPathParams) || createParameterMap(operationWithPathParams);
28
63
  const body = typeof requestBodyOrParameterMap !== "boolean" ? requestBodyOrParameterMap : null;
64
+ const responseExamples = extractResponseExamples(operationWithPathParams.responses);
29
65
  index.push({
30
66
  type: "operation",
31
67
  title: entry.title,
32
68
  id: entry.id,
33
- description: operation.description || "",
69
+ description: operationWithPathParams.description || "",
34
70
  method: entry.method,
35
71
  path: entry.path,
36
72
  body: body || "",
37
- operationId: operation.operationId,
73
+ responseExamples,
74
+ operationId: operationWithPathParams.operationId,
38
75
  entry
39
76
  });
40
77
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"create-search-index.js","names":[],"sources":["../../../../src/features/Search/helpers/create-search-index.ts"],"sourcesContent":["import { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { TraversedEntry } from '@scalar/workspace-store/schemas/navigation'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport type { FuseData } from '@/features/Search/types'\nimport { createParameterMap, extractRequestBody } from '@/helpers/openapi'\n\n/**\n * Create a search index from a list of entries.\n */\nexport function createSearchIndex(document: OpenApiDocument | undefined): FuseData[] {\n const index: FuseData[] = []\n\n /**\n * Recursively processes entries and their children to build the search index.\n */\n function processEntries(entriesToProcess: TraversedEntry[]): void {\n entriesToProcess.forEach((entry) => {\n addEntryToIndex(entry, index, document)\n\n // Recursively process children if they exist\n if ('children' in entry && entry.children) {\n processEntries(entry.children)\n }\n })\n }\n\n processEntries(document?.['x-scalar-navigation']?.children ?? [])\n\n return index\n}\n\n/**\n * Adds a single entry to the search index, handling all entry types recursively.\n */\nfunction addEntryToIndex(entry: TraversedEntry, index: FuseData[], document?: OpenApiDocument): void {\n // Operation\n if (entry.type === 'operation') {\n const operation = getResolvedRef(document?.paths?.[entry.path]?.[entry.method]) ?? {}\n\n const requestBodyOrParameterMap = extractRequestBody(operation) || createParameterMap(operation)\n const body = typeof requestBodyOrParameterMap !== 'boolean' ? requestBodyOrParameterMap : null\n\n index.push({\n type: 'operation',\n title: entry.title,\n id: entry.id,\n description: operation.description || '',\n method: entry.method,\n path: entry.path,\n body: body || '',\n operationId: operation.operationId,\n entry,\n })\n\n return\n }\n\n // Webhook\n if (entry.type === 'webhook') {\n const webhook = getResolvedRef(document?.webhooks?.[entry.name]?.[entry.method]) ?? {}\n\n index.push({\n id: entry.id,\n type: 'webhook',\n title: entry.title,\n description: 'Webhook',\n method: entry.method,\n body: webhook.description || '',\n operationId: webhook.operationId,\n entry,\n })\n\n return\n }\n\n // Model\n if (entry.type === 'model') {\n const schema = getResolvedRef(document?.components?.schemas?.[entry.name])\n\n const description = schema?.description ?? ''\n\n index.push({\n type: 'model',\n title: entry.title,\n description: 'Model',\n id: entry.id,\n body: description,\n entry,\n })\n\n return\n }\n\n // Models heading\n if (entry.type === 'models') {\n index.push({\n id: entry.id,\n type: 'heading',\n title: 'Models',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n\n // Tag\n if (entry.type === 'tag' && entry.isWebhooks === true) {\n index.push({\n id: entry.id,\n type: 'heading',\n title: 'Webhooks',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n\n if (entry.type === 'tag' && entry.isGroup === false) {\n index.push({\n id: entry.id,\n title: entry.title,\n description: entry.description || '',\n type: 'tag',\n body: '',\n entry,\n })\n\n return\n }\n\n // Tag group\n if (entry.type === 'tag' && entry.isGroup === true) {\n index.push({\n id: entry.id,\n title: entry.title,\n description: 'Tag Group',\n type: 'tag',\n body: '',\n entry,\n })\n\n return\n }\n\n // Headings from info.description\n if (entry.type === 'text') {\n index.push({\n id: entry.id,\n type: 'heading',\n title: entry.title ?? '',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n}\n"],"mappings":";;;;;;AAUA,SAAgB,kBAAkB,UAAmD;CACnF,MAAM,QAAoB,EAAE;;;;CAK5B,SAAS,eAAe,kBAA0C;AAChE,mBAAiB,SAAS,UAAU;AAClC,mBAAgB,OAAO,OAAO,SAAS;AAGvC,OAAI,cAAc,SAAS,MAAM,SAC/B,gBAAe,MAAM,SAAS;IAEhC;;AAGJ,gBAAe,WAAW,wBAAwB,YAAY,EAAE,CAAC;AAEjE,QAAO;;;;;AAMT,SAAS,gBAAgB,OAAuB,OAAmB,UAAkC;AAEnG,KAAI,MAAM,SAAS,aAAa;EAC9B,MAAM,YAAY,eAAe,UAAU,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI,EAAE;EAErF,MAAM,4BAA4B,mBAAmB,UAAU,IAAI,mBAAmB,UAAU;EAChG,MAAM,OAAO,OAAO,8BAA8B,YAAY,4BAA4B;AAE1F,QAAM,KAAK;GACT,MAAM;GACN,OAAO,MAAM;GACb,IAAI,MAAM;GACV,aAAa,UAAU,eAAe;GACtC,QAAQ,MAAM;GACd,MAAM,MAAM;GACZ,MAAM,QAAQ;GACd,aAAa,UAAU;GACvB;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,WAAW;EAC5B,MAAM,UAAU,eAAe,UAAU,WAAW,MAAM,QAAQ,MAAM,QAAQ,IAAI,EAAE;AAEtF,QAAM,KAAK;GACT,IAAI,MAAM;GACV,MAAM;GACN,OAAO,MAAM;GACb,aAAa;GACb,QAAQ,MAAM;GACd,MAAM,QAAQ,eAAe;GAC7B,aAAa,QAAQ;GACrB;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,SAAS;EAG1B,MAAM,cAFS,eAAe,UAAU,YAAY,UAAU,MAAM,MAAM,EAE9C,eAAe;AAE3C,QAAM,KAAK;GACT,MAAM;GACN,OAAO,MAAM;GACb,aAAa;GACb,IAAI,MAAM;GACV,MAAM;GACN;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,UAAU;AAC3B,QAAM,KAAK;GACT,IAAI,MAAM;GACV,MAAM;GACN,OAAO;GACP,aAAa;GACb,MAAM;GACN;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,SAAS,MAAM,eAAe,MAAM;AACrD,QAAM,KAAK;GACT,IAAI,MAAM;GACV,MAAM;GACN,OAAO;GACP,aAAa;GACb,MAAM;GACN;GACD,CAAC;AAEF;;AAGF,KAAI,MAAM,SAAS,SAAS,MAAM,YAAY,OAAO;AACnD,QAAM,KAAK;GACT,IAAI,MAAM;GACV,OAAO,MAAM;GACb,aAAa,MAAM,eAAe;GAClC,MAAM;GACN,MAAM;GACN;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,SAAS,MAAM,YAAY,MAAM;AAClD,QAAM,KAAK;GACT,IAAI,MAAM;GACV,OAAO,MAAM;GACb,aAAa;GACb,MAAM;GACN,MAAM;GACN;GACD,CAAC;AAEF;;AAIF,KAAI,MAAM,SAAS,QAAQ;AACzB,QAAM,KAAK;GACT,IAAI,MAAM;GACV,MAAM;GACN,OAAO,MAAM,SAAS;GACtB,aAAa;GACb,MAAM;GACN;GACD,CAAC;AAEF"}
1
+ {"version":3,"file":"create-search-index.js","names":[],"sources":["../../../../src/features/Search/helpers/create-search-index.ts"],"sourcesContent":["import { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport { combineParams } from '@scalar/workspace-store/request-example'\nimport type { TraversedEntry } from '@scalar/workspace-store/schemas/navigation'\nimport type {\n MediaTypeObject,\n OpenApiDocument,\n OperationObject,\n ResponsesObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport type { FuseData } from '@/features/Search/types'\nimport { createParameterMap, extractRequestBody } from '@/helpers/openapi'\n\nfunction responseExampleValueToString(value: unknown): string {\n if (typeof value === 'string') {\n return value\n }\n\n try {\n return JSON.stringify(value)\n } catch (_error) {\n return ''\n }\n}\n\nfunction mediaTypeExamplesToStrings(mediaType: MediaTypeObject): string[] {\n const examplesFromNamedMap = Object.values(mediaType.examples ?? {})\n .flatMap((example) => {\n const resolvedExample = getResolvedRef(example)\n\n if (!resolvedExample || !('value' in resolvedExample)) {\n return []\n }\n\n return responseExampleValueToString(resolvedExample.value)\n })\n .filter((value) => value.length > 0)\n\n const mediaTypeExample =\n 'example' in mediaType && mediaType.example !== undefined ? responseExampleValueToString(mediaType.example) : ''\n\n return mediaTypeExample ? [mediaTypeExample, ...examplesFromNamedMap] : examplesFromNamedMap\n}\n\nfunction extractResponseExamples(responses: ResponsesObject | undefined): string[] {\n if (!responses) {\n return []\n }\n\n return Object.values(responses)\n .flatMap((response) => {\n const resolvedResponse = getResolvedRef(response)\n if (!resolvedResponse?.content) {\n return []\n }\n\n return Object.values(resolvedResponse.content).flatMap((mediaType) => {\n const resolvedMediaType = getResolvedRef(mediaType)\n if (!resolvedMediaType) {\n return []\n }\n\n return mediaTypeExamplesToStrings(resolvedMediaType)\n })\n })\n .filter((value) => value.length > 0)\n}\n\n/**\n * Create a search index from a list of entries.\n */\nexport function createSearchIndex(document: OpenApiDocument | undefined): FuseData[] {\n const index: FuseData[] = []\n\n /**\n * Recursively processes entries and their children to build the search index.\n */\n function processEntries(entriesToProcess: TraversedEntry[]): void {\n entriesToProcess.forEach((entry) => {\n addEntryToIndex(entry, index, document)\n\n // Recursively process children if they exist\n if ('children' in entry && entry.children) {\n processEntries(entry.children)\n }\n })\n }\n\n processEntries(document?.['x-scalar-navigation']?.children ?? [])\n\n return index\n}\n\n/**\n * Adds a single entry to the search index, handling all entry types recursively.\n */\nfunction addEntryToIndex(entry: TraversedEntry, index: FuseData[], document?: OpenApiDocument): void {\n // Operation\n if (entry.type === 'operation') {\n const pathItem = getResolvedRef(document?.paths?.[entry.path])\n const operation = (getResolvedRef(pathItem?.[entry.method]) ?? {}) as OperationObject\n const operationWithPathParams = {\n ...operation,\n parameters: combineParams(pathItem?.parameters, operation.parameters),\n }\n\n const requestBodyOrParameterMap =\n extractRequestBody(operationWithPathParams) || createParameterMap(operationWithPathParams)\n const body = typeof requestBodyOrParameterMap !== 'boolean' ? requestBodyOrParameterMap : null\n const responseExamples = extractResponseExamples(operationWithPathParams.responses)\n\n index.push({\n type: 'operation',\n title: entry.title,\n id: entry.id,\n description: operationWithPathParams.description || '',\n method: entry.method,\n path: entry.path,\n body: body || '',\n responseExamples,\n operationId: operationWithPathParams.operationId,\n entry,\n })\n\n return\n }\n\n // Webhook\n if (entry.type === 'webhook') {\n const webhook = getResolvedRef(document?.webhooks?.[entry.name]?.[entry.method]) ?? {}\n\n index.push({\n id: entry.id,\n type: 'webhook',\n title: entry.title,\n description: 'Webhook',\n method: entry.method,\n body: webhook.description || '',\n operationId: webhook.operationId,\n entry,\n })\n\n return\n }\n\n // Model\n if (entry.type === 'model') {\n const schema = getResolvedRef(document?.components?.schemas?.[entry.name])\n\n const description = schema?.description ?? ''\n\n index.push({\n type: 'model',\n title: entry.title,\n description: 'Model',\n id: entry.id,\n body: description,\n entry,\n })\n\n return\n }\n\n // Models heading\n if (entry.type === 'models') {\n index.push({\n id: entry.id,\n type: 'heading',\n title: 'Models',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n\n // Tag\n if (entry.type === 'tag' && entry.isWebhooks === true) {\n index.push({\n id: entry.id,\n type: 'heading',\n title: 'Webhooks',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n\n if (entry.type === 'tag' && entry.isGroup === false) {\n index.push({\n id: entry.id,\n title: entry.title,\n description: entry.description || '',\n type: 'tag',\n body: '',\n entry,\n })\n\n return\n }\n\n // Tag group\n if (entry.type === 'tag' && entry.isGroup === true) {\n index.push({\n id: entry.id,\n title: entry.title,\n description: 'Tag Group',\n type: 'tag',\n body: '',\n entry,\n })\n\n return\n }\n\n // Headings from info.description\n if (entry.type === 'text') {\n index.push({\n id: entry.id,\n type: 'heading',\n title: entry.title ?? '',\n description: 'Heading',\n body: '',\n entry,\n })\n\n return\n }\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ export type FuseData = {
7
7
  title: string;
8
8
  description: string;
9
9
  body?: string | string[] | ParameterMap;
10
+ responseExamples?: string[];
10
11
  method?: string;
11
12
  path?: string;
12
13
  operationId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/Search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAA;AAE7E,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,cAAc,CAAA;CACtB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/Search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAA;AAE7E,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,CAAA;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,cAAc,CAAA;CACtB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExampleResponse.vue.d.ts","sourceRoot":"","sources":["../../../src/features/example-responses/ExampleResponse.vue"],"names":[],"mappings":"AAmJA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAEhB,MAAM,8DAA8D,CAAA;AAGrE,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;CACnC,CAAC;AAyHF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ExampleResponse.vue.d.ts","sourceRoot":"","sources":["../../../src/features/example-responses/ExampleResponse.vue"],"names":[],"mappings":"AA+IA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAEhB,MAAM,8DAA8D,CAAA;AAGrE,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;CACnC,CAAC;AAyHF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import ExampleResponse_vue_vue_type_script_setup_true_lang_default from "./ExampleResponse.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/features/example-responses/ExampleResponse.vue
5
- var ExampleResponse_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ExampleResponse_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-de6a4e70"]]);
5
+ var ExampleResponse_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ExampleResponse_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c29c16d8"]]);
6
6
  //#endregion
7
7
  export { ExampleResponse_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"ExampleResponse.vue.js","names":[],"sources":["../../../src/features/example-responses/ExampleResponse.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n getExampleFromSchema,\n getResolvedRefDeep,\n} from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { ScalarCodeBlock, ScalarVirtualText } from '@scalar/components'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport type {\n ExampleObject,\n MediaTypeObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nconst { example, response } = defineProps<{\n response: MediaTypeObject | undefined\n example: ExampleObject | undefined\n}>()\n\n/** Get content from the appropriate source */\nconst getContent = () => {\n if (example !== undefined) {\n return getResolvedRefDeep(example)?.value ?? ''\n }\n\n if (response?.schema) {\n return getExampleFromSchema(\n // Should be safe to deep resolve the schema here because we don't have to do any sibling resolution for example generation\n getResolvedRefDeep(response.schema) as SchemaObject,\n {\n emptyString: 'string',\n mode: 'read',\n },\n )\n }\n\n return undefined\n}\n\n/** Pre-pretty printed content string, avoids multiple pretty prints*/\nconst prettyPrintedContent = computed(() => {\n const content = getContent()\n if (content === undefined) {\n return undefined\n }\n return prettyPrintJson(content)\n})\n\nconst VIRTUALIZATION_THRESHOLD = 20_000\n\n// Virtualize the code block if it's too large\nconst shouldVirtualize = computed(() => {\n if (prettyPrintedContent.value === undefined) {\n return false\n }\n return prettyPrintedContent.value.length > VIRTUALIZATION_THRESHOLD\n})\n</script>\n<template>\n <!-- Example -->\n <ScalarCodeBlock\n v-if=\"prettyPrintedContent !== undefined && !shouldVirtualize\"\n class=\"bg-b-2\"\n lang=\"json\"\n :prettyPrintedContent=\"prettyPrintedContent\" />\n\n <ScalarVirtualText\n v-else-if=\"prettyPrintedContent !== undefined && shouldVirtualize\"\n containerClass=\"custom-scroll scalar-code-block border rounded-b flex flex-1 max-h-screen\"\n contentClass=\"language-plaintext whitespace-pre font-code text-base\"\n :lineHeight=\"20\"\n :text=\"prettyPrintedContent\" />\n\n <div\n v-else\n class=\"empty-state\">\n No Body\n </div>\n</template>\n\n<style scoped>\n.empty-state {\n margin: 10px 0 10px 12px;\n text-align: center;\n font-size: var(--scalar-mini);\n min-height: 56px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--scalar-radius-lg);\n color: var(--scalar-color-2);\n}\n\n.rule-title {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n display: inline-block;\n margin: 12px 0 6px;\n border-radius: var(--scalar-radius);\n}\n\n.rule {\n margin: 0 12px 0;\n border-radius: var(--scalar-radius-lg);\n}\n\n.rule-items {\n counter-reset: list-number;\n display: flex;\n flex-direction: column;\n gap: 12px;\n border-left: 1px solid var(--scalar-border-color);\n padding: 12px 0 12px;\n}\n.rule-item {\n counter-increment: list-number;\n border: 1px solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n overflow: hidden;\n margin-left: 24px;\n}\n.rule-item:before {\n /* content: counter(list-number); */\n border: 1px solid var(--scalar-border-color);\n border-top: 0;\n border-right: 0;\n content: ' ';\n display: block;\n width: 24px;\n height: 6px;\n border-radius: 0 0 0 var(--scalar-radius-lg);\n margin-top: 6px;\n color: var(--scalar-color-2);\n transform: translateX(-25px);\n color: var(--scalar-color-1);\n position: absolute;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ExampleResponse.vue.js","names":[],"sources":["../../../src/features/example-responses/ExampleResponse.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { getResolvedRefDeep } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { ScalarCodeBlock, ScalarVirtualText } from '@scalar/components'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport { getExampleFromSchema } from '@scalar/workspace-store/request-example'\nimport type {\n ExampleObject,\n MediaTypeObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nconst { example, response } = defineProps<{\n response: MediaTypeObject | undefined\n example: ExampleObject | undefined\n}>()\n\n/** Get content from the appropriate source */\nconst getContent = () => {\n if (example !== undefined) {\n return getResolvedRefDeep(example)?.value ?? ''\n }\n\n if (response?.schema) {\n return getExampleFromSchema(\n // Should be safe to deep resolve the schema here because we don't have to do any sibling resolution for example generation\n getResolvedRefDeep(response.schema) as SchemaObject,\n {\n emptyString: 'string',\n mode: 'read',\n },\n )\n }\n\n return undefined\n}\n\n/** Pre-pretty printed content string, avoids multiple pretty prints*/\nconst prettyPrintedContent = computed(() => {\n const content = getContent()\n if (content === undefined) {\n return undefined\n }\n return prettyPrintJson(content)\n})\n\nconst VIRTUALIZATION_THRESHOLD = 20_000\n\n// Virtualize the code block if it's too large\nconst shouldVirtualize = computed(() => {\n if (prettyPrintedContent.value === undefined) {\n return false\n }\n return prettyPrintedContent.value.length > VIRTUALIZATION_THRESHOLD\n})\n</script>\n<template>\n <!-- Example -->\n <ScalarCodeBlock\n v-if=\"prettyPrintedContent !== undefined && !shouldVirtualize\"\n class=\"bg-b-2\"\n lang=\"json\"\n :prettyPrintedContent=\"prettyPrintedContent\" />\n\n <ScalarVirtualText\n v-else-if=\"prettyPrintedContent !== undefined && shouldVirtualize\"\n containerClass=\"custom-scroll scalar-code-block border rounded-b flex flex-1 max-h-screen\"\n contentClass=\"language-plaintext whitespace-pre font-code text-base\"\n :lineHeight=\"20\"\n :text=\"prettyPrintedContent\" />\n\n <div\n v-else\n class=\"empty-state\">\n No Body\n </div>\n</template>\n\n<style scoped>\n.empty-state {\n margin: 10px 0 10px 12px;\n text-align: center;\n font-size: var(--scalar-mini);\n min-height: 56px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--scalar-radius-lg);\n color: var(--scalar-color-2);\n}\n\n.rule-title {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n display: inline-block;\n margin: 12px 0 6px;\n border-radius: var(--scalar-radius);\n}\n\n.rule {\n margin: 0 12px 0;\n border-radius: var(--scalar-radius-lg);\n}\n\n.rule-items {\n counter-reset: list-number;\n display: flex;\n flex-direction: column;\n gap: 12px;\n border-left: 1px solid var(--scalar-border-color);\n padding: 12px 0 12px;\n}\n.rule-item {\n counter-increment: list-number;\n border: 1px solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n overflow: hidden;\n margin-left: 24px;\n}\n.rule-item:before {\n /* content: counter(list-number); */\n border: 1px solid var(--scalar-border-color);\n border-top: 0;\n border-right: 0;\n content: ' ';\n display: block;\n width: 24px;\n height: 6px;\n border-radius: 0 0 0 var(--scalar-radius-lg);\n margin-top: 6px;\n color: var(--scalar-color-2);\n transform: translateX(-25px);\n color: var(--scalar-color-1);\n position: absolute;\n}\n</style>\n"],"mappings":""}
@@ -1,6 +1,7 @@
1
1
  import { computed, createBlock, createElementBlock, defineComponent, openBlock, unref } from "vue";
2
2
  import { ScalarCodeBlock, ScalarVirtualText } from "@scalar/components";
3
- import { getExampleFromSchema, getResolvedRefDeep } from "@scalar/api-client/v2/blocks/operation-code-sample";
3
+ import { getExampleFromSchema } from "@scalar/workspace-store/request-example";
4
+ import { getResolvedRefDeep } from "@scalar/api-client/v2/blocks/operation-code-sample";
4
5
  import { prettyPrintJson } from "@scalar/helpers/json/pretty-print-json";
5
6
  //#region src/features/example-responses/ExampleResponse.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = {