@aws-amplify/ui-react 2.1.7 → 2.1.8
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.
- package/dist/esm/index.css.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.js +1 -1
- package/dist/esm/internal.js.map +1 -1
- package/dist/esm/styles.css.map +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/primitives.json +0 -33
- package/dist/styles.css.map +1 -1
- package/package.json +6 -5
package/dist/esm/internal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var m=Object.defineProperty,R=Object.defineProperties;var
|
|
1
|
+
var m=Object.defineProperty,R=Object.defineProperties;var E=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var P=(t,e,r)=>e in t?m(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,l=(t,e)=>{for(var r in e||(e={}))L.call(e,r)&&P(t,r,e[r]);if(M)for(var r of M(e))A.call(e,r)&&P(t,r,e[r]);return t},p=(t,e)=>R(t,E(e));var i=(t,e)=>m(t,"name",{value:e,configurable:!0});import*as d from"react";import V from"@aws-amplify/auth";import{Hub as h}from"@aws-amplify/core";import{useEffect as j,useState as C}from"react";var K=i(()=>{let[t,e]=C({error:void 0,isLoading:!0,user:void 0}),r=i(({payload:a})=>{switch(a.event){case"signIn":return e({user:a.data,isLoading:!1});case"signOut":return e({isLoading:!1});default:break}},"handleAuth"),o=i(()=>(e({isLoading:!0}),V.currentAuthenticatedUser().then(a=>e({user:a,isLoading:!1})).catch(a=>e({error:a,isLoading:!1})),h.listen("auth",r),()=>h.remove("auth",r)),"fetch");return j(o,[]),p(l({},t),{fetch:o})},"useAuth");import{DataStore as S}from"@aws-amplify/datastore";import{useEffect as x,useState as g}from"react";var I=i(({model:t,criteria:e,pagination:r})=>{let[o,a]=g({items:[],isLoading:!1,error:void 0});return x(i(()=>{a({isLoading:!0,items:[]});let s=S.observeQuery(t,e,r).subscribe(c=>a({items:c.items,isLoading:!1}),c=>a({items:[],error:c,isLoading:!1}));if(s)return()=>s.unsubscribe()},"fetch"),[]),o},"useDataStoreCollection"),U=i(({model:t,id:e})=>{let[r,o]=g(),[a,n]=g(!1),[s,c]=g();return x(i(()=>{n(!0),S.query(t,e).then(o).catch(c).finally(()=>n(!1))},"fetch"),[]),{error:s,item:r,isLoading:a}},"useDataStoreItem");function Z(t){return t.type==="record"?U(t):I(t)}i(Z,"useDataStoreBinding");import{Storage as O}from"@aws-amplify/storage";import{useEffect as k,useState as H}from"react";var oe=i((t,e)=>{let[r,o]=H({isLoading:!0}),a=JSON.stringify(e),n=i(()=>{o({isLoading:!0});let s=O.get(t,e);return s.then(c=>o({url:c,isLoading:!1})).catch(c=>o({error:c,isLoading:!1})),()=>O.cancel(s)},"fetch");return k(n,[t,a]),p(l({},r),{fetch:n})},"useStorageURL");import{useId as ie}from"@radix-ui/react-id";var b=i(t=>typeof t=="function","isFunction");var v=i((t,e)=>{if(!t)return null;let r=Object.entries(t).filter(o=>o[0].startsWith(e));return Object.assign({},...Array.from(r,([o,a])=>({[o.replace(e,"")]:a})))},"findChildOverrides"),B=i((t,e)=>{if(!t)return null;let r=Object.entries(t).filter(([o])=>o===e).flatMap(([,o])=>Object.entries(o)).filter(o=>o==null?void 0:o[0]);return Object.fromEntries(r)},"getOverrideProps");function F(t,e){let r=[...new Set(t.flatMap(n=>Object.keys(n.variantValues)))],o=Object.keys(e).filter(n=>r.includes(n)&&e[n]).reduce((n,s)=>(n[s]=e[s],n),{});return t.filter(({variantValues:n})=>Object.keys(n).length===Object.keys(o).length&&Object.entries(n).every(([s,c])=>o[s]===c)).reduce((n,s)=>l(l({},n),s.overrides),{})}i(F,"getOverridesFromVariants");var w=i((t,e)=>{if(!t&&!e)return null;if(!e)return t;if(!t)return e;let r=new Set(Object.keys(e)),o=Object.keys(t).filter(n=>r.has(n)),a=Object.fromEntries(o.map(n=>[n,l(l({},t[n]),e[n])]));return l(l(l({},t),e),a)},"mergeVariantsAndOverrides");var D=i(t=>t.reduce((e,r)=>o=>r(e(o)),e=>e),"mergePredicates"),y=i(t=>{let{and:e,or:r,field:o,operator:a,operand:n}=t;if(Array.isArray(e)){let s=e.map(c=>y(c));return c=>c.and(D(s))}else if(Array.isArray(r)){let s=r.map(c=>y(c));return c=>c.or(D(s))}return s=>b(s[o])?s[o].call(s,a,n):s},"createDataStorePredicate");export{y as createDataStorePredicate,v as findChildOverrides,B as getOverrideProps,F as getOverridesFromVariants,w as mergeVariantsAndOverrides,K as useAuth,Z as useDataStoreBinding,I as useDataStoreCollection,U as useDataStoreItem,oe as useStorageURL};
|
|
2
2
|
//# sourceMappingURL=internal.js.map
|
package/dist/esm/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react-shim.js","../../src/hooks/useAuth.ts","../../src/hooks/useDataStore.tsx","../../src/hooks/useStorageURL.ts","../../src/primitives/shared/utils.ts","../../src/primitives/shared/datastore.ts"],"sourcesContent":["/**\n * This shim exists for `esbuild` to `inject` into every .tsx file.\n * Otherwise, `import * as React from 'react'` would need to be added manually\n *\n * See: https://esbuild.github.io/content-types/#auto-import-for-jsx\n * See: https://github.com/egoist/tsup/issues/390\n */\n\nimport * as React from 'react';\nexport { React };\n","import Auth, { CognitoUser } from '@aws-amplify/auth';\nimport { Hub } from '@aws-amplify/core';\nimport { useEffect, useState } from 'react';\n\n// Exposes relevant CognitoUser properties\ninterface AuthUser extends CognitoUser {\n username: string;\n attributes: Record<string, string>;\n}\n\nexport interface UseAuthResult {\n user?: AuthUser;\n isLoading: boolean;\n error?: Error;\n fetch?: () => void;\n}\n\n/**\n * Amplify Auth React hook\n * @internal\n */\nexport const useAuth = (): UseAuthResult => {\n const [result, setResult] = useState<UseAuthResult>({\n error: undefined,\n isLoading: true,\n user: undefined,\n });\n\n const handleAuth = ({ payload }) => {\n switch (payload.event) {\n case 'signIn':\n return setResult({ user: payload.data, isLoading: false });\n case 'signOut':\n return setResult({ isLoading: false });\n default:\n break;\n }\n };\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n Auth.currentAuthenticatedUser()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Handle Hub Auth events\n Hub.listen('auth', handleAuth);\n\n // Stop listening events on unmount\n return () => Hub.remove('auth', handleAuth);\n };\n\n useEffect(fetch, []);\n\n return { ...result, fetch };\n};\n","import { DataStore, PersistentModel } from '@aws-amplify/datastore';\nimport { useEffect, useState } from 'react';\nimport {\n DataStoreBindingProps,\n DataStoreCollectionProps,\n DataStoreCollectionResult,\n DataStoreItemProps,\n DataStoreItemResult,\n} from '../primitives/types/datastore';\n\n/**\n * Perform a collection query against a DataStore model\n * @internal\n */\nexport const useDataStoreCollection = <M extends PersistentModel>({\n model,\n criteria,\n pagination,\n}: DataStoreCollectionProps<M>): DataStoreCollectionResult<M> => {\n const [result, setResult] = useState<DataStoreCollectionResult<M>>({\n items: [],\n isLoading: false,\n error: undefined,\n });\n\n const fetch = () => {\n setResult({ isLoading: true, items: [] });\n\n const subscription = DataStore.observeQuery(\n model,\n criteria,\n pagination\n ).subscribe(\n (snapshot) => setResult({ items: snapshot.items, isLoading: false }),\n (error) => setResult({ items: [], error, isLoading: false })\n );\n\n // Unsubscribe from query updates on unmount\n if (subscription) {\n return () => subscription.unsubscribe();\n }\n };\n\n // Fetch on next render cycle\n useEffect(fetch, []);\n\n return result;\n};\n\n/**\n * Perform a single record query against a DataStore model\n * @internal\n */\nexport const useDataStoreItem = <M extends PersistentModel>({\n model,\n id,\n}: DataStoreItemProps<M>): DataStoreItemResult<M> => {\n const [item, setItem] = useState<M>();\n const [isLoading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<Error>();\n\n const fetch = () => {\n setLoading(true);\n\n DataStore.query(model, id)\n .then(setItem)\n .catch(setError)\n .finally(() => setLoading(false));\n };\n\n // Fetch on next render cycle\n useEffect(fetch, []);\n\n return {\n error,\n item,\n isLoading,\n };\n};\n\n/**\n * Perform a query against a DataStore model\n * @internal\n */\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'record'>\n): DataStoreItemResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'collection'>\n): DataStoreCollectionResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props:\n | DataStoreBindingProps<Model, 'record'>\n | DataStoreBindingProps<Model, 'collection'>\n): DataStoreItemResult<Model> | DataStoreCollectionResult<Model> {\n return props.type === 'record'\n ? useDataStoreItem(props)\n : useDataStoreCollection(props);\n}\n","import { S3ProviderGetConfig, Storage } from '@aws-amplify/storage';\nimport { useEffect, useState } from 'react';\n\nexport interface UseStorageURLResult {\n url?: string;\n error?: Error;\n isLoading: boolean;\n}\n\n/**\n * Computes a public URL for an Amplify Storage file\n * @internal\n */\nexport const useStorageURL = (key: string, options?: S3ProviderGetConfig) => {\n const [result, setResult] = useState<UseStorageURLResult>({\n isLoading: true,\n });\n\n // Used to prevent an infinite loop on useEffect, because `options`\n // will have a different reference on every render\n const serializedOptions = JSON.stringify(options);\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n const promise = Storage.get(key, options);\n\n // Attempt to fetch storage object url\n promise\n .then((url) => setResult({ url, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Cancel current promise on unmount\n return () => Storage.cancel(promise);\n };\n\n useEffect(fetch, [key, serializedOptions]);\n\n return { ...result, fetch };\n};\n","export const strHasLength = (str: unknown): str is string =>\n typeof str === 'string' && str.length > 0;\n\nexport const isFunction = (fn: unknown): fn is Function =>\n typeof fn === 'function';\n\nexport const isNullOrEmptyString = (value: unknown) =>\n value == null || (typeof value === 'string' && value.length === 0);\n\n/**\n * Create a consecutive integer array from start value to end value.\n * @param start start value\n * @param end end value\n * @returns an integer array with elements from start to end consecutively\n */\nexport const getConsecutiveIntArray = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\n/**\n * This method is used to parse through all of the overrides and\n * only pass the relevant child overrides for a given component.\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns overrides only for specified element\n */\nexport const findChildOverrides = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const filteredOverrides = Object.entries(overrides).filter((m) =>\n m[0].startsWith(elementHierarchy)\n );\n\n return Object.assign(\n {},\n ...Array.from(filteredOverrides, ([k, v]) => ({\n [k.replace(elementHierarchy, '')]: v,\n }))\n );\n};\n\n/**\n * This helper method is used to get the overrides\n * that will be applied to a component\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns component overrides\n */\nexport const getOverrideProps = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const componentOverrides = Object.entries(overrides)\n .filter(([key]) => key === elementHierarchy)\n .flatMap(([, value]) => Object.entries(value))\n .filter((m) => m?.[0]);\n\n return Object.fromEntries(componentOverrides);\n};\n\nexport type EscapeHatchProps = {\n [elementHierarchy: string]: Record<string, string>;\n};\n\ntype VariantValues = { [key: string]: string };\nexport type Variant = {\n variantValues: VariantValues;\n overrides: EscapeHatchProps;\n};\n\n/**\n * Given a list of style variants, select a given one based on input props\n * @internal\n * @param variants list of style variants to select from\n * @param props variant values to select from the list, may include additional props, to tidy up usage upstream\n */\nexport function getOverridesFromVariants(\n variants: Variant[],\n props: { [key: string]: any }\n) {\n // Get unique keys from the provided variants\n const variantValueKeys = [\n ...new Set(\n variants.flatMap((variant) => Object.keys(variant.variantValues))\n ),\n ];\n\n // Get variant value object from provided props, dropping keys that aren't in variantValueKeys, or whose vals are falsey\n const variantValuesFromProps: VariantValues = Object.keys(props)\n .filter((i) => variantValueKeys.includes(i) && props[i])\n .reduce((acc, key) => {\n acc[key] = props[key];\n return acc;\n }, {});\n\n const matchedVariants = variants.filter(({ variantValues }) => {\n return (\n Object.keys(variantValues).length ===\n Object.keys(variantValuesFromProps).length &&\n Object.entries(variantValues).every(\n ([key, value]) => variantValuesFromProps[key] === value\n )\n );\n });\n\n return matchedVariants.reduce((overrides, variant) => {\n return { ...overrides, ...variant.overrides };\n }, {});\n}\n\n/**\n * This helper method is used to merge\n * variants with overrides\n * @internal\n * @param variants\n * @param overrides\n * @returns merged variants with overrides\n */\nexport const mergeVariantsAndOverrides = (\n variants: EscapeHatchProps,\n overrides: EscapeHatchProps\n): EscapeHatchProps => {\n if (!variants && !overrides) {\n return null;\n }\n if (!overrides) {\n return variants;\n }\n if (!variants) {\n return overrides;\n }\n const overrideKeys = new Set(Object.keys(overrides));\n const sharedKeys = Object.keys(variants).filter((variantKey) =>\n overrideKeys.has(variantKey)\n );\n const merged = Object.fromEntries(\n sharedKeys.map((sharedKey) => [\n sharedKey,\n { ...variants[sharedKey], ...overrides[sharedKey] },\n ])\n );\n return {\n ...variants,\n ...overrides,\n ...merged,\n };\n};\n","import {\n ModelPredicate,\n PersistentModel,\n ProducerModelPredicate,\n} from '@aws-amplify/datastore';\nimport { DataStorePredicateObject } from '../types/datastore';\nimport { isFunction } from './utils';\n\n/**\n * Given an array of predicates, compose them in sequential order\n */\nconst mergePredicates = <Model extends PersistentModel>(\n predicates: ProducerModelPredicate<Model>[]\n): ProducerModelPredicate<Model> =>\n predicates.reduce(\n (previous, current) => (predicate) => current(previous(predicate)),\n (predicate) => predicate\n );\n\n/**\n * Creates a DataStore compatible predicate function from an object representation\n * @internal\n */\nexport const createDataStorePredicate = <Model extends PersistentModel>(\n predicateObject: DataStorePredicateObject\n): ProducerModelPredicate<Model> => {\n const {\n and: groupAnd,\n or: groupOr,\n field,\n operator,\n operand,\n } = predicateObject;\n\n if (Array.isArray(groupAnd)) {\n const predicates = groupAnd.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.and(mergePredicates(predicates));\n } else if (Array.isArray(groupOr)) {\n const predicates = groupOr.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.or(mergePredicates(predicates));\n }\n\n return (predicate: ModelPredicate<Model>) => {\n if (isFunction(predicate[field])) {\n return predicate[field].call(predicate, operator, operand);\n }\n\n return predicate;\n };\n};\n"],"mappings":"geAQA,wBCRA,iCACA,wCACA,gDAmBO,GAAM,GAAU,MAAqB,CAC1C,GAAM,CAAC,EAAQ,GAAa,EAAwB,CAClD,MAAO,OACP,UAAW,GACX,KAAM,SAGF,EAAa,GAAC,CAAE,aAAc,CAClC,OAAQ,EAAQ,WACT,SACH,MAAO,GAAU,CAAE,KAAM,EAAQ,KAAM,UAAW,SAC/C,UACH,MAAO,GAAU,CAAE,UAAW,aAE9B,QAPa,cAWb,EAAQ,MACZ,GAAU,CAAE,UAAW,KAEvB,EAAK,2BACF,KAAK,AAAC,GAAS,EAAU,CAAE,OAAM,UAAW,MAC5C,MAAM,AAAC,GAAU,EAAU,CAAE,QAAO,UAAW,MAGlD,EAAI,OAAO,OAAQ,GAGZ,IAAM,EAAI,OAAO,OAAQ,IAXpB,SAcd,SAAU,EAAO,IAEV,OAAK,GAAL,CAAa,WAlCC,WCrBvB,mDACA,gDAaO,GAAM,GAAyB,GAA4B,CAChE,QACA,WACA,gBAC+D,CAC/D,GAAM,CAAC,EAAQ,GAAa,EAAuC,CACjE,MAAO,GACP,UAAW,GACX,MAAO,SAsBT,SAnBc,MAAM,CAClB,EAAU,CAAE,UAAW,GAAM,MAAO,KAEpC,GAAM,GAAe,EAAU,aAC7B,EACA,EACA,GACA,UACA,AAAC,GAAa,EAAU,CAAE,MAAO,EAAS,MAAO,UAAW,KAC5D,AAAC,GAAU,EAAU,CAAE,MAAO,GAAI,QAAO,UAAW,MAItD,GAAI,EACF,MAAO,IAAM,EAAa,eAdhB,SAmBG,IAEV,GAhC6B,0BAuCzB,EAAmB,GAA4B,CAC1D,QACA,QACmD,CACnD,GAAM,CAAC,EAAM,GAAW,IAClB,CAAC,EAAW,GAAc,EAAkB,IAC5C,CAAC,EAAO,GAAY,IAY1B,SAVc,MAAM,CAClB,EAAW,IAEX,EAAU,MAAM,EAAO,GACpB,KAAK,GACL,MAAM,GACN,QAAQ,IAAM,EAAW,MANhB,SAUG,IAEV,CACL,QACA,OACA,cAvB4B,oBAqCzB,WACL,EAG+D,CAC/D,MAAO,GAAM,OAAS,SAClB,EAAiB,GACjB,EAAuB,GAPb,2BC1FhB,+CACA,gDAYO,GAAM,IAAgB,GAAC,EAAa,IAAkC,CAC3E,GAAM,CAAC,EAAQ,GAAa,EAA8B,CACxD,UAAW,KAKP,EAAoB,KAAK,UAAU,GAEnC,EAAQ,MAAM,CAClB,EAAU,CAAE,UAAW,KAEvB,GAAM,GAAU,EAAQ,IAAI,EAAK,GAGjC,SACG,KAAK,AAAC,GAAQ,EAAU,CAAE,MAAK,UAAW,MAC1C,MAAM,AAAC,GAAU,EAAU,CAAE,QAAO,UAAW,MAG3C,IAAM,EAAQ,OAAO,IAXhB,SAcd,SAAU,EAAO,CAAC,EAAK,IAEhB,OAAK,GAAL,CAAa,WAzBO,iBCVtB,GAAM,GAAa,EAAC,GACzB,MAAO,IAAO,WADU,cAyBnB,GAAM,GAAqB,GAChC,EACA,IACG,CACH,GAAI,CAAC,EACH,MAAO,MAGT,GAAM,GAAoB,OAAO,QAAQ,GAAW,OAAO,AAAC,GAC1D,EAAE,GAAG,WAAW,IAGlB,MAAO,QAAO,OACZ,GACA,GAAG,MAAM,KAAK,EAAmB,CAAC,CAAC,EAAG,KAAQ,GAC3C,EAAE,QAAQ,EAAkB,KAAM,OAfP,sBA4BrB,EAAmB,GAC9B,EACA,IACG,CACH,GAAI,CAAC,EACH,MAAO,MAGT,GAAM,GAAqB,OAAO,QAAQ,GACvC,OAAO,CAAC,CAAC,KAAS,IAAQ,GAC1B,QAAQ,CAAC,CAAC,CAAE,KAAW,OAAO,QAAQ,IACtC,OAAO,AAAC,GAAM,iBAAI,IAErB,MAAO,QAAO,YAAY,IAbI,oBAgCzB,WACL,EACA,EACA,CAEA,GAAM,GAAmB,CACvB,GAAG,GAAI,KACL,EAAS,QAAQ,AAAC,GAAY,OAAO,KAAK,EAAQ,kBAKhD,EAAwC,OAAO,KAAK,GACvD,OAAO,AAAC,GAAM,EAAiB,SAAS,IAAM,EAAM,IACpD,OAAO,CAAC,EAAK,IACZ,GAAI,GAAO,EAAM,GACV,GACN,IAYL,MAAO,AAViB,GAAS,OAAO,CAAC,CAAE,mBAEvC,OAAO,KAAK,GAAe,SACzB,OAAO,KAAK,GAAwB,QACtC,OAAO,QAAQ,GAAe,MAC5B,CAAC,CAAC,EAAK,KAAW,EAAuB,KAAS,IAKjC,OAAO,CAAC,EAAW,IACjC,OAAK,GAAc,EAAQ,WACjC,IA/BW,gCA0CT,GAAM,GAA4B,GACvC,EACA,IACqB,CACrB,GAAI,CAAC,GAAY,CAAC,EAChB,MAAO,MAET,GAAI,CAAC,EACH,MAAO,GAET,GAAI,CAAC,EACH,MAAO,GAET,GAAM,GAAe,GAAI,KAAI,OAAO,KAAK,IACnC,EAAa,OAAO,KAAK,GAAU,OAAO,AAAC,GAC/C,EAAa,IAAI,IAEb,EAAS,OAAO,YACpB,EAAW,IAAI,AAAC,GAAc,CAC5B,EACA,OAAK,EAAS,IAAe,EAAU,OAG3C,MAAO,UACF,GACA,GACA,IA1BkC,6BCvHzC,GAAM,GAAkB,EACtB,GAEA,EAAW,OACT,CAAC,EAAU,IAAY,AAAC,GAAc,EAAQ,EAAS,IACvD,AAAC,GAAc,GALK,mBAYX,EAA2B,EACtC,GACkC,CAClC,GAAM,CACJ,IAAK,EACL,GAAI,EACJ,QACA,WACA,WACE,EAEJ,GAAI,MAAM,QAAQ,GAAW,CAC3B,GAAM,GAAa,EAAS,IAAI,AAAC,GAC/B,EAAgC,IAGlC,MAAO,AAAC,IAA6B,EAAE,IAAI,EAAgB,YAClD,MAAM,QAAQ,GAAU,CACjC,GAAM,GAAa,EAAQ,IAAI,AAAC,GAC9B,EAAgC,IAGlC,MAAO,AAAC,IAA6B,EAAE,GAAG,EAAgB,IAG5D,MAAO,AAAC,IACF,EAAW,EAAU,IAChB,EAAU,GAAO,KAAK,EAAW,EAAU,GAG7C,GA9B6B","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/react-shim.js","../../src/hooks/useAuth.ts","../../src/hooks/useDataStore.tsx","../../src/hooks/useStorageURL.ts","../../src/primitives/shared/utils.ts","../../src/primitives/shared/datastore.ts"],"sourcesContent":["/**\n * This shim exists for `esbuild` to `inject` into every .tsx file.\n * Otherwise, `import * as React from 'react'` would need to be added manually\n *\n * See: https://esbuild.github.io/content-types/#auto-import-for-jsx\n * See: https://github.com/egoist/tsup/issues/390\n */\n\nimport * as React from 'react';\nexport { React };\n","import Auth, { CognitoUser } from '@aws-amplify/auth';\nimport { Hub } from '@aws-amplify/core';\nimport { useEffect, useState } from 'react';\n\n// Exposes relevant CognitoUser properties\ninterface AuthUser extends CognitoUser {\n username: string;\n attributes: Record<string, string>;\n}\n\nexport interface UseAuthResult {\n user?: AuthUser;\n isLoading: boolean;\n error?: Error;\n fetch?: () => void;\n}\n\n/**\n * Amplify Auth React hook\n * @internal\n */\nexport const useAuth = (): UseAuthResult => {\n const [result, setResult] = useState<UseAuthResult>({\n error: undefined,\n isLoading: true,\n user: undefined,\n });\n\n const handleAuth = ({ payload }) => {\n switch (payload.event) {\n case 'signIn':\n return setResult({ user: payload.data, isLoading: false });\n case 'signOut':\n return setResult({ isLoading: false });\n default:\n break;\n }\n };\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n Auth.currentAuthenticatedUser()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Handle Hub Auth events\n Hub.listen('auth', handleAuth);\n\n // Stop listening events on unmount\n return () => Hub.remove('auth', handleAuth);\n };\n\n useEffect(fetch, []);\n\n return { ...result, fetch };\n};\n","import { DataStore, PersistentModel } from '@aws-amplify/datastore';\nimport { useEffect, useState } from 'react';\nimport {\n DataStoreBindingProps,\n DataStoreCollectionProps,\n DataStoreCollectionResult,\n DataStoreItemProps,\n DataStoreItemResult,\n} from '../primitives/types/datastore';\n\n/**\n * Perform a collection query against a DataStore model\n * @internal\n */\nexport const useDataStoreCollection = <M extends PersistentModel>({\n model,\n criteria,\n pagination,\n}: DataStoreCollectionProps<M>): DataStoreCollectionResult<M> => {\n const [result, setResult] = useState<DataStoreCollectionResult<M>>({\n items: [],\n isLoading: false,\n error: undefined,\n });\n\n const fetch = () => {\n setResult({ isLoading: true, items: [] });\n\n const subscription = DataStore.observeQuery(\n model,\n criteria,\n pagination\n ).subscribe(\n (snapshot) => setResult({ items: snapshot.items, isLoading: false }),\n (error) => setResult({ items: [], error, isLoading: false })\n );\n\n // Unsubscribe from query updates on unmount\n if (subscription) {\n return () => subscription.unsubscribe();\n }\n };\n\n // Fetch on next render cycle\n useEffect(fetch, []);\n\n return result;\n};\n\n/**\n * Perform a single record query against a DataStore model\n * @internal\n */\nexport const useDataStoreItem = <M extends PersistentModel>({\n model,\n id,\n}: DataStoreItemProps<M>): DataStoreItemResult<M> => {\n const [item, setItem] = useState<M>();\n const [isLoading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<Error>();\n\n const fetch = () => {\n setLoading(true);\n\n DataStore.query(model, id)\n .then(setItem)\n .catch(setError)\n .finally(() => setLoading(false));\n };\n\n // Fetch on next render cycle\n useEffect(fetch, []);\n\n return {\n error,\n item,\n isLoading,\n };\n};\n\n/**\n * Perform a query against a DataStore model\n * @internal\n */\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'record'>\n): DataStoreItemResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'collection'>\n): DataStoreCollectionResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props:\n | DataStoreBindingProps<Model, 'record'>\n | DataStoreBindingProps<Model, 'collection'>\n): DataStoreItemResult<Model> | DataStoreCollectionResult<Model> {\n return props.type === 'record'\n ? useDataStoreItem(props)\n : useDataStoreCollection(props);\n}\n","import { S3ProviderGetConfig, Storage } from '@aws-amplify/storage';\nimport { useEffect, useState } from 'react';\n\nexport interface UseStorageURLResult {\n url?: string;\n error?: Error;\n isLoading: boolean;\n}\n\n/**\n * Computes a public URL for an Amplify Storage file\n * @internal\n */\nexport const useStorageURL = (key: string, options?: S3ProviderGetConfig) => {\n const [result, setResult] = useState<UseStorageURLResult>({\n isLoading: true,\n });\n\n // Used to prevent an infinite loop on useEffect, because `options`\n // will have a different reference on every render\n const serializedOptions = JSON.stringify(options);\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n const promise = Storage.get(key, options);\n\n // Attempt to fetch storage object url\n promise\n .then((url) => setResult({ url, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Cancel current promise on unmount\n return () => Storage.cancel(promise);\n };\n\n useEffect(fetch, [key, serializedOptions]);\n\n return { ...result, fetch };\n};\n","import { useId } from '@radix-ui/react-id';\n\nexport const strHasLength = (str: unknown): str is string =>\n typeof str === 'string' && str.length > 0;\n\nexport const isFunction = (fn: unknown): fn is Function =>\n typeof fn === 'function';\n\nexport const isNullOrEmptyString = (value: unknown) =>\n value == null || (typeof value === 'string' && value.length === 0);\n\n/**\n * Create a consecutive integer array from start value to end value.\n * @param start start value\n * @param end end value\n * @returns an integer array with elements from start to end consecutively\n */\nexport const getConsecutiveIntArray = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\n/**\n * Create a uuid to use with amplify fields unless\n * an id is provided\n * @param id user specified id\n * @returns string\n */\nexport const useStableId = (id?: string) => useId(id);\n\n// Prefixed autogenerated id created by useStableId\nexport const AUTO_GENERATED_ID_PREFIX = 'radix-id-';\n\n/**\n * This method is used to parse through all of the overrides and\n * only pass the relevant child overrides for a given component.\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns overrides only for specified element\n */\nexport const findChildOverrides = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const filteredOverrides = Object.entries(overrides).filter((m) =>\n m[0].startsWith(elementHierarchy)\n );\n\n return Object.assign(\n {},\n ...Array.from(filteredOverrides, ([k, v]) => ({\n [k.replace(elementHierarchy, '')]: v,\n }))\n );\n};\n\n/**\n * This helper method is used to get the overrides\n * that will be applied to a component\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns component overrides\n */\nexport const getOverrideProps = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const componentOverrides = Object.entries(overrides)\n .filter(([key]) => key === elementHierarchy)\n .flatMap(([, value]) => Object.entries(value))\n .filter((m) => m?.[0]);\n\n return Object.fromEntries(componentOverrides);\n};\n\nexport type EscapeHatchProps = {\n [elementHierarchy: string]: Record<string, string>;\n};\n\ntype VariantValues = { [key: string]: string };\nexport type Variant = {\n variantValues: VariantValues;\n overrides: EscapeHatchProps;\n};\n\n/**\n * Given a list of style variants, select a given one based on input props\n * @internal\n * @param variants list of style variants to select from\n * @param props variant values to select from the list, may include additional props, to tidy up usage upstream\n */\nexport function getOverridesFromVariants(\n variants: Variant[],\n props: { [key: string]: any }\n) {\n // Get unique keys from the provided variants\n const variantValueKeys = [\n ...new Set(\n variants.flatMap((variant) => Object.keys(variant.variantValues))\n ),\n ];\n\n // Get variant value object from provided props, dropping keys that aren't in variantValueKeys, or whose vals are falsey\n const variantValuesFromProps: VariantValues = Object.keys(props)\n .filter((i) => variantValueKeys.includes(i) && props[i])\n .reduce((acc, key) => {\n acc[key] = props[key];\n return acc;\n }, {});\n\n const matchedVariants = variants.filter(({ variantValues }) => {\n return (\n Object.keys(variantValues).length ===\n Object.keys(variantValuesFromProps).length &&\n Object.entries(variantValues).every(\n ([key, value]) => variantValuesFromProps[key] === value\n )\n );\n });\n\n return matchedVariants.reduce((overrides, variant) => {\n return { ...overrides, ...variant.overrides };\n }, {});\n}\n\n/**\n * This helper method is used to merge\n * variants with overrides\n * @internal\n * @param variants\n * @param overrides\n * @returns merged variants with overrides\n */\nexport const mergeVariantsAndOverrides = (\n variants: EscapeHatchProps,\n overrides: EscapeHatchProps\n): EscapeHatchProps => {\n if (!variants && !overrides) {\n return null;\n }\n if (!overrides) {\n return variants;\n }\n if (!variants) {\n return overrides;\n }\n const overrideKeys = new Set(Object.keys(overrides));\n const sharedKeys = Object.keys(variants).filter((variantKey) =>\n overrideKeys.has(variantKey)\n );\n const merged = Object.fromEntries(\n sharedKeys.map((sharedKey) => [\n sharedKey,\n { ...variants[sharedKey], ...overrides[sharedKey] },\n ])\n );\n return {\n ...variants,\n ...overrides,\n ...merged,\n };\n};\n","import {\n ModelPredicate,\n PersistentModel,\n ProducerModelPredicate,\n} from '@aws-amplify/datastore';\nimport { DataStorePredicateObject } from '../types/datastore';\nimport { isFunction } from './utils';\n\n/**\n * Given an array of predicates, compose them in sequential order\n */\nconst mergePredicates = <Model extends PersistentModel>(\n predicates: ProducerModelPredicate<Model>[]\n): ProducerModelPredicate<Model> =>\n predicates.reduce(\n (previous, current) => (predicate) => current(previous(predicate)),\n (predicate) => predicate\n );\n\n/**\n * Creates a DataStore compatible predicate function from an object representation\n * @internal\n */\nexport const createDataStorePredicate = <Model extends PersistentModel>(\n predicateObject: DataStorePredicateObject\n): ProducerModelPredicate<Model> => {\n const {\n and: groupAnd,\n or: groupOr,\n field,\n operator,\n operand,\n } = predicateObject;\n\n if (Array.isArray(groupAnd)) {\n const predicates = groupAnd.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.and(mergePredicates(predicates));\n } else if (Array.isArray(groupOr)) {\n const predicates = groupOr.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.or(mergePredicates(predicates));\n }\n\n return (predicate: ModelPredicate<Model>) => {\n if (isFunction(predicate[field])) {\n return predicate[field].call(predicate, operator, operand);\n }\n\n return predicate;\n };\n};\n"],"mappings":"geAQA,wBCRA,iCACA,wCACA,gDAmBO,GAAM,GAAU,MAAqB,CAC1C,GAAM,CAAC,EAAQ,GAAa,EAAwB,CAClD,MAAO,OACP,UAAW,GACX,KAAM,SAGF,EAAa,GAAC,CAAE,aAAc,CAClC,OAAQ,EAAQ,WACT,SACH,MAAO,GAAU,CAAE,KAAM,EAAQ,KAAM,UAAW,SAC/C,UACH,MAAO,GAAU,CAAE,UAAW,aAE9B,QAPa,cAWb,EAAQ,MACZ,GAAU,CAAE,UAAW,KAEvB,EAAK,2BACF,KAAK,AAAC,GAAS,EAAU,CAAE,OAAM,UAAW,MAC5C,MAAM,AAAC,GAAU,EAAU,CAAE,QAAO,UAAW,MAGlD,EAAI,OAAO,OAAQ,GAGZ,IAAM,EAAI,OAAO,OAAQ,IAXpB,SAcd,SAAU,EAAO,IAEV,OAAK,GAAL,CAAa,WAlCC,WCrBvB,mDACA,gDAaO,GAAM,GAAyB,GAA4B,CAChE,QACA,WACA,gBAC+D,CAC/D,GAAM,CAAC,EAAQ,GAAa,EAAuC,CACjE,MAAO,GACP,UAAW,GACX,MAAO,SAsBT,SAnBc,MAAM,CAClB,EAAU,CAAE,UAAW,GAAM,MAAO,KAEpC,GAAM,GAAe,EAAU,aAC7B,EACA,EACA,GACA,UACA,AAAC,GAAa,EAAU,CAAE,MAAO,EAAS,MAAO,UAAW,KAC5D,AAAC,GAAU,EAAU,CAAE,MAAO,GAAI,QAAO,UAAW,MAItD,GAAI,EACF,MAAO,IAAM,EAAa,eAdhB,SAmBG,IAEV,GAhC6B,0BAuCzB,EAAmB,GAA4B,CAC1D,QACA,QACmD,CACnD,GAAM,CAAC,EAAM,GAAW,IAClB,CAAC,EAAW,GAAc,EAAkB,IAC5C,CAAC,EAAO,GAAY,IAY1B,SAVc,MAAM,CAClB,EAAW,IAEX,EAAU,MAAM,EAAO,GACpB,KAAK,GACL,MAAM,GACN,QAAQ,IAAM,EAAW,MANhB,SAUG,IAEV,CACL,QACA,OACA,cAvB4B,oBAqCzB,WACL,EAG+D,CAC/D,MAAO,GAAM,OAAS,SAClB,EAAiB,GACjB,EAAuB,GAPb,2BC1FhB,+CACA,gDAYO,GAAM,IAAgB,GAAC,EAAa,IAAkC,CAC3E,GAAM,CAAC,EAAQ,GAAa,EAA8B,CACxD,UAAW,KAKP,EAAoB,KAAK,UAAU,GAEnC,EAAQ,MAAM,CAClB,EAAU,CAAE,UAAW,KAEvB,GAAM,GAAU,EAAQ,IAAI,EAAK,GAGjC,SACG,KAAK,AAAC,GAAQ,EAAU,CAAE,MAAK,UAAW,MAC1C,MAAM,AAAC,GAAU,EAAU,CAAE,QAAO,UAAW,MAG3C,IAAM,EAAQ,OAAO,IAXhB,SAcd,SAAU,EAAO,CAAC,EAAK,IAEhB,OAAK,GAAL,CAAa,WAzBO,iBCb7B,4CAKO,GAAM,GAAa,EAAC,GACzB,MAAO,IAAO,WADU,cAoCnB,GAAM,GAAqB,GAChC,EACA,IACG,CACH,GAAI,CAAC,EACH,MAAO,MAGT,GAAM,GAAoB,OAAO,QAAQ,GAAW,OAAO,AAAC,GAC1D,EAAE,GAAG,WAAW,IAGlB,MAAO,QAAO,OACZ,GACA,GAAG,MAAM,KAAK,EAAmB,CAAC,CAAC,EAAG,KAAQ,GAC3C,EAAE,QAAQ,EAAkB,KAAM,OAfP,sBA4BrB,EAAmB,GAC9B,EACA,IACG,CACH,GAAI,CAAC,EACH,MAAO,MAGT,GAAM,GAAqB,OAAO,QAAQ,GACvC,OAAO,CAAC,CAAC,KAAS,IAAQ,GAC1B,QAAQ,CAAC,CAAC,CAAE,KAAW,OAAO,QAAQ,IACtC,OAAO,AAAC,GAAM,iBAAI,IAErB,MAAO,QAAO,YAAY,IAbI,oBAgCzB,WACL,EACA,EACA,CAEA,GAAM,GAAmB,CACvB,GAAG,GAAI,KACL,EAAS,QAAQ,AAAC,GAAY,OAAO,KAAK,EAAQ,kBAKhD,EAAwC,OAAO,KAAK,GACvD,OAAO,AAAC,GAAM,EAAiB,SAAS,IAAM,EAAM,IACpD,OAAO,CAAC,EAAK,IACZ,GAAI,GAAO,EAAM,GACV,GACN,IAYL,MAAO,AAViB,GAAS,OAAO,CAAC,CAAE,mBAEvC,OAAO,KAAK,GAAe,SACzB,OAAO,KAAK,GAAwB,QACtC,OAAO,QAAQ,GAAe,MAC5B,CAAC,CAAC,EAAK,KAAW,EAAuB,KAAS,IAKjC,OAAO,CAAC,EAAW,IACjC,OAAK,GAAc,EAAQ,WACjC,IA/BW,gCA0CT,GAAM,GAA4B,GACvC,EACA,IACqB,CACrB,GAAI,CAAC,GAAY,CAAC,EAChB,MAAO,MAET,GAAI,CAAC,EACH,MAAO,GAET,GAAI,CAAC,EACH,MAAO,GAET,GAAM,GAAe,GAAI,KAAI,OAAO,KAAK,IACnC,EAAa,OAAO,KAAK,GAAU,OAAO,AAAC,GAC/C,EAAa,IAAI,IAEb,EAAS,OAAO,YACpB,EAAW,IAAI,AAAC,GAAc,CAC5B,EACA,OAAK,EAAS,IAAe,EAAU,OAG3C,MAAO,UACF,GACA,GACA,IA1BkC,6BCpIzC,GAAM,GAAkB,EACtB,GAEA,EAAW,OACT,CAAC,EAAU,IAAY,AAAC,GAAc,EAAQ,EAAS,IACvD,AAAC,GAAc,GALK,mBAYX,EAA2B,EACtC,GACkC,CAClC,GAAM,CACJ,IAAK,EACL,GAAI,EACJ,QACA,WACA,WACE,EAEJ,GAAI,MAAM,QAAQ,GAAW,CAC3B,GAAM,GAAa,EAAS,IAAI,AAAC,GAC/B,EAAgC,IAGlC,MAAO,AAAC,IAA6B,EAAE,IAAI,EAAgB,YAClD,MAAM,QAAQ,GAAU,CACjC,GAAM,GAAa,EAAQ,IAAI,AAAC,GAC9B,EAAgC,IAGlC,MAAO,AAAC,IAA6B,EAAE,GAAG,EAAgB,IAG5D,MAAO,AAAC,IACF,EAAW,EAAU,IAChB,EAAU,GAAO,KAAK,EAAW,EAAU,GAG7C,GA9B6B","names":[]}
|