1- import { HighlightedCode } from "codehike/code" ;
1+ import { HighlightedCode } from "codehike/code" ;
22import React from "react" ;
3- import { SpeakeasyCodeSamplesCore } from "../core.js" ;
4- import { codeSamplesGet } from "../funcs/codeSamplesGet.js" ;
5- import { UsageSnippet } from "../models/components/usagesnippet.js" ;
6- import { GetCodeSamplesRequest } from "../models/operations/getcodesamples.js" ;
7- import { useSpeakeasyCodeSamplesContext } from "../react-query/_context.js" ;
8- import { highlightCode } from "./utils.js" ;
3+ import { SpeakeasyCodeSamplesCore } from "../core.js" ;
4+ import { codeSamplesGet } from "../funcs/codeSamplesGet.js" ;
5+ import { UsageSnippet } from "../models/components/usagesnippet.js" ;
6+ import { GetCodeSamplesRequest } from "../models/operations/getcodesamples.js" ;
7+ import { useSpeakeasyCodeSamplesContext } from "../react-query/_context.js" ;
8+ import { highlightCode } from "./utils.js" ;
99
1010export type SpeakeasyHighlightedCode = HighlightedCode & {
1111 /** The snippet data from the code samples api */
@@ -15,23 +15,23 @@ export type SpeakeasyHighlightedCode = HighlightedCode & {
1515// Define the state shape.
1616export type CodeSampleState =
1717 | {
18- status : "loading" ;
19- error ?: Error | undefined ;
20- snippets ?: SpeakeasyHighlightedCode [ ] | undefined ;
21- selectedSnippet ?: SpeakeasyHighlightedCode | undefined ;
22- }
18+ status : "loading" ;
19+ error ?: Error | undefined ;
20+ snippets ?: SpeakeasyHighlightedCode [ ] | undefined ;
21+ selectedSnippet ?: SpeakeasyHighlightedCode | undefined ;
22+ }
2323 | {
24- status : "success" ;
25- error ?: Error | undefined ;
26- snippets : SpeakeasyHighlightedCode [ ] ;
27- selectedSnippet : SpeakeasyHighlightedCode ;
28- }
24+ status : "success" ;
25+ error ?: Error | undefined ;
26+ snippets : SpeakeasyHighlightedCode [ ] ;
27+ selectedSnippet : SpeakeasyHighlightedCode ;
28+ }
2929 | {
30- status : "error" ;
31- error : Error ;
32- snippets ?: SpeakeasyHighlightedCode [ ] | undefined ;
33- selectedSnippet ?: SpeakeasyHighlightedCode | undefined ;
34- } ;
30+ status : "error" ;
31+ error : Error ;
32+ snippets ?: SpeakeasyHighlightedCode [ ] | undefined ;
33+ selectedSnippet ?: SpeakeasyHighlightedCode | undefined ;
34+ } ;
3535
3636type FetchSuccessPayload = {
3737 snippets : SpeakeasyHighlightedCode [ ] ;
@@ -43,8 +43,7 @@ type Action =
4343 | { type : "FETCH_INIT" }
4444 | { type : "FETCH_SUCCESS" ; payload : FetchSuccessPayload }
4545 | { type : "FETCH_FAILURE" ; payload : Error }
46- | { type : "SELECT" ; payload : SafeGetSnippetParams }
47-
46+ | { type : "SELECT" ; payload : SafeGetSnippetParams } ;
4847
4948type SafeGetSnippetParams = {
5049 operationId ?: string | undefined ;
@@ -53,11 +52,16 @@ type SafeGetSnippetParams = {
5352
5453function safeGetSnippet (
5554 snippets : SpeakeasyHighlightedCode [ ] ,
56- { operationId, language} : SafeGetSnippetParams ,
55+ { operationId, language } : SafeGetSnippetParams ,
5756) : SpeakeasyHighlightedCode {
58- const maybeEqual = ( a : string , b : string | undefined ) => b === undefined || a . toLowerCase ( ) === b . toLowerCase ( ) ;
57+ const maybeEqual = ( a : string , b : string | undefined ) =>
58+ b === undefined || a . toLowerCase ( ) === b . toLowerCase ( ) ;
5959
60- const selectedSnippet = snippets . find ( ( s ) => maybeEqual ( s . raw . operationId , operationId ) && maybeEqual ( s . lang , language ) ) ;
60+ const selectedSnippet = snippets . find (
61+ ( s ) =>
62+ maybeEqual ( s . raw . operationId , operationId ) &&
63+ maybeEqual ( s . lang , language ) ,
64+ ) ;
6165 if ( selectedSnippet ) {
6266 return selectedSnippet ;
6367 }
@@ -76,15 +80,14 @@ const reducer: React.Reducer<CodeSampleState, Action> = (
7680) => {
7781 switch ( action . type ) {
7882 case "FETCH_INIT" :
79- return { ...state , status : "loading" } ;
83+ return { ...state , status : "loading" } ;
8084 case "FETCH_SUCCESS" :
8185 return {
8286 status : "success" ,
8387 snippets : action . payload . snippets ,
84- selectedSnippet : safeGetSnippet (
85- action . payload . snippets ,
86- { language : action . payload . defaultLanguage } ,
87- ) ,
88+ selectedSnippet : safeGetSnippet ( action . payload . snippets , {
89+ language : action . payload . defaultLanguage ,
90+ } ) ,
8891 } ;
8992 case "FETCH_FAILURE" :
9093 return {
@@ -95,10 +98,7 @@ const reducer: React.Reducer<CodeSampleState, Action> = (
9598 case "SELECT" :
9699 return {
97100 ...state ,
98- selectedSnippet : safeGetSnippet (
99- state . snippets ! ,
100- action . payload ,
101- ) ,
101+ selectedSnippet : safeGetSnippet ( state . snippets ! , action . payload ) ,
102102 } ;
103103 default :
104104 return state ;
@@ -112,11 +112,11 @@ type UseCodeSampleStateInit = {
112112} ;
113113
114114export const useCodeSampleState = ( {
115- client : clientProp ,
116- requestParams,
117- defaultLanguage,
118- } : UseCodeSampleStateInit ) => {
119- const [ state , dispatch ] = React . useReducer ( reducer , { status : "loading" } ) ;
115+ client : clientProp ,
116+ requestParams,
117+ defaultLanguage,
118+ } : UseCodeSampleStateInit ) => {
119+ const [ state , dispatch ] = React . useReducer ( reducer , { status : "loading" } ) ;
120120 const client = useSafeSpeakeasyCodeSamplesContext ( clientProp ) ;
121121
122122 const highlightSnippets = async ( snippets : UsageSnippet [ ] ) => {
@@ -128,17 +128,17 @@ export const useCodeSampleState = ({
128128 "github-from-css" ,
129129 ) ;
130130
131- return { ...highlightedCode , raw : snippet } ;
131+ return { ...highlightedCode , raw : snippet } ;
132132 } ) ,
133133 ) ;
134134 } ;
135135
136136 async function handleMount ( ) {
137- dispatch ( { type : "FETCH_INIT" } ) ;
137+ dispatch ( { type : "FETCH_INIT" } ) ;
138138 const result = await codeSamplesGet ( client , requestParams ) ;
139139
140140 if ( ! result . ok ) {
141- return dispatch ( { type : "FETCH_FAILURE" , payload : result . error } ) ;
141+ return dispatch ( { type : "FETCH_FAILURE" , payload : result . error } ) ;
142142 }
143143
144144 dispatch ( {
@@ -156,15 +156,16 @@ export const useCodeSampleState = ({
156156
157157 function selectSnippet ( params : SafeGetSnippetParams ) {
158158 dispatch ( {
159- type : "SELECT" , payload : {
159+ type : "SELECT" ,
160+ payload : {
160161 language : state . selectedSnippet ?. raw . language ,
161162 operationId : state . selectedSnippet ?. raw . operationId ,
162163 ...params ,
163- }
164+ } ,
164165 } ) ;
165166 }
166167
167- return { state, selectSnippet} ;
168+ return { state, selectSnippet } ;
168169} ;
169170
170171/** Intended to give the user the option of providing their own client. */
@@ -181,7 +182,7 @@ export const useSafeSpeakeasyCodeSamplesContext = (
181182 } catch {
182183 throw new Error (
183184 "The Speakeasy Code Samples component must either be given an apiKey and " +
184- "registryUrl, or be wrapped in a SpeakeasyCodeSamplesProvider." ,
185+ "registryUrl, or be wrapped in a SpeakeasyCodeSamplesProvider." ,
185186 ) ;
186187 }
187188} ;
0 commit comments