chore: rename blocks to artifacts (#793)

This commit is contained in:
Jeremy 2025-02-13 08:25:57 -08:00 committed by GitHub
parent 01f589b603
commit 81f909ac3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 473 additions and 473 deletions

85
hooks/use-artifact.ts Normal file
View file

@ -0,0 +1,85 @@
'use client';
import useSWR from 'swr';
import { UIArtifact } from '@/components/artifact';
import { useCallback, useMemo } from 'react';
export const initialArtifactData: UIArtifact = {
documentId: 'init',
content: '',
kind: 'text',
title: '',
status: 'idle',
isVisible: false,
boundingBox: {
top: 0,
left: 0,
width: 0,
height: 0,
},
};
type Selector<T> = (state: UIArtifact) => T;
export function useArtifactSelector<Selected>(selector: Selector<Selected>) {
const { data: localArtifact } = useSWR<UIArtifact>('artifact', null, {
fallbackData: initialArtifactData,
});
const selectedValue = useMemo(() => {
if (!localArtifact) return selector(initialArtifactData);
return selector(localArtifact);
}, [localArtifact, selector]);
return selectedValue;
}
export function useArtifact() {
const { data: localArtifact, mutate: setLocalArtifact } = useSWR<UIArtifact>(
'artifact',
null,
{
fallbackData: initialArtifactData,
},
);
const artifact = useMemo(() => {
if (!localArtifact) return initialArtifactData;
return localArtifact;
}, [localArtifact]);
const setArtifact = useCallback(
(updaterFn: UIArtifact | ((currentArtifact: UIArtifact) => UIArtifact)) => {
setLocalArtifact((currentArtifact) => {
const artifactToUpdate = currentArtifact || initialArtifactData;
if (typeof updaterFn === 'function') {
return updaterFn(artifactToUpdate);
}
return updaterFn;
});
},
[setLocalArtifact],
);
const { data: localArtifactMetadata, mutate: setLocalArtifactMetadata } =
useSWR<any>(
() =>
artifact.documentId ? `artifact-metadata-${artifact.documentId}` : null,
null,
{
fallbackData: null,
},
);
return useMemo(
() => ({
artifact,
setArtifact,
metadata: localArtifactMetadata,
setMetadata: setLocalArtifactMetadata,
}),
[artifact, setArtifact, localArtifactMetadata, setLocalArtifactMetadata],
);
}

View file

@ -1,84 +0,0 @@
'use client';
import useSWR from 'swr';
import { UIBlock } from '@/components/block';
import { useCallback, useMemo } from 'react';
export const initialBlockData: UIBlock = {
documentId: 'init',
content: '',
kind: 'text',
title: '',
status: 'idle',
isVisible: false,
boundingBox: {
top: 0,
left: 0,
width: 0,
height: 0,
},
};
type Selector<T> = (state: UIBlock) => T;
export function useBlockSelector<Selected>(selector: Selector<Selected>) {
const { data: localBlock } = useSWR<UIBlock>('block', null, {
fallbackData: initialBlockData,
});
const selectedValue = useMemo(() => {
if (!localBlock) return selector(initialBlockData);
return selector(localBlock);
}, [localBlock, selector]);
return selectedValue;
}
export function useBlock() {
const { data: localBlock, mutate: setLocalBlock } = useSWR<UIBlock>(
'block',
null,
{
fallbackData: initialBlockData,
},
);
const block = useMemo(() => {
if (!localBlock) return initialBlockData;
return localBlock;
}, [localBlock]);
const setBlock = useCallback(
(updaterFn: UIBlock | ((currentBlock: UIBlock) => UIBlock)) => {
setLocalBlock((currentBlock) => {
const blockToUpdate = currentBlock || initialBlockData;
if (typeof updaterFn === 'function') {
return updaterFn(blockToUpdate);
}
return updaterFn;
});
},
[setLocalBlock],
);
const { data: localBlockMetadata, mutate: setLocalBlockMetadata } =
useSWR<any>(
() => (block.documentId ? `block-metadata-${block.documentId}` : null),
null,
{
fallbackData: null,
},
);
return useMemo(
() => ({
block,
setBlock,
metadata: localBlockMetadata,
setMetadata: setLocalBlockMetadata,
}),
[block, setBlock, localBlockMetadata, setLocalBlockMetadata],
);
}