@contember/react-client 0.7.0-alpha.20

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 (168) hide show
  1. package/LICENSE +186 -0
  2. package/dist/development/ClientError.js +5 -0
  3. package/dist/development/ClientError.js.map +1 -0
  4. package/dist/development/ContemberClient.js +30 -0
  5. package/dist/development/ContemberClient.js.map +1 -0
  6. package/dist/development/apiRequest/apiRequestReducer.js +33 -0
  7. package/dist/development/apiRequest/apiRequestReducer.js.map +1 -0
  8. package/dist/development/apiRequest/useApiRequest.js +43 -0
  9. package/dist/development/apiRequest/useApiRequest.js.map +1 -0
  10. package/dist/development/auth/SessionTokenContext.js +6 -0
  11. package/dist/development/auth/SessionTokenContext.js.map +1 -0
  12. package/dist/development/auth/useLoginRequest.js +18 -0
  13. package/dist/development/auth/useLoginRequest.js.map +1 -0
  14. package/dist/development/auth/useSessionToken.js +7 -0
  15. package/dist/development/auth/useSessionToken.js.map +1 -0
  16. package/dist/development/components/RichTextRenderer/ElementRenderer.js +25 -0
  17. package/dist/development/components/RichTextRenderer/ElementRenderer.js.map +1 -0
  18. package/dist/development/components/RichTextRenderer/LeafRenderer.js +21 -0
  19. package/dist/development/components/RichTextRenderer/LeafRenderer.js.map +1 -0
  20. package/dist/development/components/RichTextRenderer/RenderElementFallback.js +107 -0
  21. package/dist/development/components/RichTextRenderer/RenderElementFallback.js.map +1 -0
  22. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js +36 -0
  23. package/dist/development/components/RichTextRenderer/RenderLeafFallback.js.map +1 -0
  24. package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js +14 -0
  25. package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +1 -0
  26. package/dist/development/components/RichTextRenderer/RichTextRenderer.js +91 -0
  27. package/dist/development/components/RichTextRenderer/RichTextRenderer.js.map +1 -0
  28. package/dist/development/components/RichTextRenderer/RichTextRendererError.js +5 -0
  29. package/dist/development/components/RichTextRenderer/RichTextRendererError.js.map +1 -0
  30. package/dist/development/components/RichTextRenderer/defaultDeserialize.js +13 -0
  31. package/dist/development/components/RichTextRenderer/defaultDeserialize.js.map +1 -0
  32. package/dist/development/components/RichTextRenderer/renderChildren.js +29 -0
  33. package/dist/development/components/RichTextRenderer/renderChildren.js.map +1 -0
  34. package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js +27 -0
  35. package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +1 -0
  36. package/dist/development/config/ApiBaseUrlContext.js +6 -0
  37. package/dist/development/config/ApiBaseUrlContext.js.map +1 -0
  38. package/dist/development/config/LoginTokenContext.js +6 -0
  39. package/dist/development/config/LoginTokenContext.js.map +1 -0
  40. package/dist/development/config/useApiBaseUrl.js +7 -0
  41. package/dist/development/config/useApiBaseUrl.js.map +1 -0
  42. package/dist/development/config/useLoginToken.js +7 -0
  43. package/dist/development/config/useLoginToken.js.map +1 -0
  44. package/dist/development/content/useContentApiRequest.js +7 -0
  45. package/dist/development/content/useContentApiRequest.js.map +1 -0
  46. package/dist/development/content/useContentGraphQlClient.js +7 -0
  47. package/dist/development/content/useContentGraphQlClient.js.map +1 -0
  48. package/dist/development/content/useCurrentContentGraphQlClient.js +19 -0
  49. package/dist/development/content/useCurrentContentGraphQlClient.js.map +1 -0
  50. package/dist/development/index.js +31 -0
  51. package/dist/development/index.js.map +1 -0
  52. package/dist/development/project/ProjectSlugContext.js +6 -0
  53. package/dist/development/project/ProjectSlugContext.js.map +1 -0
  54. package/dist/development/project/StageSlugContext.js +6 -0
  55. package/dist/development/project/StageSlugContext.js.map +1 -0
  56. package/dist/development/project/useProjectSlug.js +7 -0
  57. package/dist/development/project/useProjectSlug.js.map +1 -0
  58. package/dist/development/project/useStageSlug.js +7 -0
  59. package/dist/development/project/useStageSlug.js.map +1 -0
  60. package/dist/development/system/useCurrentSystemGraphQlClient.js +14 -0
  61. package/dist/development/system/useCurrentSystemGraphQlClient.js.map +1 -0
  62. package/dist/development/system/useDiffQuery.js +17 -0
  63. package/dist/development/system/useDiffQuery.js.map +1 -0
  64. package/dist/development/system/useReleaseTreeMutation.js +17 -0
  65. package/dist/development/system/useReleaseTreeMutation.js.map +1 -0
  66. package/dist/development/system/useSystemApiRequest.js +7 -0
  67. package/dist/development/system/useSystemApiRequest.js.map +1 -0
  68. package/dist/development/system/useSystemGraphQlClient.js +7 -0
  69. package/dist/development/system/useSystemGraphQlClient.js.map +1 -0
  70. package/dist/development/tenant/useTenantApiRequest.js +7 -0
  71. package/dist/development/tenant/useTenantApiRequest.js.map +1 -0
  72. package/dist/development/tenant/useTenantGraphQlClient.js +7 -0
  73. package/dist/development/tenant/useTenantGraphQlClient.js.map +1 -0
  74. package/dist/development/upload/fileUploadReducer.js +162 -0
  75. package/dist/development/upload/fileUploadReducer.js.map +1 -0
  76. package/dist/development/upload/toFileId.js +9 -0
  77. package/dist/development/upload/toFileId.js.map +1 -0
  78. package/dist/development/upload/useFileUpload.js +192 -0
  79. package/dist/development/upload/useFileUpload.js.map +1 -0
  80. package/dist/development/useGraphQlClient.js +13 -0
  81. package/dist/development/useGraphQlClient.js.map +1 -0
  82. package/dist/development/utils/assertNever.js +6 -0
  83. package/dist/development/utils/assertNever.js.map +1 -0
  84. package/dist/production/ClientError.js +4 -0
  85. package/dist/production/ClientError.js.map +1 -0
  86. package/dist/production/ContemberClient.js +28 -0
  87. package/dist/production/ContemberClient.js.map +1 -0
  88. package/dist/production/apiRequest/apiRequestReducer.js +32 -0
  89. package/dist/production/apiRequest/apiRequestReducer.js.map +1 -0
  90. package/dist/production/apiRequest/useApiRequest.js +41 -0
  91. package/dist/production/apiRequest/useApiRequest.js.map +1 -0
  92. package/dist/production/auth/SessionTokenContext.js +4 -0
  93. package/dist/production/auth/SessionTokenContext.js.map +1 -0
  94. package/dist/production/auth/useLoginRequest.js +16 -0
  95. package/dist/production/auth/useLoginRequest.js.map +1 -0
  96. package/dist/production/auth/useSessionToken.js +5 -0
  97. package/dist/production/auth/useSessionToken.js.map +1 -0
  98. package/dist/production/components/RichTextRenderer/ElementRenderer.js +23 -0
  99. package/dist/production/components/RichTextRenderer/ElementRenderer.js.map +1 -0
  100. package/dist/production/components/RichTextRenderer/LeafRenderer.js +19 -0
  101. package/dist/production/components/RichTextRenderer/LeafRenderer.js.map +1 -0
  102. package/dist/production/components/RichTextRenderer/RenderElementFallback.js +104 -0
  103. package/dist/production/components/RichTextRenderer/RenderElementFallback.js.map +1 -0
  104. package/dist/production/components/RichTextRenderer/RenderLeafFallback.js +34 -0
  105. package/dist/production/components/RichTextRenderer/RenderLeafFallback.js.map +1 -0
  106. package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js +12 -0
  107. package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +1 -0
  108. package/dist/production/components/RichTextRenderer/RichTextRenderer.js +89 -0
  109. package/dist/production/components/RichTextRenderer/RichTextRenderer.js.map +1 -0
  110. package/dist/production/components/RichTextRenderer/RichTextRendererError.js +4 -0
  111. package/dist/production/components/RichTextRenderer/RichTextRendererError.js.map +1 -0
  112. package/dist/production/components/RichTextRenderer/defaultDeserialize.js +12 -0
  113. package/dist/production/components/RichTextRenderer/defaultDeserialize.js.map +1 -0
  114. package/dist/production/components/RichTextRenderer/renderChildren.js +27 -0
  115. package/dist/production/components/RichTextRenderer/renderChildren.js.map +1 -0
  116. package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js +25 -0
  117. package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +1 -0
  118. package/dist/production/config/ApiBaseUrlContext.js +4 -0
  119. package/dist/production/config/ApiBaseUrlContext.js.map +1 -0
  120. package/dist/production/config/LoginTokenContext.js +4 -0
  121. package/dist/production/config/LoginTokenContext.js.map +1 -0
  122. package/dist/production/config/useApiBaseUrl.js +5 -0
  123. package/dist/production/config/useApiBaseUrl.js.map +1 -0
  124. package/dist/production/config/useLoginToken.js +5 -0
  125. package/dist/production/config/useLoginToken.js.map +1 -0
  126. package/dist/production/content/useContentApiRequest.js +5 -0
  127. package/dist/production/content/useContentApiRequest.js.map +1 -0
  128. package/dist/production/content/useContentGraphQlClient.js +5 -0
  129. package/dist/production/content/useContentGraphQlClient.js.map +1 -0
  130. package/dist/production/content/useCurrentContentGraphQlClient.js +17 -0
  131. package/dist/production/content/useCurrentContentGraphQlClient.js.map +1 -0
  132. package/dist/production/index.js +31 -0
  133. package/dist/production/index.js.map +1 -0
  134. package/dist/production/project/ProjectSlugContext.js +4 -0
  135. package/dist/production/project/ProjectSlugContext.js.map +1 -0
  136. package/dist/production/project/StageSlugContext.js +4 -0
  137. package/dist/production/project/StageSlugContext.js.map +1 -0
  138. package/dist/production/project/useProjectSlug.js +5 -0
  139. package/dist/production/project/useProjectSlug.js.map +1 -0
  140. package/dist/production/project/useStageSlug.js +5 -0
  141. package/dist/production/project/useStageSlug.js.map +1 -0
  142. package/dist/production/system/useCurrentSystemGraphQlClient.js +12 -0
  143. package/dist/production/system/useCurrentSystemGraphQlClient.js.map +1 -0
  144. package/dist/production/system/useDiffQuery.js +15 -0
  145. package/dist/production/system/useDiffQuery.js.map +1 -0
  146. package/dist/production/system/useReleaseTreeMutation.js +15 -0
  147. package/dist/production/system/useReleaseTreeMutation.js.map +1 -0
  148. package/dist/production/system/useSystemApiRequest.js +5 -0
  149. package/dist/production/system/useSystemApiRequest.js.map +1 -0
  150. package/dist/production/system/useSystemGraphQlClient.js +5 -0
  151. package/dist/production/system/useSystemGraphQlClient.js.map +1 -0
  152. package/dist/production/tenant/useTenantApiRequest.js +5 -0
  153. package/dist/production/tenant/useTenantApiRequest.js.map +1 -0
  154. package/dist/production/tenant/useTenantGraphQlClient.js +5 -0
  155. package/dist/production/tenant/useTenantGraphQlClient.js.map +1 -0
  156. package/dist/production/upload/fileUploadReducer.js +160 -0
  157. package/dist/production/upload/fileUploadReducer.js.map +1 -0
  158. package/dist/production/upload/toFileId.js +8 -0
  159. package/dist/production/upload/toFileId.js.map +1 -0
  160. package/dist/production/upload/useFileUpload.js +190 -0
  161. package/dist/production/upload/useFileUpload.js.map +1 -0
  162. package/dist/production/useGraphQlClient.js +11 -0
  163. package/dist/production/useGraphQlClient.js.map +1 -0
  164. package/dist/production/utils/assertNever.js +5 -0
  165. package/dist/production/utils/assertNever.js.map +1 -0
  166. package/dist/react-client.d.ts +370 -0
  167. package/package.json +31 -0
  168. package/readme.md +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextRenderer.js","sources":["../../../../src/components/RichTextRenderer/RichTextRenderer.tsx"],"sourcesContent":["import { memo, ReactElement, useMemo } from 'react'\nimport { defaultDeserialize } from './defaultDeserialize'\nimport type { RenderElement } from './ElementRenderer'\nimport type { RenderLeaf } from './LeafRenderer'\nimport type { NormalizedRichTextBlock } from './NormalizedRichTextBlock'\nimport type { ReferenceRenderer } from './ReferenceRenderer'\nimport { renderChildren } from './renderChildren'\nimport type { RichTextBlock } from './RichTextBlock'\nimport type { RichTextElement } from './RichTextElement'\nimport type { RichTextLeaf } from './RichTextLeaf'\nimport type { RichTextReference } from './RichTextReference'\nimport { RichTextRendererError } from './RichTextRendererError'\nimport { RichTextRenderMetadataContext } from './RichTextRenderMetadataContext'\nimport type { RootEditorNode } from './RootEditorNode'\n\nexport interface RichTextRendererFieldProps {\n\tsource: string | null\n}\n\nexport interface RichTextRendererBlockProps<\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n> {\n\tblocks: RichTextBlock[]\n\treferenceRenderers?: Record<string, ReferenceRenderer<any, CustomElements, CustomLeaves>>\n\tsourceField?: string\n\treferencesField?: string\n\treferenceDiscriminationField?: string\n}\n\nexport type RichTextRendererProps<\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n> = {\n\tdeserialize?: (source: string) => RootEditorNode<CustomElements, CustomLeaves>\n\trenderElement?: RenderElement<CustomElements, CustomLeaves>\n\trenderLeaf?: RenderLeaf<CustomLeaves>\n\tattributeNamePrefix?: string\n} & (RichTextRendererFieldProps | RichTextRendererBlockProps<CustomElements, CustomLeaves>)\n\nexport const RichTextRenderer = memo(function RichTextRenderer<\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n>({\n\tdeserialize = defaultDeserialize,\n\trenderElement,\n\trenderLeaf,\n\tattributeNamePrefix,\n\t...sourceProps\n}: RichTextRendererProps<CustomElements, CustomLeaves>) {\n\tconst normalizedSource = useMemo<NormalizedRichTextBlock<CustomElements, CustomLeaves>[]>(() => {\n\t\tif ('source' in sourceProps && !('blocks' in sourceProps)) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tcontent: sourceProps.source\n\t\t\t\t\t\t? deserialize(sourceProps.source)\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tformatVersion: 0,\n\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t },\n\t\t\t\t\tid: undefined,\n\t\t\t\t\treferencesField: undefined,\n\t\t\t\t\treferenceDiscriminationField: undefined,\n\t\t\t\t\treferenceRenderers: {},\n\t\t\t\t\treferences: undefined,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\t\tif ('blocks' in sourceProps) {\n\t\t\tconst sourceField = sourceProps.sourceField ?? 'source'\n\t\t\tconst referencesField = sourceProps.referencesField ?? 'references'\n\t\t\tconst referenceDiscriminationField = sourceProps.referenceDiscriminationField ?? 'type'\n\n\t\t\treturn sourceProps.blocks.map(block => {\n\t\t\t\tif (!(sourceField in block)) {\n\t\t\t\t\tthrow new RichTextRendererError(\n\t\t\t\t\t\t`Found a block without a '${sourceField}' field. ` +\n\t\t\t\t\t\t\t(sourceProps.sourceField === undefined\n\t\t\t\t\t\t\t\t? `The 'sourceField' prop has not been supplied, and so '${sourceField}' was used as a default.`\n\t\t\t\t\t\t\t\t: `That is what the 'sourceField' prop has been set to, and so either this is a typo, ` +\n\t\t\t\t\t\t\t\t `or the data supplied is invalid.`),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst source = block[sourceField]\n\t\t\t\tif (typeof source !== 'string') {\n\t\t\t\t\tthrow new RichTextRendererError(`Found a block whose source is not a string.`)\n\t\t\t\t}\n\n\t\t\t\tif (sourceProps.referencesField !== undefined && !(referencesField in block)) {\n\t\t\t\t\tthrow new RichTextRendererError(\n\t\t\t\t\t\t`The 'referencesField' prop is set to '${referencesField}' but a block without such field ` +\n\t\t\t\t\t\t\t`has been encountered. Unless this is just a typo, ` +\n\t\t\t\t\t\t\t`if you do not wish to use references, avoid supplying the 'referencesField' prop.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst references = block[referencesField]\n\n\t\t\t\tlet normalizedReferences: Map<string, RichTextReference> | undefined = undefined\n\t\t\t\tif (references) {\n\t\t\t\t\tif (typeof Object(references)[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new RichTextRendererError(`The set of references must be an iterable!`)\n\t\t\t\t\t}\n\n\t\t\t\t\tnormalizedReferences = new Map()\n\t\t\t\t\tfor (const reference of references as Iterable<RichTextReference>) {\n\t\t\t\t\t\tif (!('id' in reference)) {\n\t\t\t\t\t\t\tthrow new RichTextRendererError(`Found a reference without an id field.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!(referenceDiscriminationField in reference)) {\n\t\t\t\t\t\t\tthrow new RichTextRendererError(\n\t\t\t\t\t\t\t\t`Found a reference without a '${referenceDiscriminationField}' field. ` +\n\t\t\t\t\t\t\t\t\t(sourceProps.referenceDiscriminationField === undefined\n\t\t\t\t\t\t\t\t\t\t? `The 'referenceDiscriminationField' prop has not been supplied, ` +\n\t\t\t\t\t\t\t\t\t\t `and so '${referenceDiscriminationField}' was used as a default.`\n\t\t\t\t\t\t\t\t\t\t: `That is what the 'referenceDiscriminationField' prop has been set to, ` +\n\t\t\t\t\t\t\t\t\t\t `and so either this is a typo, or the data supplied is invalid.`),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnormalizedReferences.set(reference.id, reference)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tid: typeof block.id === 'string' ? block.id : undefined,\n\t\t\t\t\tcontent: deserialize(source),\n\t\t\t\t\treferenceDiscriminationField,\n\t\t\t\t\treferenceRenderers: sourceProps.referenceRenderers ?? {},\n\t\t\t\t\treferencesField,\n\t\t\t\t\treferences: normalizedReferences,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tthrow new RichTextRendererError(`RichTextRenderer: invalid data supplied.`)\n\t}, [deserialize, sourceProps])\n\n\treturn (\n\t\t<>\n\t\t\t{normalizedSource.map((block, i) => (\n\t\t\t\t<RichTextRenderMetadataContext.Provider\n\t\t\t\t\tkey={block.id ?? i}\n\t\t\t\t\tvalue={{\n\t\t\t\t\t\tformatVersion: block.content.formatVersion,\n\t\t\t\t\t\treferenceRenderers: block.referenceRenderers,\n\t\t\t\t\t\treferencesField: block.referencesField,\n\t\t\t\t\t\treferenceDiscriminationField: block.referenceDiscriminationField,\n\t\t\t\t\t\treferences: block.references,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{renderChildren(block.content.children, {\n\t\t\t\t\t\trenderLeaf,\n\t\t\t\t\t\trenderElement,\n\t\t\t\t\t\tattributeNamePrefix,\n\t\t\t\t\t})}\n\t\t\t\t</RichTextRenderMetadataContext.Provider>\n\t\t\t))}\n\t\t</>\n\t)\n}) as <CustomElements extends RichTextElement = never, CustomLeaves extends RichTextLeaf = never>(\n\tprops: RichTextRendererProps<CustomElements, CustomLeaves>,\n) => ReactElement\n"],"names":[],"mappings":";;;;;MAwCa,mBAAmB,KAAK,2BAGnC;AAAA,EACD,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,KACG;AAAA,GACoD;QACjD,mBAAmB,QAAiE,MAAM;QAC3F,YAAY,eAAe,cAAc,cAAc;aACnD;AAAA,QACN;AAAA,UACC,SAAS,YAAY,SAClB,YAAY,YAAY,UACxB;AAAA,YACA,eAAe;AAAA,YACf,UAAU;AAAA;AAAA,UAEb,IAAI;AAAA,UACJ,iBAAiB;AAAA,UACjB,8BAA8B;AAAA,UAC9B,oBAAoB;AAAA,UACpB,YAAY;AAAA;AAAA;AAAA;QAIX,YAAY,aAAa;YACtB,cAAc,YAAY,eAAe;YACzC,kBAAkB,YAAY,mBAAmB;YACjD,+BAA+B,YAAY,gCAAgC;aAE1E,YAAY,OAAO,IAAI,WAAS;YAClC,iBAAiB,QAAQ;gBACtB,IAAI,sBACT,4BAA4B,sCACd,gBAAgB,SAC1B,yDAAyD,wCACzD;AAAA;cAIA,SAAS,MAAM;YACjB,OAAO,WAAW,UAAU;gBACzB,IAAI,sBAAsB;AAAA;YAG7B,YAAY,oBAAoB,UAAa,qBAAqB,QAAQ;gBACvE,IAAI,sBACT,yCAAyC;AAAA;cAKrC,aAAa,MAAM;YAErB,uBAAmE;YACnE,YAAY;cACX,OAAO,OAAO,YAAY,OAAO,cAAc,YAAY;kBACxD,IAAI,sBAAsB;AAAA;iCAGV,IAAI;qBAChB,aAAa,YAA2C;gBAC9D,UAAU,YAAY;oBACnB,IAAI,sBAAsB;AAAA;gBAE7B,kCAAkC,YAAY;oBAC3C,IAAI,sBACT,gCAAgC,uDAClB,iCAAiC,SAC3C,0EACW,yDACX;AAAA;iCAIe,IAAI,UAAU,IAAI;AAAA;AAAA;eAGlC;AAAA,UACN,IAAI,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK;AAAA,UAC9C,SAAS,YAAY;AAAA,UACrB;AAAA,UACA,oBAAoB,YAAY,sBAAsB;AAAA,UACtD;AAAA,UACA,YAAY;AAAA;AAAA;AAAA;UAIT,IAAI,sBAAsB;AAAA,KAC9B,CAAC,aAAa;uDAId,iBAAiB,IAAI,CAAC,OAAO,oCAC5B,8BAA8B,UAA/B;AAAA,IACC,KAAK,MAAM,MAAM;AAAA,IACjB,OAAO;AAAA,MACN,eAAe,MAAM,QAAQ;AAAA,MAC7B,oBAAoB,MAAM;AAAA,MAC1B,iBAAiB,MAAM;AAAA,MACvB,8BAA8B,MAAM;AAAA,MACpC,YAAY,MAAM;AAAA;AAAA,KAGlB,eAAe,MAAM,QAAQ,UAAU;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA;AAAA;;"}
@@ -0,0 +1,4 @@
1
+ class RichTextRendererError extends Error {
2
+ }
3
+ export { RichTextRendererError };
4
+ //# sourceMappingURL=RichTextRendererError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextRendererError.js","sources":["../../../../src/components/RichTextRenderer/RichTextRendererError.ts"],"sourcesContent":["export class RichTextRendererError extends Error {}\n"],"names":[],"mappings":"oCAA2C,MAAM;AAAA;;"}
@@ -0,0 +1,12 @@
1
+ const defaultDeserialize = (source) => {
2
+ try {
3
+ return JSON.parse(source);
4
+ } catch (e) {
5
+ return {
6
+ formatVersion: 0,
7
+ children: []
8
+ };
9
+ }
10
+ };
11
+ export { defaultDeserialize };
12
+ //# sourceMappingURL=defaultDeserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultDeserialize.js","sources":["../../../../src/components/RichTextRenderer/defaultDeserialize.ts"],"sourcesContent":["import type { RichTextElement } from './RichTextElement'\nimport type { RichTextLeaf } from './RichTextLeaf'\nimport type { RootEditorNode } from './RootEditorNode'\n\nexport const defaultDeserialize = <\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n>(\n\tsource: string,\n): RootEditorNode<CustomElements, CustomLeaves> => {\n\ttry {\n\t\treturn JSON.parse(source)\n\t} catch (e) {\n\t\treturn {\n\t\t\tformatVersion: 0,\n\t\t\tchildren: [],\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"MAIa,qBAAqB,CAIjC,WACkD;MAC9C;WACI,KAAK,MAAM;AAAA,WACV;WACD;AAAA,MACN,eAAe;AAAA,MACf,UAAU;AAAA;AAAA;AAAA;;"}
@@ -0,0 +1,27 @@
1
+ import { createElement, Fragment } from "react";
2
+ import { ElementRenderer } from "./ElementRenderer.js";
3
+ import { LeafRenderer } from "./LeafRenderer.js";
4
+ const renderChildren = (children, options) => {
5
+ if (!Array.isArray(children)) {
6
+ children = [children];
7
+ }
8
+ return /* @__PURE__ */ createElement(Fragment, null, children.map((child, i) => {
9
+ if ("text" in child) {
10
+ return /* @__PURE__ */ createElement(LeafRenderer, {
11
+ key: i,
12
+ leaf: child,
13
+ renderLeaf: options.renderLeaf
14
+ });
15
+ }
16
+ if ("children" in child) {
17
+ return /* @__PURE__ */ createElement(ElementRenderer, {
18
+ key: i,
19
+ element: child,
20
+ options
21
+ }, renderChildren(child.children, options));
22
+ }
23
+ return null;
24
+ }));
25
+ };
26
+ export { renderChildren };
27
+ //# sourceMappingURL=renderChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChildren.js","sources":["../../../../src/components/RichTextRenderer/renderChildren.tsx"],"sourcesContent":["import type { ReactElement } from 'react'\nimport type { BuiltinElements } from './BuiltinElements'\nimport type { BuiltinLeaves } from './BuiltinLeaves'\nimport { ElementRenderer, RenderElement } from './ElementRenderer'\nimport { LeafRenderer, RenderLeaf } from './LeafRenderer'\nimport type { RichTextElement } from './RichTextElement'\nimport type { RichTextLeaf } from './RichTextLeaf'\n\nexport interface RenderChildrenOptions<\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n> {\n\trenderElement?: RenderElement<CustomElements, CustomLeaves>\n\trenderLeaf?: RenderLeaf<CustomLeaves>\n\tattributeNamePrefix?: string\n}\n\nexport const renderChildren = <\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n>(\n\tchildren:\n\t\t| CustomElements\n\t\t| BuiltinElements<CustomElements, CustomLeaves>\n\t\t| CustomLeaves\n\t\t| BuiltinLeaves\n\t\t| Array<CustomElements | BuiltinElements<CustomElements, CustomLeaves> | CustomLeaves | BuiltinLeaves>,\n\toptions: RenderChildrenOptions<CustomElements, CustomLeaves>,\n): ReactElement => {\n\tif (!Array.isArray(children)) {\n\t\tchildren = [children]\n\t}\n\treturn (\n\t\t<>\n\t\t\t{children.map((child, i) => {\n\t\t\t\tif ('text' in child) {\n\t\t\t\t\treturn <LeafRenderer<CustomLeaves> key={i} leaf={child} renderLeaf={options.renderLeaf} />\n\t\t\t\t}\n\t\t\t\tif ('children' in child) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ElementRenderer<CustomElements, CustomLeaves> key={i} element={child} options={options}>\n\t\t\t\t\t\t\t{renderChildren<CustomElements, CustomLeaves>(child.children as typeof children, options)}\n\t\t\t\t\t\t</ElementRenderer>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn null // Throw?\n\t\t\t})}\n\t\t</>\n\t)\n}\n"],"names":[],"mappings":";;;MAiBa,iBAAiB,CAI7B,UAMA,YACkB;MACd,CAAC,MAAM,QAAQ,WAAW;eAClB,CAAC;AAAA;uDAIV,SAAS,IAAI,CAAC,OAAO,MAAM;QACvB,UAAU,OAAO;2CACZ,cAAD;AAAA,QAA4B,KAAK;AAAA,QAAG,MAAM;AAAA,QAAO,YAAY,QAAQ;AAAA;AAAA;QAEzE,cAAc,OAAO;2CAEtB,iBAAD;AAAA,QAA+C,KAAK;AAAA,QAAG,SAAS;AAAA,QAAO;AAAA,SACrE,eAA6C,MAAM,UAA6B;AAAA;WAI7E;AAAA;AAAA;;"}
@@ -0,0 +1,25 @@
1
+ import { RichTextRendererError } from "./RichTextRendererError.js";
2
+ const resolveRichTextElementMetadata = (element, metadata) => {
3
+ let reference = void 0;
4
+ if ("referenceId" in element && typeof element["referenceId"] === "string") {
5
+ const resolved = metadata.references?.get(element["referenceId"]);
6
+ if (resolved === void 0) {
7
+ throw new RichTextRendererError(`Cannot find reference id '${element["referenceId"]}'` + (metadata.references === void 0 ? ` because its containing block's lacks the '${metadata.referencesField}' field. ` : `.`));
8
+ }
9
+ reference = resolved;
10
+ }
11
+ let referenceRenderer = void 0;
12
+ let referenceType = void 0;
13
+ if (reference && metadata.referenceDiscriminationField) {
14
+ referenceType = reference[metadata.referenceDiscriminationField];
15
+ referenceRenderer = metadata.referenceRenderers[referenceType];
16
+ }
17
+ return {
18
+ formatVersion: metadata.formatVersion,
19
+ reference,
20
+ referenceType,
21
+ referenceRenderer
22
+ };
23
+ };
24
+ export { resolveRichTextElementMetadata };
25
+ //# sourceMappingURL=resolveRichTextElementMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRichTextElementMetadata.js","sources":["../../../../src/components/RichTextRenderer/resolveRichTextElementMetadata.ts"],"sourcesContent":["import type { BuiltinElements } from './BuiltinElements'\nimport type { ReferenceRenderer } from './ReferenceRenderer'\nimport type { RichTextElement } from './RichTextElement'\nimport type { RichTextElementMetadata } from './RichTextElementMetadata'\nimport type { RichTextLeaf } from './RichTextLeaf'\nimport type { RichTextReference } from './RichTextReference'\nimport { RichTextRendererError } from './RichTextRendererError'\nimport type { RichTextRenderMetadata } from './RichTextRenderMetadata'\n\nexport const resolveRichTextElementMetadata = <\n\tCustomElements extends RichTextElement = never,\n\tCustomLeaves extends RichTextLeaf = never,\n\tReference extends RichTextReference = RichTextReference,\n>(\n\telement: CustomElements | BuiltinElements<CustomElements, CustomLeaves>,\n\tmetadata: RichTextRenderMetadata<CustomElements, CustomLeaves, Reference>,\n): RichTextElementMetadata<CustomElements, CustomLeaves, Reference> => {\n\tlet reference: Reference | undefined = undefined\n\n\tif ('referenceId' in element && typeof element['referenceId'] === 'string') {\n\t\tconst resolved = metadata.references?.get(element['referenceId'])\n\n\t\tif (resolved === undefined) {\n\t\t\tthrow new RichTextRendererError(\n\t\t\t\t`Cannot find reference id '${element['referenceId']}'` +\n\t\t\t\t\t(metadata.references === undefined\n\t\t\t\t\t\t? ` because its containing block's lacks the '${metadata.referencesField}' field. `\n\t\t\t\t\t\t: `.`),\n\t\t\t)\n\t\t}\n\t\treference = resolved as Reference\n\t}\n\n\tlet referenceRenderer: ReferenceRenderer<Reference, CustomElements, CustomLeaves> | undefined = undefined\n\tlet referenceType: string | undefined = undefined\n\n\tif (reference && metadata.referenceDiscriminationField) {\n\t\treferenceType = (reference as Reference & Record<typeof metadata.referenceDiscriminationField, string>)[\n\t\t\tmetadata.referenceDiscriminationField\n\t\t]\n\t\treferenceRenderer = metadata.referenceRenderers[referenceType]\n\t}\n\n\treturn {\n\t\tformatVersion: metadata.formatVersion,\n\t\treference,\n\t\treferenceType,\n\t\treferenceRenderer,\n\t}\n}\n"],"names":[],"mappings":";MASa,iCAAiC,CAK7C,SACA,aACsE;MAClE,YAAmC;MAEnC,iBAAiB,WAAW,OAAO,QAAQ,mBAAmB,UAAU;UACrE,WAAW,SAAS,YAAY,IAAI,QAAQ;QAE9C,aAAa,QAAW;YACrB,IAAI,sBACT,6BAA6B,QAAQ,8BAC1B,eAAe,SACtB,8CAA8C,SAAS,6BACvD;AAAA;gBAGM;AAAA;MAGT,oBAA4F;MAC5F,gBAAoC;MAEpC,aAAa,SAAS,8BAA8B;oBACtC,UAChB,SAAS;wBAEU,SAAS,mBAAmB;AAAA;SAG1C;AAAA,IACN,eAAe,SAAS;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA;AAAA;;"}
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ const ApiBaseUrlContext = createContext(void 0);
3
+ export { ApiBaseUrlContext };
4
+ //# sourceMappingURL=ApiBaseUrlContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiBaseUrlContext.js","sources":["../../../src/config/ApiBaseUrlContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport const ApiBaseUrlContext = createContext<string | undefined>(undefined)\n"],"names":[],"mappings":";MAEa,oBAAoB,cAAkC;;"}
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ const LoginTokenContext = createContext(void 0);
3
+ export { LoginTokenContext };
4
+ //# sourceMappingURL=LoginTokenContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginTokenContext.js","sources":["../../../src/config/LoginTokenContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport const LoginTokenContext = createContext<string | undefined>(undefined)\n"],"names":[],"mappings":";MAEa,oBAAoB,cAAkC;;"}
@@ -0,0 +1,5 @@
1
+ import { useContext } from "react";
2
+ import { ApiBaseUrlContext } from "./ApiBaseUrlContext.js";
3
+ const useApiBaseUrl = () => useContext(ApiBaseUrlContext);
4
+ export { useApiBaseUrl };
5
+ //# sourceMappingURL=useApiBaseUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiBaseUrl.js","sources":["../../../src/config/useApiBaseUrl.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { ApiBaseUrlContext } from './ApiBaseUrlContext'\n\nexport const useApiBaseUrl = () => useContext(ApiBaseUrlContext)\n"],"names":[],"mappings":";;MAGa,gBAAgB,MAAM,WAAW;;"}
@@ -0,0 +1,5 @@
1
+ import { useContext } from "react";
2
+ import { LoginTokenContext } from "./LoginTokenContext.js";
3
+ const useLoginToken = () => useContext(LoginTokenContext);
4
+ export { useLoginToken };
5
+ //# sourceMappingURL=useLoginToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoginToken.js","sources":["../../../src/config/useLoginToken.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { LoginTokenContext } from './LoginTokenContext'\n\nexport const useLoginToken = () => useContext(LoginTokenContext)\n"],"names":[],"mappings":";;MAGa,gBAAgB,MAAM,WAAW;;"}
@@ -0,0 +1,5 @@
1
+ import { useCurrentContentGraphQlClient } from "./useCurrentContentGraphQlClient.js";
2
+ import { useApiRequest } from "../apiRequest/useApiRequest.js";
3
+ const useContentApiRequest = () => useApiRequest(useCurrentContentGraphQlClient());
4
+ export { useContentApiRequest };
5
+ //# sourceMappingURL=useContentApiRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContentApiRequest.js","sources":["../../../src/content/useContentApiRequest.ts"],"sourcesContent":["import type { UseApiRequestResult } from '../apiRequest'\nimport { useApiRequest } from '../apiRequest'\nimport { useCurrentContentGraphQlClient } from './useCurrentContentGraphQlClient'\n\nexport const useContentApiRequest = <SuccessData>(): UseApiRequestResult<SuccessData> =>\n\tuseApiRequest<SuccessData>(useCurrentContentGraphQlClient())\n"],"names":[],"mappings":";;MAIa,uBAAuB,MACnC,cAA2B;;"}
@@ -0,0 +1,5 @@
1
+ import { formatContentApiRelativeUrl } from "@contember/client";
2
+ import { useGraphQlClient } from "../useGraphQlClient.js";
3
+ const useContentGraphQlClient = (projectSlug, stageSlug) => useGraphQlClient(formatContentApiRelativeUrl(projectSlug, stageSlug));
4
+ export { useContentGraphQlClient };
5
+ //# sourceMappingURL=useContentGraphQlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContentGraphQlClient.js","sources":["../../../src/content/useContentGraphQlClient.ts"],"sourcesContent":["import type { GraphQlClient } from '@contember/client'\nimport { formatContentApiRelativeUrl } from '@contember/client'\nimport { useGraphQlClient } from '../useGraphQlClient'\n\nexport const useContentGraphQlClient = (projectSlug: string, stageSlug: string): GraphQlClient =>\n\tuseGraphQlClient(formatContentApiRelativeUrl(projectSlug, stageSlug))\n"],"names":[],"mappings":";;MAIa,0BAA0B,CAAC,aAAqB,cAC5D,iBAAiB,4BAA4B,aAAa;;"}
@@ -0,0 +1,17 @@
1
+ import { ClientError } from "../ClientError.js";
2
+ import { useContentGraphQlClient } from "./useContentGraphQlClient.js";
3
+ import { useProjectSlug } from "../project/useProjectSlug.js";
4
+ import { useStageSlug } from "../project/useStageSlug.js";
5
+ const useCurrentContentGraphQlClient = () => {
6
+ const projectSlug = useProjectSlug();
7
+ const stageSlug = useStageSlug();
8
+ if (projectSlug === void 0) {
9
+ throw new ClientError(`Cannot contact the content API: undefined project slug.`);
10
+ }
11
+ if (stageSlug === void 0) {
12
+ throw new ClientError(`Cannot contact the content API: undefined stage slug.`);
13
+ }
14
+ return useContentGraphQlClient(projectSlug, stageSlug);
15
+ };
16
+ export { useCurrentContentGraphQlClient };
17
+ //# sourceMappingURL=useCurrentContentGraphQlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCurrentContentGraphQlClient.js","sources":["../../../src/content/useCurrentContentGraphQlClient.ts"],"sourcesContent":["import type { GraphQlClient } from '@contember/client'\nimport { ClientError } from '../ClientError'\nimport { useProjectSlug, useStageSlug } from '../project'\nimport { useContentGraphQlClient } from './useContentGraphQlClient'\n\nexport const useCurrentContentGraphQlClient = (): GraphQlClient => {\n\tconst projectSlug = useProjectSlug()\n\tconst stageSlug = useStageSlug()\n\n\tif (projectSlug === undefined) {\n\t\tthrow new ClientError(`Cannot contact the content API: undefined project slug.`)\n\t}\n\tif (stageSlug === undefined) {\n\t\tthrow new ClientError(`Cannot contact the content API: undefined stage slug.`)\n\t}\n\treturn useContentGraphQlClient(projectSlug, stageSlug)\n}\n"],"names":[],"mappings":";;;;MAKa,iCAAiC,MAAqB;QAC5D,cAAc;QACd,YAAY;MAEd,gBAAgB,QAAW;UACxB,IAAI,YAAY;AAAA;MAEnB,cAAc,QAAW;UACtB,IAAI,YAAY;AAAA;SAEhB,wBAAwB,aAAa;AAAA;;"}
@@ -0,0 +1,31 @@
1
+ export { ContemberClient } from "./ContemberClient.js";
2
+ export { ClientError } from "./ClientError.js";
3
+ export { useGraphQlClient } from "./useGraphQlClient.js";
4
+ export * from "@contember/client";
5
+ export { apiRequestReducer } from "./apiRequest/apiRequestReducer.js";
6
+ export { useApiRequest } from "./apiRequest/useApiRequest.js";
7
+ export { SessionTokenContext } from "./auth/SessionTokenContext.js";
8
+ export { useLoginRequest } from "./auth/useLoginRequest.js";
9
+ export { useSessionToken } from "./auth/useSessionToken.js";
10
+ export { RichTextRenderer } from "./components/RichTextRenderer/RichTextRenderer.js";
11
+ export { RichTextRendererError } from "./components/RichTextRenderer/RichTextRendererError.js";
12
+ export { ApiBaseUrlContext } from "./config/ApiBaseUrlContext.js";
13
+ export { LoginTokenContext } from "./config/LoginTokenContext.js";
14
+ export { useApiBaseUrl } from "./config/useApiBaseUrl.js";
15
+ export { useLoginToken } from "./config/useLoginToken.js";
16
+ export { useContentApiRequest } from "./content/useContentApiRequest.js";
17
+ export { useContentGraphQlClient } from "./content/useContentGraphQlClient.js";
18
+ export { useCurrentContentGraphQlClient } from "./content/useCurrentContentGraphQlClient.js";
19
+ export { ProjectSlugContext } from "./project/ProjectSlugContext.js";
20
+ export { StageSlugContext } from "./project/StageSlugContext.js";
21
+ export { useProjectSlug } from "./project/useProjectSlug.js";
22
+ export { useStageSlug } from "./project/useStageSlug.js";
23
+ export { useCurrentSystemGraphQlClient } from "./system/useCurrentSystemGraphQlClient.js";
24
+ export { useDiffQuery } from "./system/useDiffQuery.js";
25
+ export { useReleaseTreeMutation } from "./system/useReleaseTreeMutation.js";
26
+ export { useSystemApiRequest } from "./system/useSystemApiRequest.js";
27
+ export { useSystemGraphQlClient } from "./system/useSystemGraphQlClient.js";
28
+ export { useTenantApiRequest } from "./tenant/useTenantApiRequest.js";
29
+ export { useTenantGraphQlClient } from "./tenant/useTenantGraphQlClient.js";
30
+ export { useFileUpload } from "./upload/useFileUpload.js";
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ const ProjectSlugContext = createContext(void 0);
3
+ export { ProjectSlugContext };
4
+ //# sourceMappingURL=ProjectSlugContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSlugContext.js","sources":["../../../src/project/ProjectSlugContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport const ProjectSlugContext = createContext<string | undefined>(undefined)\n"],"names":[],"mappings":";MAEa,qBAAqB,cAAkC;;"}
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ const StageSlugContext = createContext(void 0);
3
+ export { StageSlugContext };
4
+ //# sourceMappingURL=StageSlugContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StageSlugContext.js","sources":["../../../src/project/StageSlugContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport const StageSlugContext = createContext<string | undefined>(undefined)\n"],"names":[],"mappings":";MAEa,mBAAmB,cAAkC;;"}
@@ -0,0 +1,5 @@
1
+ import { useContext } from "react";
2
+ import { ProjectSlugContext } from "./ProjectSlugContext.js";
3
+ const useProjectSlug = () => useContext(ProjectSlugContext);
4
+ export { useProjectSlug };
5
+ //# sourceMappingURL=useProjectSlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectSlug.js","sources":["../../../src/project/useProjectSlug.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { ProjectSlugContext } from './ProjectSlugContext'\n\nexport const useProjectSlug = () => useContext(ProjectSlugContext)\n"],"names":[],"mappings":";;MAGa,iBAAiB,MAAM,WAAW;;"}
@@ -0,0 +1,5 @@
1
+ import { useContext } from "react";
2
+ import { StageSlugContext } from "./StageSlugContext.js";
3
+ const useStageSlug = () => useContext(StageSlugContext);
4
+ export { useStageSlug };
5
+ //# sourceMappingURL=useStageSlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStageSlug.js","sources":["../../../src/project/useStageSlug.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { StageSlugContext } from './StageSlugContext'\n\nexport const useStageSlug = () => useContext(StageSlugContext)\n"],"names":[],"mappings":";;MAGa,eAAe,MAAM,WAAW;;"}
@@ -0,0 +1,12 @@
1
+ import { ClientError } from "../ClientError.js";
2
+ import { useSystemGraphQlClient } from "./useSystemGraphQlClient.js";
3
+ import { useProjectSlug } from "../project/useProjectSlug.js";
4
+ const useCurrentSystemGraphQlClient = () => {
5
+ const projectSlug = useProjectSlug();
6
+ if (projectSlug === void 0) {
7
+ throw new ClientError(`Cannot contact the system API: undefined project slug.`);
8
+ }
9
+ return useSystemGraphQlClient(projectSlug);
10
+ };
11
+ export { useCurrentSystemGraphQlClient };
12
+ //# sourceMappingURL=useCurrentSystemGraphQlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCurrentSystemGraphQlClient.js","sources":["../../../src/system/useCurrentSystemGraphQlClient.ts"],"sourcesContent":["import type { GraphQlClient } from '@contember/client'\nimport { ClientError } from '../ClientError'\nimport { useProjectSlug } from '../project'\nimport { useSystemGraphQlClient } from './useSystemGraphQlClient'\n\nexport const useCurrentSystemGraphQlClient = (): GraphQlClient => {\n\tconst projectSlug = useProjectSlug()\n\n\tif (projectSlug === undefined) {\n\t\tthrow new ClientError(`Cannot contact the system API: undefined project slug.`)\n\t}\n\treturn useSystemGraphQlClient(projectSlug)\n}\n"],"names":[],"mappings":";;;MAKa,gCAAgC,MAAqB;QAC3D,cAAc;MAEhB,gBAAgB,QAAW;UACxB,IAAI,YAAY;AAAA;SAEhB,uBAAuB;AAAA;;"}
@@ -0,0 +1,15 @@
1
+ import { diffQuery } from "@contember/client";
2
+ import { useCallback } from "react";
3
+ import { useSystemApiRequest } from "./useSystemApiRequest.js";
4
+ import { useStageSlug } from "../project/useStageSlug.js";
5
+ const useDiffQuery = () => {
6
+ const [requestState, sendRequest] = useSystemApiRequest();
7
+ const stage = useStageSlug();
8
+ const sendQuery = useCallback((treeFilter) => sendRequest(diffQuery, {
9
+ stage,
10
+ filter: treeFilter
11
+ }), [stage, sendRequest]);
12
+ return [requestState, sendQuery];
13
+ };
14
+ export { useDiffQuery };
15
+ //# sourceMappingURL=useDiffQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDiffQuery.js","sources":["../../../src/system/useDiffQuery.ts"],"sourcesContent":["import { diffQuery, DiffQueryResponse, TreeFilter } from '@contember/client'\nimport { useCallback } from 'react'\nimport type { ApiRequestState } from '../apiRequest'\nimport { useStageSlug } from '../project'\nimport { useSystemApiRequest } from './useSystemApiRequest'\n\nexport const useDiffQuery = (): [\n\tApiRequestState<DiffQueryResponse>,\n\t(treeFilter: TreeFilter[]) => Promise<DiffQueryResponse>,\n] => {\n\tconst [requestState, sendRequest] = useSystemApiRequest<DiffQueryResponse>()\n\tconst stage = useStageSlug()\n\tconst sendQuery = useCallback(\n\t\t(treeFilter: TreeFilter[]) =>\n\t\t\tsendRequest(diffQuery, {\n\t\t\t\tstage,\n\t\t\t\tfilter: treeFilter,\n\t\t\t}),\n\t\t[stage, sendRequest],\n\t)\n\n\treturn [requestState, sendQuery]\n}\n"],"names":[],"mappings":";;;;MAMa,eAAe,MAGvB;QACE,CAAC,cAAc,eAAe;QAC9B,QAAQ;QACR,YAAY,YACjB,CAAC,eACA,YAAY,WAAW;AAAA,IACtB;AAAA,IACA,QAAQ;AAAA,MAEV,CAAC,OAAO;SAGF,CAAC,cAAc;AAAA;;"}
@@ -0,0 +1,15 @@
1
+ import { releaseTreeMutation } from "@contember/client";
2
+ import { useCallback } from "react";
3
+ import { useSystemApiRequest } from "./useSystemApiRequest.js";
4
+ import { useStageSlug } from "../project/useStageSlug.js";
5
+ const useReleaseTreeMutation = () => {
6
+ const [requestState, sendRequest] = useSystemApiRequest();
7
+ const stage = useStageSlug();
8
+ const sendMutation = useCallback((treeFilter) => sendRequest(releaseTreeMutation, {
9
+ stage,
10
+ filter: treeFilter
11
+ }), [stage, sendRequest]);
12
+ return [requestState, sendMutation];
13
+ };
14
+ export { useReleaseTreeMutation };
15
+ //# sourceMappingURL=useReleaseTreeMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReleaseTreeMutation.js","sources":["../../../src/system/useReleaseTreeMutation.ts"],"sourcesContent":["import { releaseTreeMutation, ReleaseTreeMutationResponse, TreeFilter } from '@contember/client'\nimport { useCallback } from 'react'\nimport type { ApiRequestState } from '../apiRequest'\nimport { useStageSlug } from '../project'\nimport { useSystemApiRequest } from './useSystemApiRequest'\n\nexport const useReleaseTreeMutation = (): [\n\tApiRequestState<ReleaseTreeMutationResponse>,\n\t(treeFilter: TreeFilter[]) => Promise<ReleaseTreeMutationResponse>,\n] => {\n\tconst [requestState, sendRequest] = useSystemApiRequest<ReleaseTreeMutationResponse>()\n\tconst stage = useStageSlug()\n\tconst sendMutation = useCallback(\n\t\t(treeFilter: TreeFilter[]) =>\n\t\t\tsendRequest(releaseTreeMutation, {\n\t\t\t\tstage,\n\t\t\t\tfilter: treeFilter,\n\t\t\t}),\n\t\t[stage, sendRequest],\n\t)\n\n\treturn [requestState, sendMutation]\n}\n"],"names":[],"mappings":";;;;MAMa,yBAAyB,MAGjC;QACE,CAAC,cAAc,eAAe;QAC9B,QAAQ;QACR,eAAe,YACpB,CAAC,eACA,YAAY,qBAAqB;AAAA,IAChC;AAAA,IACA,QAAQ;AAAA,MAEV,CAAC,OAAO;SAGF,CAAC,cAAc;AAAA;;"}
@@ -0,0 +1,5 @@
1
+ import { useCurrentSystemGraphQlClient } from "./useCurrentSystemGraphQlClient.js";
2
+ import { useApiRequest } from "../apiRequest/useApiRequest.js";
3
+ const useSystemApiRequest = () => useApiRequest(useCurrentSystemGraphQlClient());
4
+ export { useSystemApiRequest };
5
+ //# sourceMappingURL=useSystemApiRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSystemApiRequest.js","sources":["../../../src/system/useSystemApiRequest.ts"],"sourcesContent":["import type { UseApiRequestResult } from '../apiRequest'\nimport { useApiRequest } from '../apiRequest'\nimport { useCurrentSystemGraphQlClient } from './useCurrentSystemGraphQlClient'\n\nexport const useSystemApiRequest = <SuccessData>(): UseApiRequestResult<SuccessData> =>\n\tuseApiRequest<SuccessData>(useCurrentSystemGraphQlClient())\n"],"names":[],"mappings":";;MAIa,sBAAsB,MAClC,cAA2B;;"}
@@ -0,0 +1,5 @@
1
+ import { formatSystemApiRelativeUrl } from "@contember/client";
2
+ import { useGraphQlClient } from "../useGraphQlClient.js";
3
+ const useSystemGraphQlClient = (projectSlug) => useGraphQlClient(formatSystemApiRelativeUrl(projectSlug));
4
+ export { useSystemGraphQlClient };
5
+ //# sourceMappingURL=useSystemGraphQlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSystemGraphQlClient.js","sources":["../../../src/system/useSystemGraphQlClient.ts"],"sourcesContent":["import { formatSystemApiRelativeUrl } from '@contember/client'\nimport { useGraphQlClient } from '../useGraphQlClient'\n\nexport const useSystemGraphQlClient = (projectSlug: string) => useGraphQlClient(formatSystemApiRelativeUrl(projectSlug))\n"],"names":[],"mappings":";;MAGa,yBAAyB,CAAC,gBAAwB,iBAAiB,2BAA2B;;"}
@@ -0,0 +1,5 @@
1
+ import { useTenantGraphQlClient } from "./useTenantGraphQlClient.js";
2
+ import { useApiRequest } from "../apiRequest/useApiRequest.js";
3
+ const useTenantApiRequest = () => useApiRequest(useTenantGraphQlClient());
4
+ export { useTenantApiRequest };
5
+ //# sourceMappingURL=useTenantApiRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTenantApiRequest.js","sources":["../../../src/tenant/useTenantApiRequest.ts"],"sourcesContent":["import type { UseApiRequestResult } from '../apiRequest'\nimport { useApiRequest } from '../apiRequest'\nimport { useTenantGraphQlClient } from './useTenantGraphQlClient'\n\nexport const useTenantApiRequest = <SuccessData>(): UseApiRequestResult<SuccessData> =>\n\tuseApiRequest<SuccessData>(useTenantGraphQlClient())\n"],"names":[],"mappings":";;MAIa,sBAAsB,MAClC,cAA2B;;"}
@@ -0,0 +1,5 @@
1
+ import { tenantApiRelativeUrl } from "@contember/client";
2
+ import { useGraphQlClient } from "../useGraphQlClient.js";
3
+ const useTenantGraphQlClient = () => useGraphQlClient(tenantApiRelativeUrl);
4
+ export { useTenantGraphQlClient };
5
+ //# sourceMappingURL=useTenantGraphQlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTenantGraphQlClient.js","sources":["../../../src/tenant/useTenantGraphQlClient.ts"],"sourcesContent":["import { tenantApiRelativeUrl } from '@contember/client'\nimport { useGraphQlClient } from '../useGraphQlClient'\n\nexport const useTenantGraphQlClient = () => useGraphQlClient(tenantApiRelativeUrl)\n"],"names":[],"mappings":";;MAGa,yBAAyB,MAAM,iBAAiB;;"}
@@ -0,0 +1,160 @@
1
+ import { FileUploadError } from "@contember/client";
2
+ import { toFileId } from "./toFileId.js";
3
+ import { assertNever } from "../utils/assertNever.js";
4
+ const initializeFileUploadState = () => ({
5
+ lastUpdateTime: 0,
6
+ fileIdByFile: new WeakMap(),
7
+ liveState: new Map(),
8
+ publicState: new Map(),
9
+ isLiveStateDirty: false
10
+ });
11
+ const fileUploadReducer = (previousState, action) => {
12
+ const publishNewState = () => ({
13
+ publicState: previousState.liveState,
14
+ fileIdByFile: previousState.fileIdByFile,
15
+ lastUpdateTime: previousState.lastUpdateTime,
16
+ isLiveStateDirty: false,
17
+ liveState: new Map(previousState.liveState)
18
+ });
19
+ const getNewDirtyState = () => ({
20
+ fileIdByFile: previousState.fileIdByFile,
21
+ liveState: previousState.liveState,
22
+ publicState: previousState.publicState,
23
+ isLiveStateDirty: true,
24
+ lastUpdateTime: Date.now()
25
+ });
26
+ switch (action.type) {
27
+ case "publishNewestState": {
28
+ return publishNewState();
29
+ }
30
+ case "initialize": {
31
+ for (const [fileId, metadata] of action.files) {
32
+ previousState.liveState.set(fileId, {
33
+ readyState: "initializing",
34
+ abortController: metadata.abortController,
35
+ previewUrl: metadata.previewUrl,
36
+ file: metadata.file
37
+ });
38
+ previousState.fileIdByFile.set(metadata.file, fileId);
39
+ }
40
+ return publishNewState();
41
+ }
42
+ case "startUploading": {
43
+ for (const [fileOrId, metadata] of action.files) {
44
+ const fileId = toFileId(previousState, fileOrId);
45
+ const fileState = previousState.liveState.get(fileId);
46
+ if (fileState === void 0 || fileState.readyState !== "initializing") {
47
+ continue;
48
+ }
49
+ previousState.liveState.set(fileId, {
50
+ readyState: "uploading",
51
+ abortController: fileState.abortController,
52
+ file: fileState.file,
53
+ metadata: metadata.metadata,
54
+ previewUrl: fileState.previewUrl,
55
+ progress: void 0,
56
+ uploader: metadata.uploader
57
+ });
58
+ }
59
+ return publishNewState();
60
+ }
61
+ case "finishSuccessfully": {
62
+ for (const [fileOrId, result] of action.result) {
63
+ const fileId = toFileId(previousState, fileOrId);
64
+ const previousFileState = previousState.liveState.get(fileId);
65
+ if (previousFileState === void 0 || previousFileState.readyState !== "uploading") {
66
+ continue;
67
+ }
68
+ previousState.liveState.set(fileId, {
69
+ readyState: "success",
70
+ file: previousFileState.file,
71
+ metadata: previousFileState.metadata,
72
+ previewUrl: previousFileState.previewUrl,
73
+ result,
74
+ uploader: previousFileState.uploader
75
+ });
76
+ }
77
+ return getNewDirtyState();
78
+ }
79
+ case "finishWithError": {
80
+ for (const errorSpec of action.error) {
81
+ let fileOrId;
82
+ let rawError;
83
+ if (Array.isArray(errorSpec)) {
84
+ [fileOrId, rawError] = errorSpec;
85
+ } else {
86
+ fileOrId = errorSpec;
87
+ rawError = void 0;
88
+ }
89
+ const errors = [];
90
+ if (rawError instanceof FileUploadError) {
91
+ errors.push(rawError);
92
+ } else if (Array.isArray(rawError)) {
93
+ for (const error of rawError) {
94
+ if (error instanceof FileUploadError) {
95
+ errors.push(error);
96
+ }
97
+ }
98
+ }
99
+ const fileId = toFileId(previousState, fileOrId);
100
+ const previousFileState = previousState.liveState.get(fileId);
101
+ if (previousFileState === void 0 || previousFileState.readyState !== "initializing" && previousFileState.readyState !== "uploading") {
102
+ continue;
103
+ }
104
+ const uploader = previousFileState.readyState === "uploading" ? previousFileState.uploader : void 0;
105
+ const metadata = previousFileState.readyState === "uploading" ? previousFileState.metadata : void 0;
106
+ previousState.liveState.set(fileId, {
107
+ readyState: "error",
108
+ errors: errors.length ? errors : void 0,
109
+ rawError,
110
+ file: previousFileState.file,
111
+ metadata,
112
+ previewUrl: previousFileState.previewUrl,
113
+ uploader
114
+ });
115
+ }
116
+ return getNewDirtyState();
117
+ }
118
+ case "purge": {
119
+ let atLeastOnePurged = false;
120
+ for (const fileOrId of action.files) {
121
+ const fileId = toFileId(previousState, fileOrId);
122
+ const fileState = previousState.liveState.get(fileId);
123
+ if (fileState === void 0) {
124
+ continue;
125
+ }
126
+ atLeastOnePurged = true;
127
+ if (fileState.readyState === "initializing" || fileState.readyState === "uploading") {
128
+ fileState.abortController.abort();
129
+ }
130
+ previousState.liveState.delete(fileId);
131
+ }
132
+ if (atLeastOnePurged) {
133
+ return getNewDirtyState();
134
+ }
135
+ return previousState;
136
+ }
137
+ case "updateUploadProgress": {
138
+ for (const [fileOrId, { progress }] of action.progress) {
139
+ const fileId = toFileId(previousState, fileOrId);
140
+ const previousFileState = previousState.liveState.get(fileId);
141
+ if (progress === void 0 || previousFileState === void 0 || previousFileState.readyState !== "uploading") {
142
+ continue;
143
+ }
144
+ previousState.liveState.set(fileId, {
145
+ readyState: "uploading",
146
+ file: previousFileState.file,
147
+ uploader: previousFileState.uploader,
148
+ abortController: previousFileState.abortController,
149
+ previewUrl: previousFileState.previewUrl,
150
+ metadata: previousFileState.metadata,
151
+ progress
152
+ });
153
+ }
154
+ return getNewDirtyState();
155
+ }
156
+ }
157
+ assertNever();
158
+ };
159
+ export { fileUploadReducer, initializeFileUploadState };
160
+ //# sourceMappingURL=fileUploadReducer.js.map