-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathheroCardPolymiddleware.tsx
More file actions
65 lines (56 loc) · 2.46 KB
/
heroCardPolymiddleware.tsx
File metadata and controls
65 lines (56 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { validateProps } from '@msinternal/botframework-webchat-react-valibot';
import React, { memo, useMemo } from 'react';
import { object, pipe, readonly, type InferInput } from 'valibot';
import templatePolymiddleware, {
type InferHandler,
type InferHandlerResult,
type InferMiddleware,
type InferProps,
type InferProviderProps,
type InferRenderer,
type InferRequest
} from './private/templatePolymiddleware';
const {
createMiddleware: createHeroCardPolymiddleware,
extractEnhancer: extractHeroCardEnhancer,
Provider: HeroCardPolymiddlewareProvider,
Proxy,
reactComponent: heroCardComponent,
useBuildRenderCallback: useBuildRenderHeroCardCallback
} = templatePolymiddleware<{ readonly heroCard: unknown }, { readonly children?: never }>('HeroCard');
type HeroCardPolymiddleware = InferMiddleware<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareHandler = InferHandler<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareHandlerResult = InferHandlerResult<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareProps = InferProps<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareRenderer = InferRenderer<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareRequest = InferRequest<typeof HeroCardPolymiddlewareProvider>;
type HeroCardPolymiddlewareProviderProps = InferProviderProps<typeof HeroCardPolymiddlewareProvider>;
const HeroCardPolymiddlewareProxyPropsSchema = pipe(
object({
heroCard: object({})
}),
readonly()
);
type HeroCardPolymiddlewareProxyProps = Readonly<InferInput<typeof HeroCardPolymiddlewareProxyPropsSchema>>;
// A friendlier version than the organic <Proxy>.
const HeroCardPolymiddlewareProxy = memo(function HeroCardPolymiddlewareProxy(props: HeroCardPolymiddlewareProxyProps) {
const { heroCard } = validateProps(HeroCardPolymiddlewareProxyPropsSchema, props);
const request = useMemo(() => ({ heroCard }), [heroCard]);
return <Proxy request={request} />;
});
export {
createHeroCardPolymiddleware,
extractHeroCardEnhancer,
heroCardComponent,
HeroCardPolymiddlewareProvider,
HeroCardPolymiddlewareProxy,
useBuildRenderHeroCardCallback,
type HeroCardPolymiddleware,
type HeroCardPolymiddlewareHandler,
type HeroCardPolymiddlewareHandlerResult,
type HeroCardPolymiddlewareProps,
type HeroCardPolymiddlewareProviderProps,
type HeroCardPolymiddlewareProxyProps,
type HeroCardPolymiddlewareRenderer,
type HeroCardPolymiddlewareRequest
};