@scalar/api-client-react 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/index.js.map +1 -1
- package/dist/lazy-load.d.ts +3 -3
- package/dist/lazy-load.d.ts.map +1 -1
- package/dist/style.css +114 -60
- package/dist/use-api-client.d.ts +2 -2
- package/dist/use-api-client.d.ts.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/lazy-load.ts","../src/use-api-client.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/lazy-load.ts","../src/use-api-client.ts"],"sourcesContent":["import type { ApiClientOptions } from '@scalar/api-client/modal'\n\n/**\n * Creates a lazy singleton getter: the factory runs at most once, caches the resulting promise,\n * and clears the cache on failure so the next call can retry.\n *\n * Optional args are forwarded to the factory on the first (cache-miss) call only.\n * Subsequent calls return the cached promise regardless of the args passed.\n */\nconst makeLazySingleton = <T, Args extends unknown[] = []>(\n factory: (...args: Args) => Promise<T>,\n): ((...args: Args) => Promise<T>) => {\n let cached: Promise<T> | undefined\n return (...args: Args) => {\n cached ??= factory(...args).catch((error) => {\n cached = undefined\n throw error\n })\n return cached\n }\n}\n\n/** Lazy load the client modal creator */\nexport const getClientModalCreator = makeLazySingleton(() =>\n import('@scalar/api-client/modal').then(({ createApiClientModal }) => createApiClientModal),\n)\n\n/** Module-scoped singleton workspace store (lazy-loaded on first use). */\nexport const getWorkspaceStoreSingleton = makeLazySingleton(() =>\n import('@scalar/workspace-store/client').then(({ createWorkspaceStore }) => createWorkspaceStore()),\n)\n\n/** Module-scoped singleton workspace event bus (lazy-loaded on first use). */\nexport const getWorkspaceEventBusSingleton = makeLazySingleton(() =>\n import('@scalar/workspace-store/events').then(({ createWorkspaceEventBus }) => createWorkspaceEventBus()),\n)\n\n/**\n * Lazily creates the singleton Vue app, mounts it as the last child of document.body,\n * and returns the controller. Subsequent calls return the same promise.\n *\n * Only modal-supported options are accepted here. Document-specific fields\n * (`url`, `content`) must be registered via `workspaceStore.addDocument` after the client\n * is ready — they are not part of the modal constructor.\n */\nexport const getOrCreateApiClient = makeLazySingleton(async (options: ApiClientOptions = {}) => {\n const el = document.createElement('div')\n el.className = 'scalar-app'\n document.body.appendChild(el)\n\n try {\n const [createModal, workspaceStore, eventBus] = await Promise.all([\n getClientModalCreator(),\n getWorkspaceStoreSingleton(),\n getWorkspaceEventBusSingleton(),\n ])\n\n const apiClient = createModal({\n el,\n eventBus,\n workspaceStore,\n options,\n // TODO: map plugins from configuration when available\n // plugins: mapConfigPlugins(options),\n })\n\n return { apiClient, workspaceStore }\n } catch (error) {\n el.remove()\n throw error\n }\n})\n","'use client'\n\nimport type { ApiClientModal, ApiClientOptions, RoutePayload } from '@scalar/api-client/modal'\nimport { useEffect, useRef, useState } from 'react'\n\nimport './style.css'\n\nimport { isObjectEqual } from '@scalar/helpers/object/is-object-equal'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\n\nimport { getOrCreateApiClient } from './lazy-load'\n\nglobalThis.__VUE_OPTIONS_API__ = true\nglobalThis.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = true\nglobalThis.__VUE_PROD_DEVTOOLS__ = false\n\nexport type ApiClientConfigurationReact = ApiClientOptions & {\n // content?: Record<string, unknown>\n url: string\n}\n\nexport type UseApiClientModalProps = {\n /** Configuration for the Api Client (url or inline content) */\n configuration: ApiClientConfigurationReact\n}\n\n/** Tracks which documents are/have been loaded so we dont duplicate */\nconst documentSet = new Set<string>()\n\n/**\n * Returns the singleton Api Client\n *\n * On first call the Vue app is lazily created and appended to document.body where it\n * lives for the lifetime of the page — it is never unmounted, so it survives client-side\n * navigation without losing state.\n *\n * Subsequent calls from any component share the same instance of the client but can use the same\n * or different documents\n */\nexport const useApiClient = ({\n configuration,\n}: UseApiClientModalProps): (Omit<ApiClientModal, 'open'> & { open: (payload: RoutePayload) => void }) | undefined => {\n const [client, setClient] = useState<ApiClientModal | undefined>(undefined)\n const [workspaceStore, setWorkspaceStore] = useState<WorkspaceStore | undefined>(undefined)\n const documentSlugRef = useRef('')\n const previousModalOptionsRef = useRef<ApiClientOptions | undefined>(undefined)\n\n /** Small wrapper to set the documentSlug */\n const open = (payload: RoutePayload) => client?.open({ documentSlug: documentSlugRef.current, ...payload })\n\n useEffect(() => {\n let cancelled = false\n\n // Strip document-specific fields before passing to the modal constructor.\n const { url, ...modalOptions } = configuration\n\n void getOrCreateApiClient(modalOptions)?.then((_client) => {\n if (cancelled || !_client) {\n return\n }\n\n // Compute the slug here so we can batch all three state updates into one render,\n // preventing a render where `client` is set but `documentSlug` is still ''.\n const slug = url || ''\n\n // React always provides the complete modal option set for this hook instance,\n // so we overwrite to clear options removed by consumers.\n _client.apiClient.updateOptions(modalOptions, true)\n previousModalOptionsRef.current = modalOptions\n\n setClient(_client.apiClient)\n setWorkspaceStore(_client.workspaceStore)\n documentSlugRef.current = slug\n\n if (slug && !documentSet.has(slug)) {\n documentSet.add(slug)\n void _client.workspaceStore.addDocument({ name: slug, url })\n }\n })\n\n return () => {\n cancelled = true\n }\n\n // Only run once per mount\n }, [])\n\n // Register new document when we detect the url has changed\n useEffect(() => {\n if (!client || !workspaceStore) {\n return\n }\n\n const slug = configuration.url || 'default'\n documentSlugRef.current = slug\n\n if (documentSet.has(slug)) {\n return\n }\n documentSet.add(slug)\n\n void workspaceStore.addDocument({ name: slug, url: configuration.url })\n }, [client, configuration.url, workspaceStore])\n\n // Update the modal options when the configuration changes\n useEffect(() => {\n if (!client || !configuration) {\n return\n }\n\n const { url: _, ...modalOptions } = configuration\n if (isObjectEqual(previousModalOptionsRef.current, modalOptions)) {\n return\n }\n\n client.updateOptions(modalOptions, true)\n previousModalOptionsRef.current = modalOptions\n }, [client, configuration])\n\n return client\n ? {\n ...client,\n open,\n }\n : undefined\n}\n"],"mappings":";;;;;;;;;;;AASA,IAAM,qBACJ,YACoC;CACpC,IAAI;AACJ,SAAQ,GAAG,SAAe;AACxB,aAAW,QAAQ,GAAG,KAAK,CAAC,OAAO,UAAU;AAC3C,YAAS,KAAA;AACT,SAAM;IACN;AACF,SAAO;;;;AAKX,IAAa,wBAAwB,wBACnC,OAAO,4BAA4B,MAAM,EAAE,2BAA2B,qBAAqB,CAC5F;;AAGD,IAAa,6BAA6B,wBACxC,OAAO,kCAAkC,MAAM,EAAE,2BAA2B,sBAAsB,CAAC,CACpG;;AAGD,IAAa,gCAAgC,wBAC3C,OAAO,kCAAkC,MAAM,EAAE,8BAA8B,yBAAyB,CAAC,CAC1G;;;;;;;;;AAUD,IAAa,uBAAuB,kBAAkB,OAAO,UAA4B,EAAE,KAAK;CAC9F,MAAM,KAAK,SAAS,cAAc,MAAM;AACxC,IAAG,YAAY;AACf,UAAS,KAAK,YAAY,GAAG;AAE7B,KAAI;EACF,MAAM,CAAC,aAAa,gBAAgB,YAAY,MAAM,QAAQ,IAAI;GAChE,uBAAuB;GACvB,4BAA4B;GAC5B,+BAAA;GACD,CAAC;AAWF,SAAO;GAAE,WATS,YAAY;IAC5B;IACA;IACA;IACA;IAGD,CAAC;GAEkB;GAAgB;UAC7B,OAAO;AACd,KAAG,QAAQ;AACX,QAAM;;EAER;;;AC3DF,WAAW,sBAAsB;AACjC,WAAW,0CAA0C;AACrD,WAAW,wBAAwB;;AAanC,IAAM,8BAAc,IAAI,KAAa;;;;;;;;;;;AAYrC,IAAa,gBAAgB,EAC3B,oBACoH;CACpH,MAAM,CAAC,QAAQ,aAAa,SAAqC,KAAA,EAAU;CAC3E,MAAM,CAAC,gBAAgB,qBAAqB,SAAqC,KAAA,EAAU;CAC3F,MAAM,kBAAkB,OAAO,GAAG;CAClC,MAAM,0BAA0B,OAAqC,KAAA,EAAU;;CAG/E,MAAM,QAAQ,YAA0B,QAAQ,KAAK;EAAE,cAAc,gBAAgB;EAAS,GAAG;EAAS,CAAC;AAE3G,iBAAgB;EACd,IAAI,YAAY;EAGhB,MAAM,EAAE,KAAK,GAAG,iBAAiB;AAE5B,uBAAqB,aAAa,EAAE,MAAM,YAAY;AACzD,OAAI,aAAa,CAAC,QAChB;GAKF,MAAM,OAAO,OAAO;AAIpB,WAAQ,UAAU,cAAc,cAAc,KAAK;AACnD,2BAAwB,UAAU;AAElC,aAAU,QAAQ,UAAU;AAC5B,qBAAkB,QAAQ,eAAe;AACzC,mBAAgB,UAAU;AAE1B,OAAI,QAAQ,CAAC,YAAY,IAAI,KAAK,EAAE;AAClC,gBAAY,IAAI,KAAK;AAChB,YAAQ,eAAe,YAAY;KAAE,MAAM;KAAM;KAAK,CAAC;;IAE9D;AAEF,eAAa;AACX,eAAY;;IAIb,EAAE,CAAC;AAGN,iBAAgB;AACd,MAAI,CAAC,UAAU,CAAC,eACd;EAGF,MAAM,OAAO,cAAc,OAAO;AAClC,kBAAgB,UAAU;AAE1B,MAAI,YAAY,IAAI,KAAK,CACvB;AAEF,cAAY,IAAI,KAAK;AAEhB,iBAAe,YAAY;GAAE,MAAM;GAAM,KAAK,cAAc;GAAK,CAAC;IACtE;EAAC;EAAQ,cAAc;EAAK;EAAe,CAAC;AAG/C,iBAAgB;AACd,MAAI,CAAC,UAAU,CAAC,cACd;EAGF,MAAM,EAAE,KAAK,GAAG,GAAG,iBAAiB;AACpC,MAAI,cAAc,wBAAwB,SAAS,aAAa,CAC9D;AAGF,SAAO,cAAc,cAAc,KAAK;AACxC,0BAAwB,UAAU;IACjC,CAAC,QAAQ,cAAc,CAAC;AAE3B,QAAO,SACH;EACE,GAAG;EACH;EACD,GACD,KAAA"}
|
package/dist/lazy-load.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ApiClientOptions } from '@scalar/api-client/modal';
|
|
2
2
|
/** Lazy load the client modal creator */
|
|
3
3
|
export declare const getClientModalCreator: () => Promise<({ el, eventBus, mountOnInitialize, plugins, workspaceStore, options, }: {
|
|
4
4
|
el: HTMLElement | null;
|
|
@@ -6,7 +6,7 @@ export declare const getClientModalCreator: () => Promise<({ el, eventBus, mount
|
|
|
6
6
|
eventBus?: import("@scalar/workspace-store/events").WorkspaceEventBus;
|
|
7
7
|
workspaceStore: import("@scalar/workspace-store/client").WorkspaceStore;
|
|
8
8
|
plugins?: import("@scalar/oas-utils/helpers").ClientPlugin[];
|
|
9
|
-
options?: import("vue").MaybeRefOrGetter<
|
|
9
|
+
options?: import("vue").MaybeRefOrGetter<ApiClientOptions>;
|
|
10
10
|
}) => import("@scalar/api-client/modal").ApiClientModal>;
|
|
11
11
|
/** Module-scoped singleton workspace store (lazy-loaded on first use). */
|
|
12
12
|
export declare const getWorkspaceStoreSingleton: () => Promise<import("@scalar/workspace-store/client").WorkspaceStore>;
|
|
@@ -20,7 +20,7 @@ export declare const getWorkspaceEventBusSingleton: () => Promise<import("@scala
|
|
|
20
20
|
* (`url`, `content`) must be registered via `workspaceStore.addDocument` after the client
|
|
21
21
|
* is ready — they are not part of the modal constructor.
|
|
22
22
|
*/
|
|
23
|
-
export declare const getOrCreateApiClient: (options?:
|
|
23
|
+
export declare const getOrCreateApiClient: (options?: ApiClientOptions | undefined) => Promise<{
|
|
24
24
|
apiClient: import("@scalar/api-client/modal").ApiClientModal;
|
|
25
25
|
workspaceStore: import("@scalar/workspace-store/client").WorkspaceStore;
|
|
26
26
|
}>;
|
package/dist/lazy-load.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../src/lazy-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../src/lazy-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAsBhE,yCAAyC;AACzC,eAAO,MAAM,qBAAqB;;;;;;;wDAEjC,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,wEAEtC,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,6BAA6B,2EAEzC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;EA0B/B,CAAA"}
|
package/dist/style.css
CHANGED
|
@@ -951,8 +951,8 @@
|
|
|
951
951
|
background-color: var(--scalar-sidebar-indent-border-hover, var(--scalar-border-color));
|
|
952
952
|
}
|
|
953
953
|
|
|
954
|
-
.scalar-app .group-hover\/button\:text-c-1:is(:where(.group\/button):hover *) {
|
|
955
|
-
color: var(--scalar-color-1);
|
|
954
|
+
.scalar-app .group-hover\/button\:text-c-header-1:is(:where(.group\/button):hover *) {
|
|
955
|
+
color: var(--scalar-header-color-1, var(--scalar-color-1));
|
|
956
956
|
}
|
|
957
957
|
|
|
958
958
|
.scalar-app .hover\:bg-b-2:hover {
|
|
@@ -963,10 +963,24 @@
|
|
|
963
963
|
background-color: var(--scalar-background-3);
|
|
964
964
|
}
|
|
965
965
|
|
|
966
|
+
.scalar-app .hover\:bg-b-header-2:hover {
|
|
967
|
+
background-color: var(--scalar-header-background-2, var(--scalar-background-2));
|
|
968
|
+
}
|
|
969
|
+
|
|
966
970
|
.scalar-app .hover\:bg-h-btn:hover {
|
|
967
971
|
background-color: var(--scalar-button-1-hover);
|
|
968
972
|
}
|
|
969
973
|
|
|
974
|
+
.scalar-app .hover\:bg-h-header-cta:hover {
|
|
975
|
+
background-color: var(--scalar-header-call-to-action-color, var(--scalar-button-1));
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
979
|
+
.scalar-app .hover\:bg-h-header-cta:hover {
|
|
980
|
+
background-color: color-mix(in srgb, var(--scalar-header-call-to-action-color, var(--scalar-button-1)), var(--scalar-header-background-1, var(--scalar-background-1)) 15%);
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
|
|
970
984
|
.scalar-app .hover\:bg-sidebar-b-1:hover {
|
|
971
985
|
background-color: var(--scalar-sidebar-background-1, var(--scalar-background-1));
|
|
972
986
|
}
|
|
@@ -1007,6 +1021,10 @@
|
|
|
1007
1021
|
color: var(--scalar-color-1);
|
|
1008
1022
|
}
|
|
1009
1023
|
|
|
1024
|
+
.scalar-app .hover\:text-c-header-1:hover {
|
|
1025
|
+
color: var(--scalar-header-color-1, var(--scalar-color-1));
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1010
1028
|
.scalar-app .hover\:text-sidebar-c-1:hover {
|
|
1011
1029
|
color: var(--scalar-sidebar-color-1, var(--scalar-color-1));
|
|
1012
1030
|
}
|
|
@@ -2939,6 +2957,9 @@
|
|
|
2939
2957
|
border-style: var(--tw-border-style);
|
|
2940
2958
|
border-width: 1px;
|
|
2941
2959
|
}
|
|
2960
|
+
.scalar-app .border-border-header {
|
|
2961
|
+
border-color: var(--scalar-header-border-color, var(--scalar-border-color));
|
|
2962
|
+
}
|
|
2942
2963
|
.scalar-app .border-c-alert {
|
|
2943
2964
|
border-color: var(--scalar-color-alert);
|
|
2944
2965
|
}
|
|
@@ -2971,6 +2992,12 @@
|
|
|
2971
2992
|
.scalar-app .bg-b-btn {
|
|
2972
2993
|
background-color: var(--scalar-button-1);
|
|
2973
2994
|
}
|
|
2995
|
+
.scalar-app .bg-b-header-1 {
|
|
2996
|
+
background-color: var(--scalar-header-background-1, var(--scalar-background-1));
|
|
2997
|
+
}
|
|
2998
|
+
.scalar-app .bg-b-header-cta {
|
|
2999
|
+
background-color: var(--scalar-header-call-to-action-color, var(--scalar-button-1));
|
|
3000
|
+
}
|
|
2974
3001
|
.scalar-app .bg-b-tooltip {
|
|
2975
3002
|
background-color: var(--scalar-tooltip-background);
|
|
2976
3003
|
}
|
|
@@ -3118,6 +3145,15 @@
|
|
|
3118
3145
|
.scalar-app .break-words, .scalar-app .wrap-break-word {
|
|
3119
3146
|
overflow-wrap: break-word;
|
|
3120
3147
|
}
|
|
3148
|
+
.scalar-app .text-c-header-1 {
|
|
3149
|
+
color: var(--scalar-header-color-1, var(--scalar-color-1));
|
|
3150
|
+
}
|
|
3151
|
+
.scalar-app .text-c-header-2 {
|
|
3152
|
+
color: var(--scalar-header-color-2, var(--scalar-color-2));
|
|
3153
|
+
}
|
|
3154
|
+
.scalar-app .text-c-header-cta {
|
|
3155
|
+
color: var(--scalar-button-1-color);
|
|
3156
|
+
}
|
|
3121
3157
|
.scalar-app .text-c-tooltip {
|
|
3122
3158
|
color: var(--scalar-tooltip-color);
|
|
3123
3159
|
}
|
|
@@ -3198,8 +3234,8 @@
|
|
|
3198
3234
|
:is(.scalar-app .\*\:justify-center > *) {
|
|
3199
3235
|
justify-content: center;
|
|
3200
3236
|
}
|
|
3201
|
-
:is(.scalar-app .\*\:gap-
|
|
3202
|
-
gap:
|
|
3237
|
+
:is(.scalar-app .\*\:gap-1 > *) {
|
|
3238
|
+
gap: 4px;
|
|
3203
3239
|
}
|
|
3204
3240
|
:is(.scalar-app .\*\:rounded > *) {
|
|
3205
3241
|
border-radius: var(--scalar-radius);
|
|
@@ -3231,8 +3267,8 @@
|
|
|
3231
3267
|
background-color: var(--scalar-sidebar-indent-border-hover, var(--scalar-border-color));
|
|
3232
3268
|
}
|
|
3233
3269
|
|
|
3234
|
-
.scalar-app .group-hover\/button\:text-c-1:is(:where(.group\/button):hover *) {
|
|
3235
|
-
color: var(--scalar-color-1);
|
|
3270
|
+
.scalar-app .group-hover\/button\:text-c-header-1:is(:where(.group\/button):hover *) {
|
|
3271
|
+
color: var(--scalar-header-color-1, var(--scalar-color-1));
|
|
3236
3272
|
}
|
|
3237
3273
|
}
|
|
3238
3274
|
.scalar-app .group-focus-visible\/toggle\:outline:is(:where(.group\/toggle):focus-visible *) {
|
|
@@ -3296,10 +3332,24 @@
|
|
|
3296
3332
|
background-color: var(--scalar-background-3);
|
|
3297
3333
|
}
|
|
3298
3334
|
|
|
3335
|
+
.scalar-app .hover\:bg-b-header-2:hover {
|
|
3336
|
+
background-color: var(--scalar-header-background-2, var(--scalar-background-2));
|
|
3337
|
+
}
|
|
3338
|
+
|
|
3299
3339
|
.scalar-app .hover\:bg-h-btn:hover {
|
|
3300
3340
|
background-color: var(--scalar-button-1-hover);
|
|
3301
3341
|
}
|
|
3302
3342
|
|
|
3343
|
+
.scalar-app .hover\:bg-h-header-cta:hover {
|
|
3344
|
+
background-color: var(--scalar-header-call-to-action-color, var(--scalar-button-1));
|
|
3345
|
+
}
|
|
3346
|
+
|
|
3347
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3348
|
+
.scalar-app .hover\:bg-h-header-cta:hover {
|
|
3349
|
+
background-color: color-mix(in srgb, var(--scalar-header-call-to-action-color, var(--scalar-button-1)), var(--scalar-header-background-1, var(--scalar-background-1)) 15%);
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3303
3353
|
.scalar-app .hover\:bg-sidebar-b-1:hover {
|
|
3304
3354
|
background-color: var(--scalar-sidebar-background-1, var(--scalar-background-1));
|
|
3305
3355
|
}
|
|
@@ -3340,6 +3390,10 @@
|
|
|
3340
3390
|
color: var(--scalar-color-1);
|
|
3341
3391
|
}
|
|
3342
3392
|
|
|
3393
|
+
.scalar-app .hover\:text-c-header-1:hover {
|
|
3394
|
+
color: var(--scalar-header-color-1, var(--scalar-color-1));
|
|
3395
|
+
}
|
|
3396
|
+
|
|
3343
3397
|
.scalar-app .hover\:text-sidebar-c-1:hover {
|
|
3344
3398
|
color: var(--scalar-sidebar-color-1, var(--scalar-color-1));
|
|
3345
3399
|
}
|
|
@@ -3959,6 +4013,9 @@
|
|
|
3959
4013
|
.scalar-app .h-\[68px\] {
|
|
3960
4014
|
height: 68px;
|
|
3961
4015
|
}
|
|
4016
|
+
.scalar-app .h-\[300px\] {
|
|
4017
|
+
height: 300px;
|
|
4018
|
+
}
|
|
3962
4019
|
.scalar-app .h-\[calc\(100\%_-_50px\)\] {
|
|
3963
4020
|
height: calc(100% - 50px);
|
|
3964
4021
|
}
|
|
@@ -4010,9 +4067,6 @@
|
|
|
4010
4067
|
.scalar-app .max-h-\[60svh\] {
|
|
4011
4068
|
max-height: 60svh;
|
|
4012
4069
|
}
|
|
4013
|
-
.scalar-app .max-h-\[300px\] {
|
|
4014
|
-
max-height: 300px;
|
|
4015
|
-
}
|
|
4016
4070
|
.scalar-app .max-h-\[auto\] {
|
|
4017
4071
|
max-height: auto;
|
|
4018
4072
|
}
|
|
@@ -6244,23 +6298,23 @@
|
|
|
6244
6298
|
/*
|
|
6245
6299
|
Deep styling for customizing Codemirror
|
|
6246
6300
|
*/
|
|
6247
|
-
[data-v-
|
|
6301
|
+
[data-v-6499ec1f] .cm-editor {
|
|
6248
6302
|
height: 100%;
|
|
6249
6303
|
outline: none;
|
|
6250
6304
|
padding: 0;
|
|
6251
6305
|
background: transparent;
|
|
6252
6306
|
}
|
|
6253
|
-
[data-v-
|
|
6307
|
+
[data-v-6499ec1f] .cm-placeholder {
|
|
6254
6308
|
color: var(--scalar-color-3);
|
|
6255
6309
|
}
|
|
6256
|
-
[data-v-
|
|
6310
|
+
[data-v-6499ec1f] .cm-content {
|
|
6257
6311
|
font-family: var(--scalar-font-code);
|
|
6258
6312
|
font-size: var(--scalar-small);
|
|
6259
6313
|
max-height: 20px;
|
|
6260
6314
|
padding: 8px 0;
|
|
6261
6315
|
}
|
|
6262
6316
|
/* Tooltip helper */
|
|
6263
|
-
[data-v-
|
|
6317
|
+
[data-v-6499ec1f] .cm-tooltip {
|
|
6264
6318
|
background: transparent !important;
|
|
6265
6319
|
filter: brightness(var(--scalar-lifted-brightness));
|
|
6266
6320
|
border-radius: var(--scalar-radius);
|
|
@@ -6269,43 +6323,43 @@
|
|
|
6269
6323
|
outline: none !important;
|
|
6270
6324
|
overflow: hidden !important;
|
|
6271
6325
|
}
|
|
6272
|
-
[data-v-
|
|
6326
|
+
[data-v-6499ec1f] .cm-tooltip-autocomplete ul li {
|
|
6273
6327
|
padding: 3px 6px !important;
|
|
6274
6328
|
}
|
|
6275
|
-
[data-v-
|
|
6329
|
+
[data-v-6499ec1f] .cm-completionIcon-type:after {
|
|
6276
6330
|
color: var(--scalar-color-3) !important;
|
|
6277
6331
|
}
|
|
6278
|
-
[data-v-
|
|
6332
|
+
[data-v-6499ec1f] .cm-tooltip-autocomplete ul li[aria-selected] {
|
|
6279
6333
|
background: var(--scalar-background-2) !important;
|
|
6280
6334
|
color: var(--scalar-color-1) !important;
|
|
6281
6335
|
}
|
|
6282
|
-
[data-v-
|
|
6336
|
+
[data-v-6499ec1f] .cm-tooltip-autocomplete ul {
|
|
6283
6337
|
padding: 6px !important;
|
|
6284
6338
|
position: relative;
|
|
6285
6339
|
}
|
|
6286
|
-
[data-v-
|
|
6340
|
+
[data-v-6499ec1f] .cm-tooltip-autocomplete ul li:hover {
|
|
6287
6341
|
border-radius: 3px;
|
|
6288
6342
|
color: var(--scalar-color-1) !important;
|
|
6289
6343
|
background: var(--scalar-background-3) !important;
|
|
6290
6344
|
}
|
|
6291
6345
|
/* Disable active line highlighting */
|
|
6292
|
-
[data-v-
|
|
6346
|
+
[data-v-6499ec1f] .cm-activeLine,[data-v-6499ec1f] .cm-activeLineGutter {
|
|
6293
6347
|
background-color: transparent;
|
|
6294
6348
|
}
|
|
6295
6349
|
/* Color selection matching */
|
|
6296
|
-
[data-v-
|
|
6350
|
+
[data-v-6499ec1f] .cm-selectionMatch,[data-v-6499ec1f] .cm-matchingBracket {
|
|
6297
6351
|
border-radius: var(--scalar-radius);
|
|
6298
6352
|
background: var(--scalar-background-4) !important;
|
|
6299
6353
|
}
|
|
6300
6354
|
/* Color Picker Swatches */
|
|
6301
|
-
[data-v-
|
|
6355
|
+
[data-v-6499ec1f] .cm-css-color-picker-wrapper {
|
|
6302
6356
|
display: inline-flex;
|
|
6303
6357
|
outline: 1px solid var(--scalar-background-3);
|
|
6304
6358
|
border-radius: 3px;
|
|
6305
6359
|
overflow: hidden;
|
|
6306
6360
|
}
|
|
6307
6361
|
/* Number gutter */
|
|
6308
|
-
[data-v-
|
|
6362
|
+
[data-v-6499ec1f] .cm-gutters {
|
|
6309
6363
|
background-color: transparent;
|
|
6310
6364
|
border-right: none;
|
|
6311
6365
|
color: var(--scalar-color-3);
|
|
@@ -6313,7 +6367,7 @@
|
|
|
6313
6367
|
line-height: 22px;
|
|
6314
6368
|
border-radius: 0 0 0 3px;
|
|
6315
6369
|
}
|
|
6316
|
-
[data-v-
|
|
6370
|
+
[data-v-6499ec1f] .cm-gutters:before {
|
|
6317
6371
|
content: '';
|
|
6318
6372
|
position: absolute;
|
|
6319
6373
|
top: 2px;
|
|
@@ -6323,7 +6377,7 @@
|
|
|
6323
6377
|
border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);
|
|
6324
6378
|
background-color: var(--scalar-background-1);
|
|
6325
6379
|
}
|
|
6326
|
-
[data-v-
|
|
6380
|
+
[data-v-6499ec1f] .cm-gutterElement {
|
|
6327
6381
|
font-family: var(--scalar-font-code) !important;
|
|
6328
6382
|
padding-left: 0px !important;
|
|
6329
6383
|
padding-right: 6px !important;
|
|
@@ -6332,16 +6386,16 @@
|
|
|
6332
6386
|
justify-content: flex-end;
|
|
6333
6387
|
position: relative;
|
|
6334
6388
|
}
|
|
6335
|
-
[data-v-
|
|
6389
|
+
[data-v-6499ec1f] .cm-lineNumbers .cm-gutterElement {
|
|
6336
6390
|
min-width: fit-content;
|
|
6337
6391
|
}
|
|
6338
|
-
[data-v-
|
|
6392
|
+
[data-v-6499ec1f] .cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement {
|
|
6339
6393
|
padding-left: 0 !important;
|
|
6340
6394
|
}
|
|
6341
|
-
[data-v-
|
|
6395
|
+
[data-v-6499ec1f] .cm-scroller {
|
|
6342
6396
|
overflow: auto;
|
|
6343
6397
|
}
|
|
6344
|
-
.line-wrapping[data-v-
|
|
6398
|
+
.line-wrapping[data-v-6499ec1f]:focus-within .cm-content {
|
|
6345
6399
|
display: inline-table;
|
|
6346
6400
|
min-height: fit-content;
|
|
6347
6401
|
padding: 3px 6px;
|
|
@@ -6658,7 +6712,7 @@
|
|
|
6658
6712
|
var(--scalar-background-2) 20px
|
|
6659
6713
|
);
|
|
6660
6714
|
}
|
|
6661
|
-
[data-v-
|
|
6715
|
+
[data-v-06778e40] .cm-content {
|
|
6662
6716
|
font-size: var(--scalar-small);
|
|
6663
6717
|
}
|
|
6664
6718
|
.form-group[data-v-678c9f4a] {
|
|
@@ -6676,10 +6730,10 @@
|
|
|
6676
6730
|
-ms-overflow-style: none;
|
|
6677
6731
|
scrollbar-width: none;
|
|
6678
6732
|
}
|
|
6679
|
-
[data-v-
|
|
6733
|
+
[data-v-819cea32] .cm-editor {
|
|
6680
6734
|
padding: 0;
|
|
6681
6735
|
}
|
|
6682
|
-
[data-v-
|
|
6736
|
+
[data-v-819cea32] .cm-content {
|
|
6683
6737
|
align-items: center;
|
|
6684
6738
|
background-color: transparent;
|
|
6685
6739
|
display: flex;
|
|
@@ -6688,30 +6742,30 @@
|
|
|
6688
6742
|
padding: 5px 8px;
|
|
6689
6743
|
width: 100%;
|
|
6690
6744
|
}
|
|
6691
|
-
[data-v-
|
|
6745
|
+
[data-v-819cea32] .cm-content:has(.cm-pill) {
|
|
6692
6746
|
padding: 5px 8px;
|
|
6693
6747
|
}
|
|
6694
|
-
[data-v-
|
|
6748
|
+
[data-v-819cea32] .cm-content .cm-pill:not(:last-of-type) {
|
|
6695
6749
|
margin-right: 0.5px;
|
|
6696
6750
|
}
|
|
6697
|
-
[data-v-
|
|
6751
|
+
[data-v-819cea32] .cm-content .cm-pill:not(:first-of-type) {
|
|
6698
6752
|
margin-left: 0.5px;
|
|
6699
6753
|
}
|
|
6700
|
-
[data-v-
|
|
6754
|
+
[data-v-819cea32] .cm-line {
|
|
6701
6755
|
overflow: hidden;
|
|
6702
6756
|
padding: 0;
|
|
6703
6757
|
text-overflow: ellipsis;
|
|
6704
6758
|
word-break: break-word;
|
|
6705
6759
|
}
|
|
6706
|
-
.required[data-v-
|
|
6760
|
+
.required[data-v-819cea32]::after {
|
|
6707
6761
|
content: 'Required';
|
|
6708
6762
|
}
|
|
6709
6763
|
/* Tailwind placeholder is busted */
|
|
6710
|
-
input[data-v-
|
|
6764
|
+
input[data-v-819cea32]::placeholder {
|
|
6711
6765
|
color: var(--scalar-color-3);
|
|
6712
6766
|
}
|
|
6713
6767
|
/* we want our inputs to look like a password input but not be one */
|
|
6714
|
-
.scalar-password-input[data-v-
|
|
6768
|
+
.scalar-password-input[data-v-819cea32] {
|
|
6715
6769
|
text-security: disc;
|
|
6716
6770
|
-webkit-text-security: disc;
|
|
6717
6771
|
-moz-text-security: disc;
|
|
@@ -6760,7 +6814,7 @@ input[data-v-3157c3c7]::placeholder {
|
|
|
6760
6814
|
overflow: auto;
|
|
6761
6815
|
min-width: 100%;
|
|
6762
6816
|
}
|
|
6763
|
-
.scalar-code-block[data-v-
|
|
6817
|
+
.scalar-code-block[data-v-30c34ea4] .hljs * {
|
|
6764
6818
|
font-size: var(--scalar-small);
|
|
6765
6819
|
}
|
|
6766
6820
|
.response-body-virtual[data-headlessui-state='open'],
|
|
@@ -6828,11 +6882,11 @@ to {
|
|
|
6828
6882
|
.v-enter-from[data-v-1f35725e] {
|
|
6829
6883
|
opacity: 0;
|
|
6830
6884
|
}
|
|
6831
|
-
.animate-response-heading .response-heading[data-v-
|
|
6832
|
-
animation: push-response-
|
|
6885
|
+
.animate-response-heading .response-heading[data-v-82f4df98] {
|
|
6886
|
+
animation: push-response-82f4df98 0.2s ease-in-out forwards;
|
|
6833
6887
|
opacity: 1;
|
|
6834
6888
|
}
|
|
6835
|
-
@keyframes push-response-
|
|
6889
|
+
@keyframes push-response-82f4df98 {
|
|
6836
6890
|
from {
|
|
6837
6891
|
opacity: 1;
|
|
6838
6892
|
transform: translateY(0);
|
|
@@ -6842,11 +6896,11 @@ to {
|
|
|
6842
6896
|
transform: translateY(-4px);
|
|
6843
6897
|
}
|
|
6844
6898
|
}
|
|
6845
|
-
.animate-response-heading .animate-response-children[data-v-
|
|
6846
|
-
animation: response-spans-
|
|
6899
|
+
.animate-response-heading .animate-response-children[data-v-82f4df98] {
|
|
6900
|
+
animation: response-spans-82f4df98 0.2s ease-in-out forwards 0.05s;
|
|
6847
6901
|
opacity: 0;
|
|
6848
6902
|
}
|
|
6849
|
-
@keyframes response-spans-
|
|
6903
|
+
@keyframes response-spans-82f4df98 {
|
|
6850
6904
|
from {
|
|
6851
6905
|
opacity: 0;
|
|
6852
6906
|
transform: translateY(4px);
|
|
@@ -6856,33 +6910,33 @@ to {
|
|
|
6856
6910
|
transform: translateY(0);
|
|
6857
6911
|
}
|
|
6858
6912
|
}
|
|
6859
|
-
.request-card[data-v-
|
|
6913
|
+
.request-card[data-v-59da314d] {
|
|
6860
6914
|
font-size: var(--scalar-font-size-3);
|
|
6861
6915
|
}
|
|
6862
|
-
.request-method[data-v-
|
|
6916
|
+
.request-method[data-v-59da314d] {
|
|
6863
6917
|
font-family: var(--scalar-font-code);
|
|
6864
6918
|
text-transform: uppercase;
|
|
6865
6919
|
margin-right: 6px;
|
|
6866
6920
|
}
|
|
6867
|
-
.request-card-footer[data-v-
|
|
6921
|
+
.request-card-footer[data-v-59da314d] {
|
|
6868
6922
|
display: flex;
|
|
6869
6923
|
justify-content: flex-end;
|
|
6870
6924
|
padding: 6px;
|
|
6871
6925
|
flex-shrink: 0;
|
|
6872
6926
|
position: relative;
|
|
6873
6927
|
}
|
|
6874
|
-
.request-card-footer-addon[data-v-
|
|
6928
|
+
.request-card-footer-addon[data-v-59da314d] {
|
|
6875
6929
|
display: flex;
|
|
6876
6930
|
align-items: center;
|
|
6877
6931
|
|
|
6878
6932
|
flex: 1;
|
|
6879
6933
|
min-width: 0;
|
|
6880
6934
|
}
|
|
6881
|
-
.request-editor-section[data-v-
|
|
6935
|
+
.request-editor-section[data-v-59da314d] {
|
|
6882
6936
|
display: flex;
|
|
6883
6937
|
flex: 1;
|
|
6884
6938
|
}
|
|
6885
|
-
.request-card-simple[data-v-
|
|
6939
|
+
.request-card-simple[data-v-59da314d] {
|
|
6886
6940
|
display: flex;
|
|
6887
6941
|
align-items: center;
|
|
6888
6942
|
justify-content: space-between;
|
|
@@ -6891,7 +6945,7 @@ to {
|
|
|
6891
6945
|
|
|
6892
6946
|
font-size: var(--scalar-small);
|
|
6893
6947
|
}
|
|
6894
|
-
.code-snippet[data-v-
|
|
6948
|
+
.code-snippet[data-v-59da314d] {
|
|
6895
6949
|
display: flex;
|
|
6896
6950
|
flex-direction: column;
|
|
6897
6951
|
width: 100%;
|
|
@@ -7346,15 +7400,15 @@ to {
|
|
|
7346
7400
|
.full-size-styles:has(.sync-conflict-modal-root)::after {
|
|
7347
7401
|
display: none;
|
|
7348
7402
|
}
|
|
7349
|
-
.scalar-collection-auth[data-v-
|
|
7403
|
+
.scalar-collection-auth[data-v-d3bc49bd] {
|
|
7350
7404
|
border: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
7351
7405
|
border-radius: var(--scalar-radius-lg);
|
|
7352
7406
|
overflow: hidden;
|
|
7353
7407
|
}
|
|
7354
|
-
[data-v-
|
|
7408
|
+
[data-v-2f13118d] .cm-editor {
|
|
7355
7409
|
padding: 0;
|
|
7356
7410
|
}
|
|
7357
|
-
[data-v-
|
|
7411
|
+
[data-v-2f13118d] .cm-content {
|
|
7358
7412
|
align-items: center;
|
|
7359
7413
|
background-color: transparent;
|
|
7360
7414
|
display: flex;
|
|
@@ -7363,16 +7417,16 @@ to {
|
|
|
7363
7417
|
padding: 5px 8px;
|
|
7364
7418
|
width: 100%;
|
|
7365
7419
|
}
|
|
7366
|
-
[data-v-
|
|
7420
|
+
[data-v-2f13118d] .cm-content:has(.cm-pill) {
|
|
7367
7421
|
padding: 5px 8px;
|
|
7368
7422
|
}
|
|
7369
|
-
[data-v-
|
|
7423
|
+
[data-v-2f13118d] .cm-content .cm-pill:not(:last-of-type) {
|
|
7370
7424
|
margin-right: 0.5px;
|
|
7371
7425
|
}
|
|
7372
|
-
[data-v-
|
|
7426
|
+
[data-v-2f13118d] .cm-content .cm-pill:not(:first-of-type) {
|
|
7373
7427
|
margin-left: 0.5px;
|
|
7374
7428
|
}
|
|
7375
|
-
[data-v-
|
|
7429
|
+
[data-v-2f13118d] .cm-line {
|
|
7376
7430
|
overflow: hidden;
|
|
7377
7431
|
padding: 0;
|
|
7378
7432
|
text-overflow: ellipsis;
|
|
@@ -7445,7 +7499,7 @@ to {
|
|
|
7445
7499
|
.scroll-timeline-x[data-v-f4568236]::-webkit-scrollbar {
|
|
7446
7500
|
display: none;
|
|
7447
7501
|
}
|
|
7448
|
-
.postman-import-path-conflict-callout[data-v-
|
|
7502
|
+
.postman-import-path-conflict-callout[data-v-cc4f666d] {
|
|
7449
7503
|
border-color: var(--scalar-color-red);
|
|
7450
7504
|
background-color: var(--scalar-background-danger);
|
|
7451
7505
|
color: var(--scalar-color-1);
|
package/dist/use-api-client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ApiClientModal,
|
|
1
|
+
import type { ApiClientModal, ApiClientOptions, RoutePayload } from '@scalar/api-client/modal';
|
|
2
2
|
import './style.css';
|
|
3
|
-
export type ApiClientConfigurationReact =
|
|
3
|
+
export type ApiClientConfigurationReact = ApiClientOptions & {
|
|
4
4
|
url: string;
|
|
5
5
|
};
|
|
6
6
|
export type UseApiClientModalProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-api-client.d.ts","sourceRoot":"","sources":["../src/use-api-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"use-api-client.d.ts","sourceRoot":"","sources":["../src/use-api-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG9F,OAAO,aAAa,CAAA;AAWpB,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG;IAE3D,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,+DAA+D;IAC/D,aAAa,EAAE,2BAA2B,CAAA;CAC3C,CAAA;AAKD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GAAI,oBAE1B,sBAAsB,KAAG,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,CAAC,GAAG,SAoFxG,CAAA"}
|
package/package.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"testing",
|
|
20
20
|
"react"
|
|
21
21
|
],
|
|
22
|
-
"version": "2.0.
|
|
22
|
+
"version": "2.0.4",
|
|
23
23
|
"engines": {
|
|
24
24
|
"node": ">=22"
|
|
25
25
|
},
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"CHANGELOG.md"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@scalar/
|
|
43
|
-
"@scalar/
|
|
44
|
-
"@scalar/
|
|
42
|
+
"@scalar/api-client": "3.2.0",
|
|
43
|
+
"@scalar/helpers": "0.5.1",
|
|
44
|
+
"@scalar/workspace-store": "0.46.2"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@testing-library/dom": "^10.4.1",
|