@contember/react-client 1.1.0 → 1.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/development/ContemberClient.js +14 -29
  2. package/dist/development/ContemberClient.js.map +1 -1
  3. package/dist/development/apiRequest/useApiRequest.js +1 -0
  4. package/dist/development/apiRequest/useApiRequest.js.map +1 -1
  5. package/dist/development/auth/SessionTokenContext.js +5 -1
  6. package/dist/development/auth/SessionTokenContext.js.map +1 -1
  7. package/dist/development/auth/useSessionToken.js +4 -2
  8. package/dist/development/auth/useSessionToken.js.map +1 -1
  9. package/dist/development/components/RichTextRenderer/ElementRenderer.js +2 -6
  10. package/dist/development/components/RichTextRenderer/ElementRenderer.js.map +1 -1
  11. package/dist/development/components/RichTextRenderer/LeafRenderer.js +2 -6
  12. package/dist/development/components/RichTextRenderer/LeafRenderer.js.map +1 -1
  13. package/dist/development/components/RichTextRenderer/RenderElementFallback.js +21 -94
  14. package/dist/development/components/RichTextRenderer/RenderElementFallback.js.map +1 -1
  15. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js +11 -47
  16. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js.map +1 -1
  17. package/dist/development/components/RichTextRenderer/RichTextRenderer.js +5 -20
  18. package/dist/development/components/RichTextRenderer/RichTextRenderer.js.map +1 -1
  19. package/dist/development/components/RichTextRenderer/renderChildren.js +5 -17
  20. package/dist/development/components/RichTextRenderer/renderChildren.js.map +1 -1
  21. package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +1 -1
  22. package/dist/development/index.js +2 -1
  23. package/dist/development/upload/fileUploadReducer.js +1 -0
  24. package/dist/development/upload/fileUploadReducer.js.map +1 -1
  25. package/dist/development/upload/useFileUpload.js.map +1 -1
  26. package/dist/production/ContemberClient.js +13 -4
  27. package/dist/production/ContemberClient.js.map +1 -1
  28. package/dist/production/apiRequest/useApiRequest.js +1 -0
  29. package/dist/production/apiRequest/useApiRequest.js.map +1 -1
  30. package/dist/production/auth/SessionTokenContext.js +5 -1
  31. package/dist/production/auth/SessionTokenContext.js.map +1 -1
  32. package/dist/production/auth/useSessionToken.js +4 -2
  33. package/dist/production/auth/useSessionToken.js.map +1 -1
  34. package/dist/production/components/RichTextRenderer/RenderElementFallback.js.map +1 -1
  35. package/dist/production/components/RichTextRenderer/RichTextRenderer.js.map +1 -1
  36. package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +1 -1
  37. package/dist/production/index.js +2 -1
  38. package/dist/production/upload/fileUploadReducer.js +1 -0
  39. package/dist/production/upload/fileUploadReducer.js.map +1 -1
  40. package/dist/production/upload/useFileUpload.js.map +1 -1
  41. package/dist/types/ContemberClient.d.ts +3 -1
  42. package/dist/types/ContemberClient.d.ts.map +1 -1
  43. package/dist/types/auth/SessionTokenContext.d.ts +6 -2
  44. package/dist/types/auth/SessionTokenContext.d.ts.map +1 -1
  45. package/dist/types/auth/SetSessionTokenContext.d.ts +0 -1
  46. package/dist/types/auth/SetSessionTokenContext.d.ts.map +1 -1
  47. package/dist/types/auth/useSessionToken.d.ts +1 -0
  48. package/dist/types/auth/useSessionToken.d.ts.map +1 -1
  49. package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts +0 -1
  50. package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts.map +1 -1
  51. package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts +0 -1
  52. package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts.map +1 -1
  53. package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts +3 -0
  54. package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts.map +1 -1
  55. package/dist/types/config/ApiBaseUrlContext.d.ts +0 -1
  56. package/dist/types/config/ApiBaseUrlContext.d.ts.map +1 -1
  57. package/dist/types/config/LoginTokenContext.d.ts +0 -1
  58. package/dist/types/config/LoginTokenContext.d.ts.map +1 -1
  59. package/dist/types/project/ProjectSlugContext.d.ts +0 -1
  60. package/dist/types/project/ProjectSlugContext.d.ts.map +1 -1
  61. package/dist/types/project/StageSlugContext.d.ts +0 -1
  62. package/dist/types/project/StageSlugContext.d.ts.map +1 -1
  63. package/dist/types/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +4 -3
  65. package/src/ContemberClient.tsx +28 -13
  66. package/src/auth/SessionTokenContext.ts +11 -1
  67. package/src/auth/useSessionToken.ts +2 -1
  68. package/src/components/RichTextRenderer/RichTextRenderer.tsx +3 -0
  69. package/src/ambient.d.ts +0 -1
@@ -1,5 +1,5 @@
1
- import { memo, useCallback, useEffect, useState } from 'react'
2
- import { SessionTokenContext, SetSessionTokenContext } from './auth'
1
+ import { memo, useCallback, useMemo, useState } from 'react'
2
+ import { SessionTokenContext, SessionTokenContextValue, SetSessionTokenContext } from './auth'
3
3
  import { ApiBaseUrlContext, LoginTokenContext } from './config'
