From dbf6e7612c4a54598a508e5a03ddded3cf0003ff Mon Sep 17 00:00:00 2001 From: Angelo Ashmore Date: Wed, 12 Jan 2022 15:59:29 -1000 Subject: [PATCH 1/3] fix: use pascalCase Slice type for `` resolver --- package-lock.json | 48 ++++++++++++++++++++++++++++++++++------- package.json | 4 +++- src/SliceZone.tsx | 10 ++++++--- test/SliceZone.test.tsx | 4 ++-- 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ffe0c3..5532eb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "license": "Apache-2.0", "dependencies": { "@prismicio/helpers": "^2.0.0", - "@prismicio/richtext": "^2.0.0" + "@prismicio/richtext": "^2.0.0", + "tiny-case": "^1.0.2" }, "devDependencies": { "@prismicio/client": "^6.0.0", @@ -46,6 +47,7 @@ "siroc": "^0.16.0", "standard-version": "^9.3.2", "ts-eager": "^2.0.2", + "type-fest": "^2.9.0", "typescript": "^4.5.4" }, "engines": { @@ -4788,6 +4790,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", @@ -9797,6 +9811,11 @@ "node": ">=4" } }, + "node_modules/tiny-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.2.tgz", + "integrity": "sha512-XRlpLF8S2VuTqM8AbxvubIR+9dThYGDJ1d6hDM5F0LopIFIaxq8OFk9oAEljQjCJsrelJbBZXRKo0MFOqrEGqA==" + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -9968,12 +9987,12 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.9.0.tgz", + "integrity": "sha512-uC0hJKi7eAGXUJ/YKk53RhnKxMwzHWgzf4t92oz8Qez28EBgVTfpDTB59y9hMYLzc/Wl85cD7Tv1hLZZoEJtrg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14403,6 +14422,14 @@ "dev": true, "requires": { "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "globby": { @@ -18150,6 +18177,11 @@ "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", "dev": true }, + "tiny-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.2.tgz", + "integrity": "sha512-XRlpLF8S2VuTqM8AbxvubIR+9dThYGDJ1d6hDM5F0LopIFIaxq8OFk9oAEljQjCJsrelJbBZXRKo0MFOqrEGqA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -18280,9 +18312,9 @@ "dev": true }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.9.0.tgz", + "integrity": "sha512-uC0hJKi7eAGXUJ/YKk53RhnKxMwzHWgzf4t92oz8Qez28EBgVTfpDTB59y9hMYLzc/Wl85cD7Tv1hLZZoEJtrg==", "dev": true }, "typedarray": { diff --git a/package.json b/package.json index 8887485..4606d50 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ }, "dependencies": { "@prismicio/helpers": "^2.0.0", - "@prismicio/richtext": "^2.0.0" + "@prismicio/richtext": "^2.0.0", + "tiny-case": "^1.0.2" }, "devDependencies": { "@prismicio/client": "^6.0.0", @@ -82,6 +83,7 @@ "siroc": "^0.16.0", "standard-version": "^9.3.2", "ts-eager": "^2.0.2", + "type-fest": "^2.9.0", "typescript": "^4.5.4" }, "peerDependencies": { diff --git a/src/SliceZone.tsx b/src/SliceZone.tsx index 761ebca..69e30fa 100644 --- a/src/SliceZone.tsx +++ b/src/SliceZone.tsx @@ -1,5 +1,7 @@ import * as React from "react"; import * as prismicT from "@prismicio/types"; +import { pascalCase } from "tiny-case"; +import { PascalCase } from "type-fest"; import { __PRODUCTION__ } from "./lib/__PRODUCTION__"; @@ -148,7 +150,7 @@ type SliceZoneResolverArgs = { /** * The name of the Slice. */ - sliceName: TSlice["slice_type"]; + sliceName: PascalCase; /** * The index of the Slice in the Slice Zone. @@ -249,7 +251,9 @@ export const SliceZone = ({ if (resolver) { const resolvedComp = resolver({ slice, - sliceName: slice.slice_type, + sliceName: pascalCase(slice.slice_type) as PascalCase< + typeof slice.slice_type + >, i: index, }); @@ -270,7 +274,7 @@ export const SliceZone = ({ /> ); }); - }, [components, context, defaultComponent, slices]); + }, [components, context, defaultComponent, slices, resolver]); return <>{renderedSlices}; }; diff --git a/test/SliceZone.test.tsx b/test/SliceZone.test.tsx index 042c3bb..9f9048b 100644 --- a/test/SliceZone.test.tsx +++ b/test/SliceZone.test.tsx @@ -178,11 +178,11 @@ test("renders components from a resolver function for backwards compatibility wi sliceName, }) => { switch (sliceName) { - case "foo": { + case "Foo": { return (props) => ; } - case "bar": { + case "Bar": { return (props) => ; } } From 2e19770ee03f2f5cc5d0bb1e55b2a610f68a0e5a Mon Sep 17 00:00:00 2001 From: Angelo Ashmore Date: Thu, 13 Jan 2022 11:50:40 -1000 Subject: [PATCH 2/3] refactor: use named React imports This is done to (hopefully) solve a problem on Vercel production deploys where `React.createContext` is `undefined`. --- src/PrismicProvider.tsx | 5 +++-- src/PrismicRichText.tsx | 7 ++++--- src/PrismicText.tsx | 3 ++- src/PrismicToolbar.tsx | 6 +++--- src/SliceZone.tsx | 5 +++-- src/usePrismicContext.ts | 4 ++-- src/usePrismicPreviewResolver.ts | 4 ++-- src/useStatefulPrismicClientMethod.ts | 8 ++++---- 8 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/PrismicProvider.tsx b/src/PrismicProvider.tsx index 5886f96..abfa37c 100644 --- a/src/PrismicProvider.tsx +++ b/src/PrismicProvider.tsx @@ -1,6 +1,7 @@ import type * as prismic from "@prismicio/client"; import * as React from "react"; +import { createContext, useMemo } from "react"; import * as prismicH from "@prismicio/helpers"; import { LinkProps } from "./PrismicLink"; @@ -76,7 +77,7 @@ export type PrismicContextValue = { * React context containing shared configuration for `@prismicio/react` * components and hooks. */ -export const PrismicContext = React.createContext({}); +export const PrismicContext = createContext({}); /** * Props for ``. @@ -97,7 +98,7 @@ export const PrismicProvider = ({ externalLinkComponent, children, }: PrismicProviderProps): JSX.Element => { - const value = React.useMemo( + const value = useMemo( () => ({ client, linkResolver, diff --git a/src/PrismicRichText.tsx b/src/PrismicRichText.tsx index 9a3083e..c4dbf07 100644 --- a/src/PrismicRichText.tsx +++ b/src/PrismicRichText.tsx @@ -2,6 +2,7 @@ /* eslint-disable react/prop-types */ import * as React from "react"; +import { Fragment, useMemo } from "react"; import * as prismicT from "@prismicio/types"; import * as prismicH from "@prismicio/helpers"; import * as prismicR from "@prismicio/richtext"; @@ -165,12 +166,12 @@ const createDefaultSerializer = ( result.push(
); } - result.push({line}); + result.push({line}); i++; } - return {result}; + return {result}; }, }); @@ -219,7 +220,7 @@ export const PrismicRichText = ( ): JSX.Element | null => { const context = usePrismicContext(); - return React.useMemo(() => { + return useMemo(() => { if (!props.field) { return null; } else { diff --git a/src/PrismicText.tsx b/src/PrismicText.tsx index d667aa0..4d09df8 100644 --- a/src/PrismicText.tsx +++ b/src/PrismicText.tsx @@ -1,4 +1,5 @@ import * as React from "react"; +import { useMemo } from "react"; import * as prismicT from "@prismicio/types"; import * as prismicH from "@prismicio/helpers"; @@ -36,7 +37,7 @@ export type PrismicTextProps = { * @see Learn about Rich Text fields {@link https://prismic.io/docs/core-concepts/rich-text-title} */ export const PrismicText = (props: PrismicTextProps): JSX.Element | null => { - return React.useMemo(() => { + return useMemo(() => { if (props.field) { const text = prismicH.asText(props.field, props.separator); diff --git a/src/PrismicToolbar.tsx b/src/PrismicToolbar.tsx index ff9780b..80e4d82 100644 --- a/src/PrismicToolbar.tsx +++ b/src/PrismicToolbar.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import { useEffect } from "react"; /** * Props for ``. @@ -30,7 +30,7 @@ export const PrismicToolbar = ({ type === "new" ? "&new=true" : "" }`; - React.useEffect(() => { + useEffect(() => { const existingScript = document.querySelector(`script[src="${src}"]`); if (!existingScript) { @@ -45,7 +45,7 @@ export const PrismicToolbar = ({ document.body.appendChild(script); } - }, [repositoryName, type]); + }, [repositoryName, type, src]); return null; }; diff --git a/src/SliceZone.tsx b/src/SliceZone.tsx index 69e30fa..83e32fb 100644 --- a/src/SliceZone.tsx +++ b/src/SliceZone.tsx @@ -1,4 +1,5 @@ import * as React from "react"; +import { useEffect, useMemo } from "react"; import * as prismicT from "@prismicio/types"; import { pascalCase } from "tiny-case"; import { PascalCase } from "type-fest"; @@ -120,7 +121,7 @@ export const TODOSliceComponent = __PRODUCTION__ : ({ slice, }: SliceComponentProps): JSX.Element | null => { - React.useEffect(() => { + useEffect(() => { console.warn( `[SliceZone] Could not find a component for Slice type "${slice.slice_type}"`, slice, @@ -242,7 +243,7 @@ export const SliceZone = ({ defaultComponent = TODOSliceComponent, context = {} as TContext, }: SliceZoneProps): JSX.Element => { - const renderedSlices = React.useMemo(() => { + const renderedSlices = useMemo(() => { return slices.map((slice, index) => { let Comp = (components[slice.slice_type as keyof typeof components] || defaultComponent) as SliceComponentType; diff --git a/src/usePrismicContext.ts b/src/usePrismicContext.ts index 8ab117f..c106d4f 100644 --- a/src/usePrismicContext.ts +++ b/src/usePrismicContext.ts @@ -1,4 +1,4 @@ -import * as React from "react"; +import { useContext } from "react"; import { PrismicContext, PrismicContextValue } from "./PrismicProvider"; @@ -9,5 +9,5 @@ import { PrismicContext, PrismicContextValue } from "./PrismicProvider"; * @returns The closest `` context value. */ export const usePrismicContext = (): PrismicContextValue => { - return React.useContext(PrismicContext) || {}; + return useContext(PrismicContext) || {}; }; diff --git a/src/usePrismicPreviewResolver.ts b/src/usePrismicPreviewResolver.ts index e5e94d5..7f2940b 100644 --- a/src/usePrismicPreviewResolver.ts +++ b/src/usePrismicPreviewResolver.ts @@ -1,6 +1,6 @@ import type * as prismic from "@prismicio/client"; -import * as React from "react"; +import { useEffect } from "react"; import { usePrismicContext } from "./usePrismicContext"; import { @@ -83,7 +83,7 @@ export const usePrismicPreviewResolver = ( const [resolvedURL] = result; const { navigate } = args; - React.useEffect(() => { + useEffect(() => { if (resolvedURL && navigate) { navigate(resolvedURL); } diff --git a/src/useStatefulPrismicClientMethod.ts b/src/useStatefulPrismicClientMethod.ts index e7b0aee..f60a71e 100644 --- a/src/useStatefulPrismicClientMethod.ts +++ b/src/useStatefulPrismicClientMethod.ts @@ -1,6 +1,6 @@ import type * as prismic from "@prismicio/client"; -import * as React from "react"; +import { useEffect, useMemo, useReducer } from "react"; import { PrismicClientHookState } from "./types"; import { usePrismicClient } from "./usePrismicClient"; @@ -133,11 +133,11 @@ export const useStatefulPrismicClientMethod = < const client = usePrismicClient(explicitClient || lastArgExplicitClient); - const [state, dispatch] = React.useReducer< + const [state, dispatch] = useReducer< React.Reducer, StateMachineAction> >(reducer, initialState); - React.useEffect( + useEffect( () => { // Used to prevent dispatching an action if the hook was cleaned up. let didCancel = false; @@ -186,7 +186,7 @@ export const useStatefulPrismicClientMethod = < ], ); - return React.useMemo( + return useMemo( () => [ state.data, { From 821fcbebda5172d352d04b2aab46425d687969f9 Mon Sep 17 00:00:00 2001 From: Angelo Ashmore Date: Thu, 13 Jan 2022 14:35:08 -1000 Subject: [PATCH 3/3] refactor: remove React named imports --- package-lock.json | 17 +++-------------- package.json | 7 +++---- src/PrismicProvider.tsx | 5 ++--- src/PrismicRichText.tsx | 7 +++---- src/PrismicText.tsx | 3 +-- src/PrismicToolbar.tsx | 4 ++-- src/SliceZone.tsx | 5 ++--- src/usePrismicContext.ts | 4 ++-- src/usePrismicPreviewResolver.ts | 4 ++-- src/useStatefulPrismicClientMethod.ts | 8 ++++---- 10 files changed, 24 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a639cf..a26db4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,16 @@ { "name": "@prismicio/react", - "version": "2.0.3-debug.0", + "version": "2.0.3-debug.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@prismicio/react", - "version": "2.0.3-debug.0", + "version": "2.0.3-debug.2", "license": "Apache-2.0", "dependencies": { "@prismicio/helpers": "^2.0.0", - "@prismicio/richtext": "^2.0.0", - "tiny-case": "^1.0.2" + "@prismicio/richtext": "^2.0.0" }, "devDependencies": { "@prismicio/client": "^6.0.0", @@ -9811,11 +9810,6 @@ "node": ">=4" } }, - "node_modules/tiny-case": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.2.tgz", - "integrity": "sha512-XRlpLF8S2VuTqM8AbxvubIR+9dThYGDJ1d6hDM5F0LopIFIaxq8OFk9oAEljQjCJsrelJbBZXRKo0MFOqrEGqA==" - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -18177,11 +18171,6 @@ "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", "dev": true }, - "tiny-case": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.2.tgz", - "integrity": "sha512-XRlpLF8S2VuTqM8AbxvubIR+9dThYGDJ1d6hDM5F0LopIFIaxq8OFk9oAEljQjCJsrelJbBZXRKo0MFOqrEGqA==" - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 4606d50..9f253ca 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "exports": { ".": { "require": "./dist/index.cjs", - "import": "./dist/index.js" + "import": "./dist/index.mjs" }, "./package.json": "./package.json" }, "main": "dist/index.cjs", - "module": "dist/index.js", + "module": "dist/index.mjs", "types": "dist/index.d.ts", "files": [ "dist", @@ -46,8 +46,7 @@ }, "dependencies": { "@prismicio/helpers": "^2.0.0", - "@prismicio/richtext": "^2.0.0", - "tiny-case": "^1.0.2" + "@prismicio/richtext": "^2.0.0" }, "devDependencies": { "@prismicio/client": "^6.0.0", diff --git a/src/PrismicProvider.tsx b/src/PrismicProvider.tsx index abfa37c..5886f96 100644 --- a/src/PrismicProvider.tsx +++ b/src/PrismicProvider.tsx @@ -1,7 +1,6 @@ import type * as prismic from "@prismicio/client"; import * as React from "react"; -import { createContext, useMemo } from "react"; import * as prismicH from "@prismicio/helpers"; import { LinkProps } from "./PrismicLink"; @@ -77,7 +76,7 @@ export type PrismicContextValue = { * React context containing shared configuration for `@prismicio/react` * components and hooks. */ -export const PrismicContext = createContext({}); +export const PrismicContext = React.createContext({}); /** * Props for ``. @@ -98,7 +97,7 @@ export const PrismicProvider = ({ externalLinkComponent, children, }: PrismicProviderProps): JSX.Element => { - const value = useMemo( + const value = React.useMemo( () => ({ client, linkResolver, diff --git a/src/PrismicRichText.tsx b/src/PrismicRichText.tsx index c4dbf07..9a3083e 100644 --- a/src/PrismicRichText.tsx +++ b/src/PrismicRichText.tsx @@ -2,7 +2,6 @@ /* eslint-disable react/prop-types */ import * as React from "react"; -import { Fragment, useMemo } from "react"; import * as prismicT from "@prismicio/types"; import * as prismicH from "@prismicio/helpers"; import * as prismicR from "@prismicio/richtext"; @@ -166,12 +165,12 @@ const createDefaultSerializer = ( result.push(
); } - result.push({line}); + result.push({line}); i++; } - return {result}; + return {result}; }, }); @@ -220,7 +219,7 @@ export const PrismicRichText = ( ): JSX.Element | null => { const context = usePrismicContext(); - return useMemo(() => { + return React.useMemo(() => { if (!props.field) { return null; } else { diff --git a/src/PrismicText.tsx b/src/PrismicText.tsx index 4d09df8..d667aa0 100644 --- a/src/PrismicText.tsx +++ b/src/PrismicText.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import { useMemo } from "react"; import * as prismicT from "@prismicio/types"; import * as prismicH from "@prismicio/helpers"; @@ -37,7 +36,7 @@ export type PrismicTextProps = { * @see Learn about Rich Text fields {@link https://prismic.io/docs/core-concepts/rich-text-title} */ export const PrismicText = (props: PrismicTextProps): JSX.Element | null => { - return useMemo(() => { + return React.useMemo(() => { if (props.field) { const text = prismicH.asText(props.field, props.separator); diff --git a/src/PrismicToolbar.tsx b/src/PrismicToolbar.tsx index 80e4d82..6d66426 100644 --- a/src/PrismicToolbar.tsx +++ b/src/PrismicToolbar.tsx @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import * as React from "react"; /** * Props for ``. @@ -30,7 +30,7 @@ export const PrismicToolbar = ({ type === "new" ? "&new=true" : "" }`; - useEffect(() => { + React.useEffect(() => { const existingScript = document.querySelector(`script[src="${src}"]`); if (!existingScript) { diff --git a/src/SliceZone.tsx b/src/SliceZone.tsx index d10189f..f2607b3 100644 --- a/src/SliceZone.tsx +++ b/src/SliceZone.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import { useEffect, useMemo } from "react"; import * as prismicT from "@prismicio/types"; import type { PascalCase } from "type-fest"; @@ -121,7 +120,7 @@ export const TODOSliceComponent = __PRODUCTION__ : ({ slice, }: SliceComponentProps): JSX.Element | null => { - useEffect(() => { + React.useEffect(() => { console.warn( `[SliceZone] Could not find a component for Slice type "${slice.slice_type}"`, slice, @@ -243,7 +242,7 @@ export const SliceZone = ({ defaultComponent = TODOSliceComponent, context = {} as TContext, }: SliceZoneProps): JSX.Element => { - const renderedSlices = useMemo(() => { + const renderedSlices = React.useMemo(() => { return slices.map((slice, index) => { let Comp = (components[slice.slice_type as keyof typeof components] || defaultComponent) as SliceComponentType; diff --git a/src/usePrismicContext.ts b/src/usePrismicContext.ts index c106d4f..8ab117f 100644 --- a/src/usePrismicContext.ts +++ b/src/usePrismicContext.ts @@ -1,4 +1,4 @@ -import { useContext } from "react"; +import * as React from "react"; import { PrismicContext, PrismicContextValue } from "./PrismicProvider"; @@ -9,5 +9,5 @@ import { PrismicContext, PrismicContextValue } from "./PrismicProvider"; * @returns The closest `` context value. */ export const usePrismicContext = (): PrismicContextValue => { - return useContext(PrismicContext) || {}; + return React.useContext(PrismicContext) || {}; }; diff --git a/src/usePrismicPreviewResolver.ts b/src/usePrismicPreviewResolver.ts index 7f2940b..e5e94d5 100644 --- a/src/usePrismicPreviewResolver.ts +++ b/src/usePrismicPreviewResolver.ts @@ -1,6 +1,6 @@ import type * as prismic from "@prismicio/client"; -import { useEffect } from "react"; +import * as React from "react"; import { usePrismicContext } from "./usePrismicContext"; import { @@ -83,7 +83,7 @@ export const usePrismicPreviewResolver = ( const [resolvedURL] = result; const { navigate } = args; - useEffect(() => { + React.useEffect(() => { if (resolvedURL && navigate) { navigate(resolvedURL); } diff --git a/src/useStatefulPrismicClientMethod.ts b/src/useStatefulPrismicClientMethod.ts index f60a71e..e7b0aee 100644 --- a/src/useStatefulPrismicClientMethod.ts +++ b/src/useStatefulPrismicClientMethod.ts @@ -1,6 +1,6 @@ import type * as prismic from "@prismicio/client"; -import { useEffect, useMemo, useReducer } from "react"; +import * as React from "react"; import { PrismicClientHookState } from "./types"; import { usePrismicClient } from "./usePrismicClient"; @@ -133,11 +133,11 @@ export const useStatefulPrismicClientMethod = < const client = usePrismicClient(explicitClient || lastArgExplicitClient); - const [state, dispatch] = useReducer< + const [state, dispatch] = React.useReducer< React.Reducer, StateMachineAction> >(reducer, initialState); - useEffect( + React.useEffect( () => { // Used to prevent dispatching an action if the hook was cleaned up. let didCancel = false; @@ -186,7 +186,7 @@ export const useStatefulPrismicClientMethod = < ], ); - return useMemo( + return React.useMemo( () => [ state.data, {