Skip to content

Commit

Permalink
fix: republish with experimental options removed
Browse files Browse the repository at this point in the history
  • Loading branch information
CodyJasonBennett committed Apr 10, 2024
1 parent 8f7ce94 commit bffcffb
Show file tree
Hide file tree
Showing 10 changed files with 1,031 additions and 1,257 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,3 @@ jobs:

- name: Run tests
run: yarn test --silent

- name: Check for regressions
run: yarn lint
77 changes: 57 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,46 @@ As such, you can go beyond React's component abstraction; components are self-aw

## Table of Contents

- [useFiber](#useFiber)
- [useContainer](#useContainer)
- [useNearestChild](#useNearestChild)
- [useNearestParent](#useNearestParent)
- [useContextMap](#useContextMap)
- [useContextBridge](#useContextBridge)
- [traverseFiber](#traverseFiber)
- [Components](#components)
- [FiberProvider](#fiberprovider)
- [Hooks](#hooks)
- [useFiber](#useFiber)
- [useContainer](#useContainer)
- [useNearestChild](#useNearestChild)
- [useNearestParent](#useNearestParent)
- [useContextMap](#useContextMap)
- [useContextBridge](#useContextBridge)
- [Utils](#utils)
- [traverseFiber](#traverseFiber)

## useFiber
## Components

### FiberProvider

A react-internal `Fiber` provider. This component binds React children to the React Fiber tree. Call its-fine hooks within this.

> **Note**: pmndrs renderers like react-three-fiber implement this internally to make use of [`useContextBridge`](#usecontextbridge), so you would only need this when using hooks inside of `react-dom` or `react-native`.
```tsx
import * as ReactDOM from 'react-dom/client'
import { FiberProvider, useFiber } from 'its-fine'

function App() {
const fiber = useFiber()
}

ReactDOM.createRoot(document.getElementById('root')!).render(
<FiberProvider>
<App />
</FiberProvider>,
)
```

## Hooks

Useful React hook abstractions for manipulating and querying from a component. These must be called within a [`FiberProvider`](#fiberprovider) component.

### useFiber

Returns the current react-internal `Fiber`. This is an implementation detail of [react-reconciler](https://github.com/facebook/react/tree/main/packages/react-reconciler).

Expand All @@ -43,7 +74,7 @@ function Component() {
}
```

## useContainer
### useContainer

Returns the current react-reconciler container info passed to `Reconciler.createContainer`.

Expand All @@ -62,7 +93,7 @@ function Component() {
}
```

## useNearestChild
### useNearestChild

Returns the nearest react-reconciler child instance or the node created from `Reconciler.createInstance`.

Expand All @@ -89,7 +120,7 @@ function Component() {
}
```

## useNearestParent
### useNearestParent

Returns the nearest react-reconciler parent instance or the node created from `Reconciler.createInstance`.

Expand Down Expand Up @@ -118,7 +149,7 @@ function Component() {
</div>
```

## useContextMap
### useContextMap

Returns a map of all contexts and their values.

Expand All @@ -134,7 +165,7 @@ function Component() {
}
```

## useContextBridge
### useContextBridge

React Context currently cannot be shared across [React renderers](https://reactjs.org/docs/codebase-overview.html#renderers) but explicitly forwarded between providers (see [react#17275](https://github.com/facebook/react/issues/17275)). This hook returns a `ContextBridge` of live context providers to pierce Context across renderers.

Expand All @@ -148,7 +179,7 @@ import * as ReactNil from 'react-nil'
// react-dom is a primary renderer that works on top of a secondary renderer.
// This also includes react-native, react-pixi, etc.
import * as ReactDOM from 'react-dom/client'
import { type ContextBridge, useContextBridge } from 'its-fine'
import { type ContextBridge, useContextBridge, FiberProvider } from 'its-fine'

function Canvas(props: { children: React.ReactNode }) {
// Returns a bridged context provider that forwards context
Expand All @@ -169,15 +200,21 @@ function Component() {
// Renders into a primary renderer like react-dom or react-native,
// DOMContext wraps Canvas and is bridged into Component
ReactDOM.createRoot(document.getElementById('root')!).render(
<DOMContext.Provider value="Hello from react-dom">
<Canvas>
<Component />
</Canvas>
</DOMContext.Provider>
<FiberProvider>
<DOMContext.Provider value="Hello from react-dom">
<Canvas>
<Component />
</Canvas>
</DOMContext.Provider>
</FiberProvider>,
)
```

## traverseFiber
## Utils

Additional exported utility functions for raw handling of Fibers.

### traverseFiber

Traverses up or down a `Fiber`, return `true` to stop and select a node.

Expand Down
25 changes: 14 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "its-fine",
"version": "1.2.0",
"version": "1.2.3",
"description": "A collection of escape hatches for React.",
"keywords": [
"react",
Expand Down Expand Up @@ -28,22 +28,25 @@
"sideEffects": false,
"devDependencies": {
"@types/node": "^18.7.15",
"@types/react": "^18.0.17",
"@types/react-test-renderer": "^18.0.0",
"react": "^18.2.0",
"react-reconciler": "^0.29.0",
"typescript": "^5.4.4",
"vite": "^5.2.8",
"vitest": "^1.4.0"
"react-nil": "^1.2.0",
"react-test-renderer": "^18.2.0",
"rimraf": "^3.0.2",
"suspend-react": "^0.0.8",
"typescript": "^4.7.4",
"vite": "^3.1.0",
"vitest": "^0.23.1"
},
"dependencies": {
"@types/react": "*",
"@types/react-reconciler": "*"
"@types/react-reconciler": "^0.28.0"
},
"peerDependencies": {
"react": ">=16.8"
"react": ">=18.0"
},
"scripts": {
"build": "vite build",
"test": "vitest run --reporter verbose",
"lint": "tsc"
"build": "rimraf dist && vite build && tsc",
"test": "vitest run"
}
}
Loading

0 comments on commit bffcffb

Please sign in to comment.