4
4
  import { ProjectSlugContext, StageSlugContext } from './project'
5
5
 
@@ -13,6 +13,9 @@ export interface ContemberClientProps {
13
13
 
14
14
  const sessionTokenKey = 'contember_session_token'
15
15
 
16
+ /**
17
+ * @group Entrypoints
18
+ */
16
19
  export const ContemberClient = memo<ContemberClientProps & { children: React.ReactNode }>(function ContemberClient({
17
20
  apiBaseUrl,
18
21
  children,
@@ -21,22 +24,19 @@ export const ContemberClient = memo<ContemberClientProps & { children: React.Rea
21
24
  sessionToken,
22
25
  stage,
23
26
  }) {
24
- const [sessionTokenInner, setSessionTokenInner] = useState(() => localStorage.getItem(sessionTokenKey) ?? sessionToken ?? undefined)
27
+ const [localStorageSessionToken, setLocalStorageSessionToken] = useLocalStorageSessionToken()
25
28
 
26
- const setSessionToken = useCallback((token: string | undefined) => {
27
- if (token !== undefined) {
28
- localStorage.setItem(sessionTokenKey, token)
29
- } else {
30
- localStorage.removeItem(sessionTokenKey)
31
- }
32
- setSessionTokenInner(token)
33
- }, [])
29
+ const sessionTokenContextValue = useMemo((): SessionTokenContextValue => ({
30
+ propsToken: sessionToken,
31
+ token: localStorageSessionToken ?? sessionToken,
32
+ source: localStorageSessionToken ? 'localstorage' : (sessionToken ? 'props' : undefined),
33
+ }), [localStorageSessionToken, sessionToken])
34
34
 
35
35
  return (
36
36
  <ApiBaseUrlContext.Provider value={apiBaseUrl}>
37
37
  <LoginTokenContext.Provider value={loginToken}>
38
- <SetSessionTokenContext.Provider value={setSessionToken}>
39
- <SessionTokenContext.Provider value={sessionTokenInner}>
38
+ <SetSessionTokenContext.Provider value={setLocalStorageSessionToken}>
39
+ <SessionTokenContext.Provider value={sessionTokenContextValue}>
40
40
  <ProjectSlugContext.Provider value={project}>
41
41
  <StageSlugContext.Provider value={stage}>{children}</StageSlugContext.Provider>
42
42
  </ProjectSlugContext.Provider>
@@ -46,3 +46,18 @@ export const ContemberClient = memo<ContemberClientProps & { children: React.Rea
46
46
  </ApiBaseUrlContext.Provider>
47
47
  )
48
48
  })
49
+
50
+ const useLocalStorageSessionToken = (): [value: string | undefined, set: (token: string | undefined) => void] => {
51
+ const [sessionTokenInner, setSessionTokenInner] = useState(() => localStorage.getItem(sessionTokenKey) ?? undefined)
52
+
53
+ const setSessionToken = useCallback((token: string | undefined) => {
54
+ if (token !== undefined) {
55
+ localStorage.setItem(sessionTokenKey, token)
56
+ } else {
57
+ localStorage.removeItem(sessionTokenKey)
58
+ }
59
+ setSessionTokenInner(token)
60
+ }, [])
61
+
62
+ return [sessionTokenInner, setSessionToken]
63
+ }
@@ -1,3 +1,13 @@
1
1
  import { createContext } from 'react'
2
2
 
3
- export const SessionTokenContext = createContext<string | undefined>(undefined)
3
+ export interface SessionTokenContextValue {
4
+ propsToken: string | undefined
5
+ source: 'props' | 'localstorage' | undefined
6
+ token: string | undefined
7
+ }
8
+
9
+ export const SessionTokenContext = createContext<SessionTokenContextValue>({
10
+ propsToken: undefined,
11
+ source: undefined,
12
+ token: undefined,
13
+ })
@@ -1,4 +1,5 @@
1
1
  import { useContext } from 'react'
2
2
  import { SessionTokenContext } from './SessionTokenContext'
3
3
 
4
- export const useSessionToken = () => useContext(SessionTokenContext)
4
+ export const useSessionToken = () => useContext(SessionTokenContext).token
5
+ export const useSessionTokenWithMeta = () => useContext(SessionTokenContext)
@@ -39,6 +39,9 @@ export type RichTextRendererProps<
39
39
  renderBlock?: ComponentType<{ block: unknown, children?: ReactNode }>
40
40
  } & (RichTextRendererFieldProps | RichTextRendererBlockProps<CustomElements, CustomLeaves>)
41
41
 
42
+ /**
43
+ * @group Content rendering
44
+ */
42
45
  export const RichTextRenderer = memo(function RichTextRenderer<
43
46
  CustomElements extends RichTextElement = never,
44
47
  CustomLeaves extends RichTextLeaf = never,
package/src/ambient.d.ts DELETED
@@ -1 +0,0 @@
1
- /// <reference types="vite/client" />