Skip to content

Commit

Permalink
chore: add example
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack-Works committed Dec 7, 2021
1 parent 5698323 commit 427032d
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
4 changes: 2 additions & 2 deletions packages/plugin-infra/src/types.ts
Expand Up @@ -473,11 +473,11 @@ export namespace Plugin.ContextFree {
//#region Static render
// new Map([ [reader, react component] ])
export type StaticRender<T = any> = ReadonlyMap<MetadataReader<T>, StaticRenderComponent<T>>
export type StaticRenderComponent<T> = React.ForwardRefExoticComponent<StaticRenderProps<T>>
export type StaticRenderComponent<T> = Omit<React.ForwardRefExoticComponent<StaticRenderProps<T>>, 'propTypes'>
export type StaticRenderProps<T> = Context<T> & React.RefAttributes<RenderActions<T>> & { metadata: T }
//#endregion
//#region DynamicRender
export type DynamicRender = React.ForwardRefExoticComponent<DynamicRenderProps>
export type DynamicRender = Omit<React.ForwardRefExoticComponent<DynamicRenderProps>, 'propTypes'>
export type DynamicRenderProps = Context<unknown> &
React.RefAttributes<RenderActions<unknown>> & { metadata: TypedMessage['meta'] }
//#endregion
Expand Down
3 changes: 2 additions & 1 deletion packages/plugins/example/package.json
Expand Up @@ -4,6 +4,7 @@
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"dependencies": {
"@masknet/plugin-infra": "workspace:*"
"@masknet/plugin-infra": "workspace:*",
"ts-results": "^3.3.0"
}
}
18 changes: 18 additions & 0 deletions packages/plugins/example/src/ContextFree/index.tsx
@@ -0,0 +1,18 @@
import type { Plugin } from '@masknet/plugin-infra'
import { forwardRef, useImperativeHandle } from 'react'
import { Ok, Err } from 'ts-results'

const metadataReader: Plugin.ContextFree.MetadataRender.MetadataReader<unknown> = (meta) => {
const raw = meta?.get('io.mask.example/v1')
if (raw) return Ok(raw)
return Err.EMPTY
}
const render: Plugin.ContextFree.MetadataRender.StaticRenderComponent<unknown> = forwardRef((props, ref) => {
useImperativeHandle(ref, () => ({}), [])
return <>Metadata render for key "io.mask.example/v1" {JSON.stringify(props.metadata)}</>
})

const contextFree: Plugin.ContextFree.DefinitionDeferred = {
metadataRender: new Map([[metadataReader, render]]),
}
export default contextFree
2 changes: 2 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 427032d

Please sign in to comment.