@contember/react-client 1.2.3 → 1.3.0-alpha.10

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 (242) hide show
  1. package/dist/development/ClientError.cjs +6 -0
  2. package/dist/development/ClientError.cjs.map +1 -0
  3. package/dist/development/ContemberClient.cjs +65 -0
  4. package/dist/development/ContemberClient.cjs.map +1 -0
  5. package/dist/development/apiRequest/apiRequestReducer.cjs +34 -0
  6. package/dist/development/apiRequest/apiRequestReducer.cjs.map +1 -0
  7. package/dist/development/apiRequest/useApiRequest.cjs +50 -0
  8. package/dist/development/apiRequest/useApiRequest.cjs.map +1 -0
  9. package/dist/development/auth/SessionTokenContext.cjs +10 -0
  10. package/dist/development/auth/SessionTokenContext.cjs.map +1 -0
  11. package/dist/development/auth/SetSessionTokenContext.cjs +8 -0
  12. package/dist/development/auth/SetSessionTokenContext.cjs.map +1 -0
  13. package/dist/development/auth/useSessionToken.cjs +9 -0
  14. package/dist/development/auth/useSessionToken.cjs.map +1 -0
  15. package/dist/development/auth/useSetSessionToken.cjs +7 -0
  16. package/dist/development/auth/useSetSessionToken.cjs.map +1 -0
  17. package/dist/development/config/ApiBaseUrlContext.cjs +6 -0
  18. package/dist/development/config/ApiBaseUrlContext.cjs.map +1 -0
  19. package/dist/development/config/LoginTokenContext.cjs +6 -0
  20. package/dist/development/config/LoginTokenContext.cjs.map +1 -0
  21. package/dist/development/config/useApiBaseUrl.cjs +7 -0
  22. package/dist/development/config/useApiBaseUrl.cjs.map +1 -0
  23. package/dist/development/config/useLoginToken.cjs +7 -0
  24. package/dist/development/config/useLoginToken.cjs.map +1 -0
  25. package/dist/development/content/useContentApiRequest.cjs +7 -0
  26. package/dist/development/content/useContentApiRequest.cjs.map +1 -0
  27. package/dist/development/content/useContentGraphQlClient.cjs +7 -0
  28. package/dist/development/content/useContentGraphQlClient.cjs.map +1 -0
  29. package/dist/development/content/useCurrentContentGraphQlClient.cjs +19 -0
  30. package/dist/development/content/useCurrentContentGraphQlClient.cjs.map +1 -0
  31. package/dist/development/index.cjs +72 -0
  32. package/dist/development/index.cjs.map +1 -0
  33. package/dist/development/index.js +1 -4
  34. package/dist/development/index.js.map +1 -1
  35. package/dist/development/project/ProjectSlugContext.cjs +6 -0
  36. package/dist/development/project/ProjectSlugContext.cjs.map +1 -0
  37. package/dist/development/project/StageSlugContext.cjs +6 -0
  38. package/dist/development/project/StageSlugContext.cjs.map +1 -0
  39. package/dist/development/project/useProjectSlug.cjs +7 -0
  40. package/dist/development/project/useProjectSlug.cjs.map +1 -0
  41. package/dist/development/project/useStageSlug.cjs +7 -0
  42. package/dist/development/project/useStageSlug.cjs.map +1 -0
  43. package/dist/development/system/useCurrentSystemGraphQlClient.cjs +14 -0
  44. package/dist/development/system/useCurrentSystemGraphQlClient.cjs.map +1 -0
  45. package/dist/development/system/useSystemApiRequest.cjs +7 -0
  46. package/dist/development/system/useSystemApiRequest.cjs.map +1 -0
  47. package/dist/development/system/useSystemGraphQlClient.cjs +7 -0
  48. package/dist/development/system/useSystemGraphQlClient.cjs.map +1 -0
  49. package/dist/development/tenant/useTenantApiRequest.cjs +7 -0
  50. package/dist/development/tenant/useTenantApiRequest.cjs.map +1 -0
  51. package/dist/development/tenant/useTenantGraphQlClient.cjs +7 -0
  52. package/dist/development/tenant/useTenantGraphQlClient.cjs.map +1 -0
  53. package/dist/development/upload/fileUploadReducer.cjs +150 -0
  54. package/dist/development/upload/fileUploadReducer.cjs.map +1 -0
  55. package/dist/development/upload/toFileId.cjs +10 -0
  56. package/dist/development/upload/toFileId.cjs.map +1 -0
  57. package/dist/development/upload/useFileUpload.cjs +166 -0
  58. package/dist/development/upload/useFileUpload.cjs.map +1 -0
  59. package/dist/development/upload/useFileUpload.js.map +1 -1
  60. package/dist/development/useGraphQlClient.cjs +13 -0
  61. package/dist/development/useGraphQlClient.cjs.map +1 -0
  62. package/dist/development/useGraphQlClient.js.map +1 -1
  63. package/dist/production/ClientError.cjs +6 -0
  64. package/dist/production/ClientError.cjs.map +1 -0
  65. package/dist/production/ContemberClient.cjs +41 -0
  66. package/dist/production/ContemberClient.cjs.map +1 -0
  67. package/dist/production/apiRequest/apiRequestReducer.cjs +34 -0
  68. package/dist/production/apiRequest/apiRequestReducer.cjs.map +1 -0
  69. package/dist/production/apiRequest/useApiRequest.cjs +50 -0
  70. package/dist/production/apiRequest/useApiRequest.cjs.map +1 -0
  71. package/dist/production/auth/SessionTokenContext.cjs +10 -0
  72. package/dist/production/auth/SessionTokenContext.cjs.map +1 -0
  73. package/dist/production/auth/SetSessionTokenContext.cjs +8 -0
  74. package/dist/production/auth/SetSessionTokenContext.cjs.map +1 -0
  75. package/dist/production/auth/useSessionToken.cjs +9 -0
  76. package/dist/production/auth/useSessionToken.cjs.map +1 -0
  77. package/dist/production/auth/useSetSessionToken.cjs +7 -0
  78. package/dist/production/auth/useSetSessionToken.cjs.map +1 -0
  79. package/dist/production/config/ApiBaseUrlContext.cjs +6 -0
  80. package/dist/production/config/ApiBaseUrlContext.cjs.map +1 -0
  81. package/dist/production/config/LoginTokenContext.cjs +6 -0
  82. package/dist/production/config/LoginTokenContext.cjs.map +1 -0
  83. package/dist/production/config/useApiBaseUrl.cjs +7 -0
  84. package/dist/production/config/useApiBaseUrl.cjs.map +1 -0
  85. package/dist/production/config/useLoginToken.cjs +7 -0
  86. package/dist/production/config/useLoginToken.cjs.map +1 -0
  87. package/dist/production/content/useContentApiRequest.cjs +7 -0
  88. package/dist/production/content/useContentApiRequest.cjs.map +1 -0
  89. package/dist/production/content/useContentGraphQlClient.cjs +7 -0
  90. package/dist/production/content/useContentGraphQlClient.cjs.map +1 -0
  91. package/dist/production/content/useCurrentContentGraphQlClient.cjs +19 -0
  92. package/dist/production/content/useCurrentContentGraphQlClient.cjs.map +1 -0
  93. package/dist/production/index.cjs +72 -0
  94. package/dist/production/index.cjs.map +1 -0
  95. package/dist/production/index.js +1 -4
  96. package/dist/production/index.js.map +1 -1
  97. package/dist/production/project/ProjectSlugContext.cjs +6 -0
  98. package/dist/production/project/ProjectSlugContext.cjs.map +1 -0
  99. package/dist/production/project/StageSlugContext.cjs +6 -0
  100. package/dist/production/project/StageSlugContext.cjs.map +1 -0
  101. package/dist/production/project/useProjectSlug.cjs +7 -0
  102. package/dist/production/project/useProjectSlug.cjs.map +1 -0
  103. package/dist/production/project/useStageSlug.cjs +7 -0
  104. package/dist/production/project/useStageSlug.cjs.map +1 -0
  105. package/dist/production/system/useCurrentSystemGraphQlClient.cjs +14 -0
  106. package/dist/production/system/useCurrentSystemGraphQlClient.cjs.map +1 -0
  107. package/dist/production/system/useSystemApiRequest.cjs +7 -0
  108. package/dist/production/system/useSystemApiRequest.cjs.map +1 -0
  109. package/dist/production/system/useSystemGraphQlClient.cjs +7 -0
  110. package/dist/production/system/useSystemGraphQlClient.cjs.map +1 -0
  111. package/dist/production/tenant/useTenantApiRequest.cjs +7 -0
  112. package/dist/production/tenant/useTenantApiRequest.cjs.map +1 -0
  113. package/dist/production/tenant/useTenantGraphQlClient.cjs +7 -0
  114. package/dist/production/tenant/useTenantGraphQlClient.cjs.map +1 -0
  115. package/dist/production/upload/fileUploadReducer.cjs +150 -0
  116. package/dist/production/upload/fileUploadReducer.cjs.map +1 -0
  117. package/dist/production/upload/toFileId.cjs +10 -0
  118. package/dist/production/upload/toFileId.cjs.map +1 -0
  119. package/dist/production/upload/useFileUpload.cjs +166 -0
  120. package/dist/production/upload/useFileUpload.cjs.map +1 -0
  121. package/dist/production/upload/useFileUpload.js.map +1 -1
  122. package/dist/production/useGraphQlClient.cjs +13 -0
  123. package/dist/production/useGraphQlClient.cjs.map +1 -0
  124. package/dist/production/useGraphQlClient.js.map +1 -1
  125. package/dist/types/index.d.ts +1 -1
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/types/tsconfig.tsbuildinfo +1 -1
  128. package/package.json +12 -4
  129. package/src/index.ts +1 -1
  130. package/src/tsconfig.json +1 -0
  131. package/dist/development/components/RichTextRenderer/ElementRenderer.js +0 -27
  132. package/dist/development/components/RichTextRenderer/ElementRenderer.js.map +0 -1
  133. package/dist/development/components/RichTextRenderer/LeafRenderer.js +0 -28
  134. package/dist/development/components/RichTextRenderer/LeafRenderer.js.map +0 -1
  135. package/dist/development/components/RichTextRenderer/RenderElementFallback.js +0 -155
  136. package/dist/development/components/RichTextRenderer/RenderElementFallback.js.map +0 -1
  137. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js +0 -74
  138. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js.map +0 -1
  139. package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js +0 -15
  140. package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +0 -1
  141. package/dist/development/components/RichTextRenderer/RichTextRenderer.js +0 -124
  142. package/dist/development/components/RichTextRenderer/RichTextRenderer.js.map +0 -1
  143. package/dist/development/components/RichTextRenderer/RichTextRendererError.js +0 -6
  144. package/dist/development/components/RichTextRenderer/RichTextRendererError.js.map +0 -1
  145. package/dist/development/components/RichTextRenderer/defaultDeserialize.js +0 -14
  146. package/dist/development/components/RichTextRenderer/defaultDeserialize.js.map +0 -1
  147. package/dist/development/components/RichTextRenderer/renderChildren.js +0 -33
  148. package/dist/development/components/RichTextRenderer/renderChildren.js.map +0 -1
  149. package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js +0 -29
  150. package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +0 -1
  151. package/dist/production/components/RichTextRenderer/ElementRenderer.js +0 -23
  152. package/dist/production/components/RichTextRenderer/ElementRenderer.js.map +0 -1
  153. package/dist/production/components/RichTextRenderer/LeafRenderer.js +0 -24
  154. package/dist/production/components/RichTextRenderer/LeafRenderer.js.map +0 -1
  155. package/dist/production/components/RichTextRenderer/RenderElementFallback.js +0 -82
  156. package/dist/production/components/RichTextRenderer/RenderElementFallback.js.map +0 -1
  157. package/dist/production/components/RichTextRenderer/RenderLeafFallback.js +0 -38
  158. package/dist/production/components/RichTextRenderer/RenderLeafFallback.js.map +0 -1
  159. package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js +0 -15
  160. package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +0 -1
  161. package/dist/production/components/RichTextRenderer/RichTextRenderer.js +0 -109
  162. package/dist/production/components/RichTextRenderer/RichTextRenderer.js.map +0 -1
  163. package/dist/production/components/RichTextRenderer/RichTextRendererError.js +0 -6
  164. package/dist/production/components/RichTextRenderer/RichTextRendererError.js.map +0 -1
  165. package/dist/production/components/RichTextRenderer/defaultDeserialize.js +0 -14
  166. package/dist/production/components/RichTextRenderer/defaultDeserialize.js.map +0 -1
  167. package/dist/production/components/RichTextRenderer/renderChildren.js +0 -21
  168. package/dist/production/components/RichTextRenderer/renderChildren.js.map +0 -1
  169. package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js +0 -29
  170. package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +0 -1
  171. package/dist/types/components/RichTextRenderer/BuiltinElements.d.ts +0 -49
  172. package/dist/types/components/RichTextRenderer/BuiltinElements.d.ts.map +0 -1
  173. package/dist/types/components/RichTextRenderer/BuiltinLeaves.d.ts +0 -21
  174. package/dist/types/components/RichTextRenderer/BuiltinLeaves.d.ts.map +0 -1
  175. package/dist/types/components/RichTextRenderer/ElementRenderer.d.ts +0 -22
  176. package/dist/types/components/RichTextRenderer/ElementRenderer.d.ts.map +0 -1
  177. package/dist/types/components/RichTextRenderer/LeafRenderer.d.ts +0 -14
  178. package/dist/types/components/RichTextRenderer/LeafRenderer.d.ts.map +0 -1
  179. package/dist/types/components/RichTextRenderer/NormalizedRichTextBlock.d.ts +0 -14
  180. package/dist/types/components/RichTextRenderer/NormalizedRichTextBlock.d.ts.map +0 -1
  181. package/dist/types/components/RichTextRenderer/ReferenceRenderer.d.ts +0 -14
  182. package/dist/types/components/RichTextRenderer/ReferenceRenderer.d.ts.map +0 -1
  183. package/dist/types/components/RichTextRenderer/RenderElementFallback.d.ts +0 -12
  184. package/dist/types/components/RichTextRenderer/RenderElementFallback.d.ts.map +0 -1
  185. package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts +0 -6
  186. package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts.map +0 -1
  187. package/dist/types/components/RichTextRenderer/RichTextBlock.d.ts +0 -2
  188. package/dist/types/components/RichTextRenderer/RichTextBlock.d.ts.map +0 -1
  189. package/dist/types/components/RichTextRenderer/RichTextElement.d.ts +0 -7
  190. package/dist/types/components/RichTextRenderer/RichTextElement.d.ts.map +0 -1
  191. package/dist/types/components/RichTextRenderer/RichTextElementMetadata.d.ts +0 -11
  192. package/dist/types/components/RichTextRenderer/RichTextElementMetadata.d.ts.map +0 -1
  193. package/dist/types/components/RichTextRenderer/RichTextLeaf.d.ts +0 -4
  194. package/dist/types/components/RichTextRenderer/RichTextLeaf.d.ts.map +0 -1
  195. package/dist/types/components/RichTextRenderer/RichTextLeafMetadata.d.ts +0 -4
  196. package/dist/types/components/RichTextRenderer/RichTextLeafMetadata.d.ts.map +0 -1
  197. package/dist/types/components/RichTextRenderer/RichTextReference.d.ts +0 -4
  198. package/dist/types/components/RichTextRenderer/RichTextReference.d.ts.map +0 -1
  199. package/dist/types/components/RichTextRenderer/RichTextRenderMetadata.d.ts +0 -12
  200. package/dist/types/components/RichTextRenderer/RichTextRenderMetadata.d.ts.map +0 -1
  201. package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts +0 -7
  202. package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts.map +0 -1
  203. package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts +0 -33
  204. package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts.map +0 -1
  205. package/dist/types/components/RichTextRenderer/RichTextRendererError.d.ts +0 -3
  206. package/dist/types/components/RichTextRenderer/RichTextRendererError.d.ts.map +0 -1
  207. package/dist/types/components/RichTextRenderer/RootEditorNode.d.ts +0 -9
  208. package/dist/types/components/RichTextRenderer/RootEditorNode.d.ts.map +0 -1
  209. package/dist/types/components/RichTextRenderer/defaultDeserialize.d.ts +0 -5
  210. package/dist/types/components/RichTextRenderer/defaultDeserialize.d.ts.map +0 -1
  211. package/dist/types/components/RichTextRenderer/index.d.ts +0 -16
  212. package/dist/types/components/RichTextRenderer/index.d.ts.map +0 -1
  213. package/dist/types/components/RichTextRenderer/renderChildren.d.ts +0 -14
  214. package/dist/types/components/RichTextRenderer/renderChildren.d.ts.map +0 -1
  215. package/dist/types/components/RichTextRenderer/resolveRichTextElementMetadata.d.ts +0 -8
  216. package/dist/types/components/RichTextRenderer/resolveRichTextElementMetadata.d.ts.map +0 -1
  217. package/dist/types/components/index.d.ts +0 -2
  218. package/dist/types/components/index.d.ts.map +0 -1
  219. package/src/components/RichTextRenderer/BuiltinElements.ts +0 -112
  220. package/src/components/RichTextRenderer/BuiltinLeaves.ts +0 -32
  221. package/src/components/RichTextRenderer/ElementRenderer.tsx +0 -71
  222. package/src/components/RichTextRenderer/LeafRenderer.tsx +0 -39
  223. package/src/components/RichTextRenderer/NormalizedRichTextBlock.ts +0 -17
  224. package/src/components/RichTextRenderer/ReferenceRenderer.ts +0 -26
  225. package/src/components/RichTextRenderer/RenderElementFallback.tsx +0 -147
  226. package/src/components/RichTextRenderer/RenderLeafFallback.tsx +0 -43
  227. package/src/components/RichTextRenderer/RichTextBlock.ts +0 -1
  228. package/src/components/RichTextRenderer/RichTextElement.ts +0 -10
  229. package/src/components/RichTextRenderer/RichTextElementMetadata.ts +0 -15
  230. package/src/components/RichTextRenderer/RichTextLeaf.ts +0 -3
  231. package/src/components/RichTextRenderer/RichTextLeafMetadata.ts +0 -3
  232. package/src/components/RichTextRenderer/RichTextReference.ts +0 -3
  233. package/src/components/RichTextRenderer/RichTextRenderMetadata.ts +0 -16
  234. package/src/components/RichTextRenderer/RichTextRenderMetadataContext.ts +0 -20
  235. package/src/components/RichTextRenderer/RichTextRenderer.tsx +0 -168
  236. package/src/components/RichTextRenderer/RichTextRendererError.ts +0 -1
  237. package/src/components/RichTextRenderer/RootEditorNode.ts +0 -12
  238. package/src/components/RichTextRenderer/defaultDeserialize.ts +0 -19
  239. package/src/components/RichTextRenderer/index.ts +0 -15
  240. package/src/components/RichTextRenderer/renderChildren.tsx +0 -50
  241. package/src/components/RichTextRenderer/resolveRichTextElementMetadata.ts +0 -50
  242. package/src/components/index.ts +0 -1
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const client = require("@contember/client");
4
+ const react = require("react");
5
+ const fileUploadReducer = require("./fileUploadReducer.cjs");
6
+ const useCurrentContentGraphQlClient = require("../content/useCurrentContentGraphQlClient.cjs");
7
+ const useFileUpload = ({} = {}) => {
8
+ const contentApiClient = useCurrentContentGraphQlClient.useCurrentContentGraphQlClient();
9
+ const fileIdSeedRef = react.useRef(1);
10
+ const [internalState, dispatch] = react.useReducer(fileUploadReducer.fileUploadReducer, void 0, fileUploadReducer.initializeFileUploadState);
11
+ const defaultUploader = react.useMemo(() => new client.S3FileUploader(), []);
12
+ const purgeUpload = react.useCallback((files) => {
13
+ dispatch({
14
+ type: "purge",
15
+ files
16
+ });
17
+ }, []);
18
+ const failUpload = react.useCallback((error) => {
19
+ dispatch({
20
+ type: "finishWithError",
21
+ error
22
+ });
23
+ }, []);
24
+ const previewUrls = react.useRef(/* @__PURE__ */ new Set());
25
+ const fileIds = react.useRef(/* @__PURE__ */ new WeakMap());
26
+ const filesWithMetadataById = react.useRef(/* @__PURE__ */ new Map());
27
+ const initializeUpload = react.useCallback(
28
+ (files) => {
29
+ const newFileIds = /* @__PURE__ */ new Set();
30
+ const fileWithMetadataByFileConfig = /* @__PURE__ */ new Map();
31
+ for (const fileMaybeWithId of files) {
32
+ const abortController = new AbortController();
33
+ let fileId;
34
+ let file;
35
+ if (fileMaybeWithId instanceof File) {
36
+ fileId = `__contember__file-${fileIdSeedRef.current++}`;
37
+ file = fileMaybeWithId;
38
+ } else {
39
+ fileId = fileMaybeWithId[0];
40
+ file = fileMaybeWithId[1];
41
+ }
42
+ abortController.signal.addEventListener("abort", () => {
43
+ purgeUpload([fileId]);
44
+ });
45
+ const previewUrl = URL.createObjectURL(file);
46
+ const fileWithMetadata = {
47
+ previewUrl,
48
+ abortController,
49
+ file,
50
+ fileId
51
+ };
52
+ fileWithMetadataByFileConfig.set(fileId, fileWithMetadata);
53
+ newFileIds.add(fileId);
54
+ previewUrls.current.add(previewUrl);
55
+ fileIds.current.set(file, fileId);
56
+ filesWithMetadataById.current.set(fileId, new WeakRef(fileWithMetadata));
57
+ }
58
+ if (fileWithMetadataByFileConfig.size === 0) {
59
+ return fileWithMetadataByFileConfig;
60
+ }
61
+ if (newFileIds.size) {
62
+ dispatch({
63
+ type: "purge",
64
+ files: newFileIds
65
+ });
66
+ }
67
+ dispatch({
68
+ type: "initialize",
69
+ files: fileWithMetadataByFileConfig
70
+ });
71
+ return fileWithMetadataByFileConfig;
72
+ },
73
+ [purgeUpload]
74
+ );
75
+ const startUpload = react.useCallback(
76
+ (files) => {
77
+ const filesById = /* @__PURE__ */ new Map();
78
+ const groupedByUploader = /* @__PURE__ */ new Map();
79
+ for (const fileOrIdMaybeWithOptions of files) {
80
+ let fileOrId;
81
+ let options;
82
+ if (Array.isArray(fileOrIdMaybeWithOptions)) {
83
+ fileOrId = fileOrIdMaybeWithOptions[0];
84
+ options = fileOrIdMaybeWithOptions[1];
85
+ } else {
86
+ fileOrId = fileOrIdMaybeWithOptions;
87
+ options = {};
88
+ }
89
+ const { uploader = defaultUploader, metadata } = options;
90
+ const fileId = fileOrId instanceof File ? fileIds.current.get(fileOrId) : fileOrId;
91
+ const fileState = fileId ? filesWithMetadataById.current.get(fileId)?.deref() : void 0;
92
+ if (fileId === void 0 || fileState === void 0) {
93
+ throw new Error(
94
+ `Trying to startUpload a file that hasn't been previously initialized. This will be possible in future, but isn't yet.`
95
+ );
96
+ }
97
+ filesById.set(fileId, {
98
+ uploader,
99
+ metadata
100
+ });
101
+ let filesWithSameUploader = groupedByUploader.get(uploader);
102
+ if (filesWithSameUploader === void 0) {
103
+ groupedByUploader.set(uploader, filesWithSameUploader = /* @__PURE__ */ new Map());
104
+ }
105
+ filesWithSameUploader.set(fileState.file, {
106
+ abortSignal: fileState.abortController.signal
107
+ });
108
+ }
109
+ dispatch({
110
+ type: "startUploading",
111
+ files: filesById
112
+ });
113
+ for (const [uploader, filesForUpload] of groupedByUploader) {
114
+ try {
115
+ uploader.upload(filesForUpload, {
116
+ onProgress: (progress) => {
117
+ dispatch({
118
+ type: "updateUploadProgress",
119
+ progress
120
+ });
121
+ },
122
+ onSuccess: (result) => {
123
+ dispatch({
124
+ type: "finishSuccessfully",
125
+ result
126
+ });
127
+ },
128
+ onError: (error) => {
129
+ dispatch({
130
+ type: "finishWithError",
131
+ error
132
+ });
133
+ },
134
+ contentApiClient
135
+ });
136
+ } catch (error) {
137
+ dispatch({
138
+ type: "finishWithError",
139
+ error: Array.from(filesForUpload).map(([file]) => [file, error])
140
+ });
141
+ }
142
+ }
143
+ },
144
+ [contentApiClient, defaultUploader]
145
+ );
146
+ const operations = react.useMemo(
147
+ () => ({
148
+ failUpload,
149
+ initializeUpload,
150
+ purgeUpload,
151
+ startUpload
152
+ }),
153
+ [failUpload, initializeUpload, purgeUpload, startUpload]
154
+ );
155
+ react.useEffect(
156
+ () => () => {
157
+ for (const previewUrl of Array.from(previewUrls.current)) {
158
+ URL.revokeObjectURL(previewUrl);
159
+ }
160
+ },
161
+ []
162
+ );
163
+ return [internalState.state, operations];
164
+ };
165
+ exports.useFileUpload = useFileUpload;
166
+ //# sourceMappingURL=useFileUpload.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFileUpload.cjs","sources":["../../../src/upload/useFileUpload.ts"],"sourcesContent":["import { FileUploader, S3FileUploader, UploadedFileMetadata } from '@contember/client'\nimport { Reducer, useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { useCurrentContentGraphQlClient } from '../content'\nimport type { FileId } from './FileId'\nimport type { FileUploadAction } from './FileUploadAction'\nimport type { FileUploadCompoundState } from './FileUploadCompoundState'\nimport type { FileUploadMetadata } from './FileUploadMetadata'\nimport type { FileUploadMultiTemporalState } from './FileUploadMultiTemporalState'\nimport type {\n\tPurgeUpload,\n\tFileUploadOperations,\n\tInitializeUpload,\n\tStartUpload,\n\tStartUploadFileOptions,\n\tFailUpload,\n} from './FileUploadOperations'\nimport { fileUploadReducer, initializeFileUploadState } from './fileUploadReducer'\nimport type { FileWithMetadata } from './FileWithMetadata'\n\nexport type FileUpload<Result = unknown, Metadata = undefined> = [\n\tFileUploadCompoundState<Result, Metadata>,\n\tFileUploadOperations<Metadata>,\n]\n\nexport interface FileUploadOptions {\n}\n\nexport const useFileUpload = <Result = unknown, Metadata = undefined>({}: FileUploadOptions = {}): FileUpload<Result, Metadata> => {\n\tconst contentApiClient = useCurrentContentGraphQlClient()\n\n\tconst fileIdSeedRef = useRef(1)\n\n\tconst [internalState, dispatch] = useReducer<\n\t\tReducer<FileUploadMultiTemporalState<Result, Metadata>, FileUploadAction<Result, Metadata>>,\n\t\tundefined\n\t>(fileUploadReducer, undefined, initializeFileUploadState)\n\n\tconst defaultUploader = useMemo(() => new S3FileUploader(), [])\n\n\tconst purgeUpload = useCallback<PurgeUpload>(files => {\n\t\tdispatch({\n\t\t\ttype: 'purge',\n\t\t\tfiles,\n\t\t})\n\t}, [])\n\tconst failUpload = useCallback<FailUpload>(error => {\n\t\tdispatch({\n\t\t\ttype: 'finishWithError',\n\t\t\terror,\n\t\t})\n\t}, [])\n\n\tconst previewUrls = useRef(new Set<string>())\n\tconst fileIds = useRef(new WeakMap<File, FileId>())\n\tconst filesWithMetadataById = useRef(new Map<FileId, WeakRef<FileWithMetadata>>)\n\n\tconst initializeUpload = useCallback<InitializeUpload>(\n\t\tfiles => {\n\t\t\tconst newFileIds = new Set<FileId>()\n\t\t\tconst fileWithMetadataByFileConfig = new Map<FileId, FileWithMetadata>()\n\n\t\t\tfor (const fileMaybeWithId of files) {\n\t\t\t\tconst abortController = new AbortController()\n\n\t\t\t\tlet fileId: FileId\n\t\t\t\tlet file: File\n\n\t\t\t\tif (fileMaybeWithId instanceof File) {\n\t\t\t\t\tfileId = `__contember__file-${fileIdSeedRef.current++}`\n\t\t\t\t\tfile = fileMaybeWithId\n\t\t\t\t} else {\n\t\t\t\t\tfileId = fileMaybeWithId[0]\n\t\t\t\t\tfile = fileMaybeWithId[1]\n\t\t\t\t}\n\n\t\t\t\tabortController.signal.addEventListener('abort', () => {\n\t\t\t\t\tpurgeUpload([fileId])\n\t\t\t\t})\n\n\t\t\t\tconst previewUrl = URL.createObjectURL(file)\n\t\t\t\tconst fileWithMetadata: FileWithMetadata = {\n\t\t\t\t\tpreviewUrl: previewUrl,\n\t\t\t\t\tabortController,\n\t\t\t\t\tfile,\n\t\t\t\t\tfileId,\n\t\t\t\t}\n\t\t\t\tfileWithMetadataByFileConfig.set(fileId, fileWithMetadata)\n\n\t\t\t\tnewFileIds.add(fileId)\n\n\t\t\t\tpreviewUrls.current.add(previewUrl)\n\t\t\t\tfileIds.current.set(file, fileId)\n\t\t\t\tfilesWithMetadataById.current.set(fileId, new WeakRef(fileWithMetadata))\n\t\t\t}\n\t\t\tif (fileWithMetadataByFileConfig.size === 0) {\n\t\t\t\treturn fileWithMetadataByFileConfig\n\t\t\t}\n\n\t\t\tif (newFileIds.size) {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'purge',\n\t\t\t\t\tfiles: newFileIds,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'initialize',\n\t\t\t\tfiles: fileWithMetadataByFileConfig,\n\t\t\t})\n\n\t\t\treturn fileWithMetadataByFileConfig\n\t\t},\n\t\t[purgeUpload],\n\t)\n\tconst startUpload = useCallback<StartUpload<Metadata>>(\n\t\tfiles => {\n\t\t\tconst filesById = new Map<FileId, FileUploadMetadata<Metadata>>()\n\t\t\tconst groupedByUploader: Map<FileUploader, Map<File, UploadedFileMetadata>> = new Map()\n\n\t\t\tfor (const fileOrIdMaybeWithOptions of files) {\n\t\t\t\tlet fileOrId: File | FileId\n\t\t\t\tlet options: StartUploadFileOptions<Metadata>\n\n\t\t\t\tif (Array.isArray(fileOrIdMaybeWithOptions)) {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions[0]\n\t\t\t\t\toptions = fileOrIdMaybeWithOptions[1]\n\t\t\t\t} else {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions\n\t\t\t\t\toptions = {}\n\t\t\t\t}\n\t\t\t\tconst { uploader = defaultUploader, metadata } = options\n\n\t\t\t\tconst fileId = fileOrId instanceof File ? fileIds.current.get(fileOrId) : fileOrId\n\t\t\t\tconst fileState = fileId ? filesWithMetadataById.current.get(fileId)?.deref() : undefined\n\n\t\t\t\tif (fileId === undefined || fileState === undefined) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Trying to startUpload a file that hasn't been previously initialized. ` +\n\t\t\t\t\t\t\t`This will be possible in future, but isn't yet.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\n\t\t\t\tfilesById.set(fileId, {\n\t\t\t\t\tuploader,\n\t\t\t\t\tmetadata,\n\t\t\t\t})\n\n\t\t\t\tlet filesWithSameUploader = groupedByUploader.get(uploader)\n\t\t\t\tif (filesWithSameUploader === undefined) {\n\t\t\t\t\tgroupedByUploader.set(uploader, (filesWithSameUploader = new Map()))\n\t\t\t\t}\n\t\t\t\tfilesWithSameUploader.set(fileState.file, {\n\t\t\t\t\tabortSignal: fileState.abortController.signal,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'startUploading',\n\t\t\t\tfiles: filesById,\n\t\t\t})\n\n\t\t\tfor (const [uploader, filesForUpload] of groupedByUploader) {\n\t\t\t\ttry {\n\t\t\t\t\tuploader.upload(filesForUpload, {\n\t\t\t\t\t\tonProgress: progress => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'updateUploadProgress',\n\t\t\t\t\t\t\t\tprogress,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSuccess: result => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishSuccessfully',\n\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: error => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontentApiClient,\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tdispatch({\n\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\terror: Array.from(filesForUpload).map(([file]) => [file, error]),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[contentApiClient, defaultUploader],\n\t)\n\n\tconst operations = useMemo<FileUploadOperations<Metadata>>(\n\t\t() => ({\n\t\t\tfailUpload,\n\t\t\tinitializeUpload,\n\t\t\tpurgeUpload,\n\t\t\tstartUpload,\n\t\t}),\n\t\t[failUpload, initializeUpload, purgeUpload, startUpload],\n\t)\n\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tfor (const previewUrl of Array.from(previewUrls.current)) {\n\t\t\t\tURL.revokeObjectURL(previewUrl)\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\treturn [internalState.state, operations]\n}\n"],"names":["useCurrentContentGraphQlClient","useRef","useReducer","fileUploadReducer","initializeFileUploadState","useMemo","S3FileUploader","useCallback","useEffect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFileUpload.js","sources":["../../../src/upload/useFileUpload.ts"],"sourcesContent":["import { FileUploader, S3FileUploader, UploadedFileMetadata } from '@contember/client'\nimport { Reducer, useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { useCurrentContentGraphQlClient } from '../content'\nimport type { FileId } from './FileId'\nimport type { FileUploadAction } from './FileUploadAction'\nimport type { FileUploadCompoundState } from './FileUploadCompoundState'\nimport type { FileUploadMetadata } from './FileUploadMetadata'\nimport type { FileUploadMultiTemporalState } from './FileUploadMultiTemporalState'\nimport type {\n\tPurgeUpload,\n\tFileUploadOperations,\n\tInitializeUpload,\n\tStartUpload,\n\tStartUploadFileOptions,\n\tFailUpload,\n} from './FileUploadOperations'\nimport { fileUploadReducer, initializeFileUploadState } from './fileUploadReducer'\nimport type { FileWithMetadata } from './FileWithMetadata'\n\nexport type FileUpload<Result = unknown, Metadata = undefined> = [\n\tFileUploadCompoundState<Result, Metadata>,\n\tFileUploadOperations<Metadata>,\n]\n\nexport interface FileUploadOptions {\n}\n\nexport const useFileUpload = <Result = unknown, Metadata = undefined>({}: FileUploadOptions = {}): FileUpload<Result, Metadata> => {\n\tconst contentApiClient = useCurrentContentGraphQlClient()\n\n\tconst fileIdSeedRef = useRef(1)\n\n\tconst [internalState, dispatch] = useReducer<\n\t\tReducer<FileUploadMultiTemporalState<Result, Metadata>, FileUploadAction<Result, Metadata>>,\n\t\tundefined\n\t>(fileUploadReducer, undefined, initializeFileUploadState)\n\n\tconst defaultUploader = useMemo(() => new S3FileUploader(), [])\n\n\tconst purgeUpload = useCallback<PurgeUpload>(files => {\n\t\tdispatch({\n\t\t\ttype: 'purge',\n\t\t\tfiles,\n\t\t})\n\t}, [])\n\tconst failUpload = useCallback<FailUpload>(error => {\n\t\tdispatch({\n\t\t\ttype: 'finishWithError',\n\t\t\terror,\n\t\t})\n\t}, [])\n\n\tconst previewUrls = useRef(new Set<string>())\n\tconst fileIds = useRef(new WeakMap<File, FileId>())\n\tconst filesWithMetadataById = useRef(new Map<FileId, WeakRef<FileWithMetadata>>)\n\n\tconst initializeUpload = useCallback<InitializeUpload>(\n\t\tfiles => {\n\t\t\tconst newFileIds = new Set<FileId>()\n\t\t\tconst fileWithMetadataByFileConfig = new Map<FileId, FileWithMetadata>()\n\n\t\t\tfor (const fileMaybeWithId of files) {\n\t\t\t\tconst abortController = new AbortController()\n\n\t\t\t\tlet fileId: FileId\n\t\t\t\tlet file: File\n\n\t\t\t\tif (fileMaybeWithId instanceof File) {\n\t\t\t\t\tfileId = `__contember__file-${fileIdSeedRef.current++}`\n\t\t\t\t\tfile = fileMaybeWithId\n\t\t\t\t} else {\n\t\t\t\t\tfileId = fileMaybeWithId[0]\n\t\t\t\t\tfile = fileMaybeWithId[1]\n\t\t\t\t}\n\n\t\t\t\tabortController.signal.addEventListener('abort', () => {\n\t\t\t\t\tpurgeUpload([fileId])\n\t\t\t\t})\n\n\t\t\t\tconst previewUrl = URL.createObjectURL(file)\n\t\t\t\tconst fileWithMetadata: FileWithMetadata = {\n\t\t\t\t\tpreviewUrl: previewUrl,\n\t\t\t\t\tabortController,\n\t\t\t\t\tfile,\n\t\t\t\t\tfileId,\n\t\t\t\t}\n\t\t\t\tfileWithMetadataByFileConfig.set(fileId, fileWithMetadata)\n\n\t\t\t\tnewFileIds.add(fileId)\n\n\t\t\t\tpreviewUrls.current.add(previewUrl)\n\t\t\t\tfileIds.current.set(file, fileId)\n\t\t\t\tfilesWithMetadataById.current.set(fileId, new WeakRef(fileWithMetadata))\n\t\t\t}\n\t\t\tif (fileWithMetadataByFileConfig.size === 0) {\n\t\t\t\treturn fileWithMetadataByFileConfig\n\t\t\t}\n\n\t\t\tif (newFileIds.size) {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'purge',\n\t\t\t\t\tfiles: newFileIds,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'initialize',\n\t\t\t\tfiles: fileWithMetadataByFileConfig,\n\t\t\t})\n\n\t\t\treturn fileWithMetadataByFileConfig\n\t\t},\n\t\t[purgeUpload],\n\t)\n\tconst startUpload = useCallback<StartUpload<Metadata>>(\n\t\tfiles => {\n\t\t\tconst filesById = new Map<FileId, FileUploadMetadata<Metadata>>()\n\t\t\tconst groupedByUploader: Map<FileUploader, Map<File, UploadedFileMetadata>> = new Map()\n\n\t\t\tfor (const fileOrIdMaybeWithOptions of files) {\n\t\t\t\tlet fileOrId: File | FileId\n\t\t\t\tlet options: StartUploadFileOptions<Metadata>\n\n\t\t\t\tif (Array.isArray(fileOrIdMaybeWithOptions)) {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions[0]\n\t\t\t\t\toptions = fileOrIdMaybeWithOptions[1]\n\t\t\t\t} else {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions\n\t\t\t\t\toptions = {}\n\t\t\t\t}\n\t\t\t\tconst { uploader = defaultUploader, metadata } = options\n\n\t\t\t\tconst fileId = fileOrId instanceof File ? fileIds.current.get(fileOrId) : fileOrId\n\t\t\t\tconst fileState = fileId ? filesWithMetadataById.current.get(fileId)?.deref() : undefined\n\n\t\t\t\tif (fileId === undefined || fileState === undefined) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Trying to startUpload a file that hasn't been previously initialized. ` +\n\t\t\t\t\t\t\t`This will be possible in future, but isn't yet.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\n\t\t\t\tfilesById.set(fileId, {\n\t\t\t\t\tuploader,\n\t\t\t\t\tmetadata,\n\t\t\t\t})\n\n\t\t\t\tlet filesWithSameUploader = groupedByUploader.get(uploader)\n\t\t\t\tif (filesWithSameUploader === undefined) {\n\t\t\t\t\tgroupedByUploader.set(uploader, (filesWithSameUploader = new Map()))\n\t\t\t\t}\n\t\t\t\tfilesWithSameUploader.set(fileState.file, {\n\t\t\t\t\tabortSignal: fileState.abortController.signal,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'startUploading',\n\t\t\t\tfiles: filesById,\n\t\t\t})\n\n\t\t\tfor (const [uploader, filesForUpload] of groupedByUploader) {\n\t\t\t\ttry {\n\t\t\t\t\tuploader.upload(filesForUpload, {\n\t\t\t\t\t\tonProgress: progress => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'updateUploadProgress',\n\t\t\t\t\t\t\t\tprogress,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSuccess: result => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishSuccessfully',\n\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: error => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontentApiClient,\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tdispatch({\n\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\terror: Array.from(filesForUpload).map(([file]) => [file, error]),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[contentApiClient, defaultUploader],\n\t)\n\n\tconst operations = useMemo<FileUploadOperations<Metadata>>(\n\t\t() => ({\n\t\t\tfailUpload,\n\t\t\tinitializeUpload,\n\t\t\tpurgeUpload,\n\t\t\tstartUpload,\n\t\t}),\n\t\t[failUpload, initializeUpload, purgeUpload, startUpload],\n\t)\n\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tfor (const previewUrl of Array.from(previewUrls.current)) {\n\t\t\t\tURL.revokeObjectURL(previewUrl)\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\treturn [internalState.state, operations]\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFileUpload.js","sources":["../../../src/upload/useFileUpload.ts"],"sourcesContent":["import { FileUploader, S3FileUploader, UploadedFileMetadata } from '@contember/client'\nimport { Reducer, useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { useCurrentContentGraphQlClient } from '../content'\nimport type { FileId } from './FileId'\nimport type { FileUploadAction } from './FileUploadAction'\nimport type { FileUploadCompoundState } from './FileUploadCompoundState'\nimport type { FileUploadMetadata } from './FileUploadMetadata'\nimport type { FileUploadMultiTemporalState } from './FileUploadMultiTemporalState'\nimport type {\n\tPurgeUpload,\n\tFileUploadOperations,\n\tInitializeUpload,\n\tStartUpload,\n\tStartUploadFileOptions,\n\tFailUpload,\n} from './FileUploadOperations'\nimport { fileUploadReducer, initializeFileUploadState } from './fileUploadReducer'\nimport type { FileWithMetadata } from './FileWithMetadata'\n\nexport type FileUpload<Result = unknown, Metadata = undefined> = [\n\tFileUploadCompoundState<Result, Metadata>,\n\tFileUploadOperations<Metadata>,\n]\n\nexport interface FileUploadOptions {\n}\n\nexport const useFileUpload = <Result = unknown, Metadata = undefined>({}: FileUploadOptions = {}): FileUpload<Result, Metadata> => {\n\tconst contentApiClient = useCurrentContentGraphQlClient()\n\n\tconst fileIdSeedRef = useRef(1)\n\n\tconst [internalState, dispatch] = useReducer<\n\t\tReducer<FileUploadMultiTemporalState<Result, Metadata>, FileUploadAction<Result, Metadata>>,\n\t\tundefined\n\t>(fileUploadReducer, undefined, initializeFileUploadState)\n\n\tconst defaultUploader = useMemo(() => new S3FileUploader(), [])\n\n\tconst purgeUpload = useCallback<PurgeUpload>(files => {\n\t\tdispatch({\n\t\t\ttype: 'purge',\n\t\t\tfiles,\n\t\t})\n\t}, [])\n\tconst failUpload = useCallback<FailUpload>(error => {\n\t\tdispatch({\n\t\t\ttype: 'finishWithError',\n\t\t\terror,\n\t\t})\n\t}, [])\n\n\tconst previewUrls = useRef(new Set<string>())\n\tconst fileIds = useRef(new WeakMap<File, FileId>())\n\tconst filesWithMetadataById = useRef(new Map<FileId, WeakRef<FileWithMetadata>>)\n\n\tconst initializeUpload = useCallback<InitializeUpload>(\n\t\tfiles => {\n\t\t\tconst newFileIds = new Set<FileId>()\n\t\t\tconst fileWithMetadataByFileConfig = new Map<FileId, FileWithMetadata>()\n\n\t\t\tfor (const fileMaybeWithId of files) {\n\t\t\t\tconst abortController = new AbortController()\n\n\t\t\t\tlet fileId: FileId\n\t\t\t\tlet file: File\n\n\t\t\t\tif (fileMaybeWithId instanceof File) {\n\t\t\t\t\tfileId = `__contember__file-${fileIdSeedRef.current++}`\n\t\t\t\t\tfile = fileMaybeWithId\n\t\t\t\t} else {\n\t\t\t\t\tfileId = fileMaybeWithId[0]\n\t\t\t\t\tfile = fileMaybeWithId[1]\n\t\t\t\t}\n\n\t\t\t\tabortController.signal.addEventListener('abort', () => {\n\t\t\t\t\tpurgeUpload([fileId])\n\t\t\t\t})\n\n\t\t\t\tconst previewUrl = URL.createObjectURL(file)\n\t\t\t\tconst fileWithMetadata: FileWithMetadata = {\n\t\t\t\t\tpreviewUrl: previewUrl,\n\t\t\t\t\tabortController,\n\t\t\t\t\tfile,\n\t\t\t\t\tfileId,\n\t\t\t\t}\n\t\t\t\tfileWithMetadataByFileConfig.set(fileId, fileWithMetadata)\n\n\t\t\t\tnewFileIds.add(fileId)\n\n\t\t\t\tpreviewUrls.current.add(previewUrl)\n\t\t\t\tfileIds.current.set(file, fileId)\n\t\t\t\tfilesWithMetadataById.current.set(fileId, new WeakRef(fileWithMetadata))\n\t\t\t}\n\t\t\tif (fileWithMetadataByFileConfig.size === 0) {\n\t\t\t\treturn fileWithMetadataByFileConfig\n\t\t\t}\n\n\t\t\tif (newFileIds.size) {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'purge',\n\t\t\t\t\tfiles: newFileIds,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'initialize',\n\t\t\t\tfiles: fileWithMetadataByFileConfig,\n\t\t\t})\n\n\t\t\treturn fileWithMetadataByFileConfig\n\t\t},\n\t\t[purgeUpload],\n\t)\n\tconst startUpload = useCallback<StartUpload<Metadata>>(\n\t\tfiles => {\n\t\t\tconst filesById = new Map<FileId, FileUploadMetadata<Metadata>>()\n\t\t\tconst groupedByUploader: Map<FileUploader, Map<File, UploadedFileMetadata>> = new Map()\n\n\t\t\tfor (const fileOrIdMaybeWithOptions of files) {\n\t\t\t\tlet fileOrId: File | FileId\n\t\t\t\tlet options: StartUploadFileOptions<Metadata>\n\n\t\t\t\tif (Array.isArray(fileOrIdMaybeWithOptions)) {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions[0]\n\t\t\t\t\toptions = fileOrIdMaybeWithOptions[1]\n\t\t\t\t} else {\n\t\t\t\t\tfileOrId = fileOrIdMaybeWithOptions\n\t\t\t\t\toptions = {}\n\t\t\t\t}\n\t\t\t\tconst { uploader = defaultUploader, metadata } = options\n\n\t\t\t\tconst fileId = fileOrId instanceof File ? fileIds.current.get(fileOrId) : fileOrId\n\t\t\t\tconst fileState = fileId ? filesWithMetadataById.current.get(fileId)?.deref() : undefined\n\n\t\t\t\tif (fileId === undefined || fileState === undefined) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Trying to startUpload a file that hasn't been previously initialized. ` +\n\t\t\t\t\t\t\t`This will be possible in future, but isn't yet.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\n\t\t\t\tfilesById.set(fileId, {\n\t\t\t\t\tuploader,\n\t\t\t\t\tmetadata,\n\t\t\t\t})\n\n\t\t\t\tlet filesWithSameUploader = groupedByUploader.get(uploader)\n\t\t\t\tif (filesWithSameUploader === undefined) {\n\t\t\t\t\tgroupedByUploader.set(uploader, (filesWithSameUploader = new Map()))\n\t\t\t\t}\n\t\t\t\tfilesWithSameUploader.set(fileState.file, {\n\t\t\t\t\tabortSignal: fileState.abortController.signal,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'startUploading',\n\t\t\t\tfiles: filesById,\n\t\t\t})\n\n\t\t\tfor (const [uploader, filesForUpload] of groupedByUploader) {\n\t\t\t\ttry {\n\t\t\t\t\tuploader.upload(filesForUpload, {\n\t\t\t\t\t\tonProgress: progress => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'updateUploadProgress',\n\t\t\t\t\t\t\t\tprogress,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSuccess: result => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishSuccessfully',\n\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: error => {\n\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontentApiClient,\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tdispatch({\n\t\t\t\t\t\ttype: 'finishWithError',\n\t\t\t\t\t\terror: Array.from(filesForUpload).map(([file]) => [file, error]),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[contentApiClient, defaultUploader],\n\t)\n\n\tconst operations = useMemo<FileUploadOperations<Metadata>>(\n\t\t() => ({\n\t\t\tfailUpload,\n\t\t\tinitializeUpload,\n\t\t\tpurgeUpload,\n\t\t\tstartUpload,\n\t\t}),\n\t\t[failUpload, initializeUpload, purgeUpload, startUpload],\n\t)\n\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tfor (const previewUrl of Array.from(previewUrls.current)) {\n\t\t\t\tURL.revokeObjectURL(previewUrl)\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\treturn [internalState.state, operations]\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const client = require("@contember/client");
4
+ const react = require("react");
5
+ const useApiBaseUrl = require("./config/useApiBaseUrl.cjs");
6
+ const useSessionToken = require("./auth/useSessionToken.cjs");
7
+ const useGraphQlClient = (path) => {
8
+ const apiBaseUrl = useApiBaseUrl.useApiBaseUrl();
9
+ const sessionToken = useSessionToken.useSessionToken();
10
+ return react.useMemo(() => new client.GraphQlClient(`${apiBaseUrl}${path}`, sessionToken), [apiBaseUrl, path, sessionToken]);
11
+ };
12
+ exports.useGraphQlClient = useGraphQlClient;
13
+ //# sourceMappingURL=useGraphQlClient.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGraphQlClient.cjs","sources":["../../src/useGraphQlClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/client'\nimport { useMemo } from 'react'\nimport { useSessionToken } from './auth'\nimport { useApiBaseUrl } from './config'\n\nexport const useGraphQlClient = (path: string): GraphQlClient => {\n\tconst apiBaseUrl = useApiBaseUrl()\n\tconst sessionToken = useSessionToken()\n\treturn useMemo(() => new GraphQlClient(`${apiBaseUrl}${path}`, sessionToken), [apiBaseUrl, path, sessionToken])\n}\n"],"names":["useApiBaseUrl","useSessionToken","useMemo","GraphQlClient"],"mappings":";;;;;;AAKa,MAAA,mBAAmB,CAAC,SAAgC;AAChE,QAAM,aAAaA,cAAAA;AACnB,QAAM,eAAeC,gBAAAA;AACrB,SAAOC,MAAQ,QAAA,MAAM,IAAIC,OAAA,cAAc,GAAG,UAAU,GAAG,IAAI,IAAI,YAAY,GAAG,CAAC,YAAY,MAAM,YAAY,CAAC;AAC/G;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGraphQlClient.js","sources":["../../src/useGraphQlClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/client'\nimport { useMemo } from 'react'\nimport { useSessionToken } from './auth'\nimport { useApiBaseUrl } from './config'\n\nexport const useGraphQlClient = (path: string): GraphQlClient => {\n\tconst apiBaseUrl = useApiBaseUrl()\n\tconst sessionToken = useSessionToken()\n\treturn useMemo(() => new GraphQlClient(`${apiBaseUrl}${path}`, sessionToken), [apiBaseUrl, path, sessionToken])\n}\n"],"names":[],"mappings":";;;;AAKa,MAAA,mBAAmB,CAAC,SAAgC;AAChE,QAAM,aAAa;AACnB,QAAM,eAAe;AACrB,SAAO,QAAQ,MAAM,IAAI,cAAc,GAAG,aAAa,QAAQ,YAAY,GAAG,CAAC,YAAY,MAAM,YAAY,CAAC;AAC/G;"}
1
+ {"version":3,"file":"useGraphQlClient.js","sources":["../../src/useGraphQlClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/client'\nimport { useMemo } from 'react'\nimport { useSessionToken } from './auth'\nimport { useApiBaseUrl } from './config'\n\nexport const useGraphQlClient = (path: string): GraphQlClient => {\n\tconst apiBaseUrl = useApiBaseUrl()\n\tconst sessionToken = useSessionToken()\n\treturn useMemo(() => new GraphQlClient(`${apiBaseUrl}${path}`, sessionToken), [apiBaseUrl, path, sessionToken])\n}\n"],"names":[],"mappings":";;;;AAKa,MAAA,mBAAmB,CAAC,SAAgC;AAChE,QAAM,aAAa;AACnB,QAAM,eAAe;AACrB,SAAO,QAAQ,MAAM,IAAI,cAAc,GAAG,UAAU,GAAG,IAAI,IAAI,YAAY,GAAG,CAAC,YAAY,MAAM,YAAY,CAAC;AAC/G;"}
@@ -1,6 +1,5 @@
1
1
  export * from './apiRequest';
2
2
  export * from './auth';
3
- export * from './components';
4
3
  export * from './config';
5
4
  export * from './content';
6
5
  export * from './project';
@@ -11,4 +10,5 @@ export * from './ContemberClient';
11
10
  export * from './ClientError';
12
11
  export * from './useGraphQlClient';
13
12
  export * from '@contember/client';
13
+ export * from '@contember/react-richtext-renderer';
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AAExB,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAElC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AAExB,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAElC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oCAAoC,CAAA"}