@aws-amplify/ui-react-core 1.0.4 → 2.0.0

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 (63) hide show
  1. package/dist/esm/Authenticator/context/AuthenticatorContext.js +4 -1
  2. package/dist/esm/Authenticator/context/AuthenticatorProvider.js +8 -4
  3. package/dist/esm/Authenticator/hooks/useAuthenticator/constants.js +4 -2
  4. package/dist/esm/Authenticator/hooks/useAuthenticator/useAuthenticator.js +10 -10
  5. package/dist/esm/Authenticator/hooks/useAuthenticator/utils.js +13 -10
  6. package/dist/esm/InAppMessaging/context/InAppMessagingContext/InAppMessagingContext.js +5 -0
  7. package/dist/esm/InAppMessaging/context/InAppMessagingProvider/InAppMessagingProvider.js +26 -0
  8. package/dist/esm/InAppMessaging/hooks/useInAppMessaging/useInAppMessaging.js +19 -0
  9. package/dist/esm/InAppMessaging/hooks/useMessage/useMessage.js +78 -0
  10. package/dist/esm/InAppMessaging/hooks/useMessage/utils.js +43 -0
  11. package/dist/esm/InAppMessaging/utils/handleMessageAction.js +16 -0
  12. package/dist/esm/components/RenderNothing/RenderNothing.js +8 -0
  13. package/dist/esm/index.js +8 -1
  14. package/dist/esm/node_modules/tslib/tslib.es6.js +38 -0
  15. package/dist/esm/utils/index.js +5 -2
  16. package/dist/index.js +348 -6
  17. package/dist/{esm/Authenticator/hooks/useAuthenticator/types.js → types/Authenticator/context/__tests__/AuthenticatorProvider.test.d.ts} +0 -0
  18. package/dist/types/Authenticator/hooks/useAuthenticator/__tests__/useAuthenticator.spec.d.ts +1 -0
  19. package/dist/types/Authenticator/hooks/useAuthenticator/__tests__/utils.spec.d.ts +1 -0
  20. package/dist/types/Authenticator/hooks/useAuthenticator/types.d.ts +1 -9
  21. package/dist/types/InAppMessaging/context/InAppMessagingContext/InAppMessagingContext.d.ts +9 -0
  22. package/dist/types/InAppMessaging/context/InAppMessagingContext/index.d.ts +1 -0
  23. package/dist/types/InAppMessaging/context/InAppMessagingProvider/InAppMessagingProvider.d.ts +5 -0
  24. package/dist/types/InAppMessaging/context/InAppMessagingProvider/__tests__/InAppMessagingProvider.spec.d.ts +1 -0
  25. package/dist/types/InAppMessaging/context/InAppMessagingProvider/index.d.ts +1 -0
  26. package/dist/types/InAppMessaging/context/index.d.ts +2 -0
  27. package/dist/types/InAppMessaging/hooks/index.d.ts +2 -0
  28. package/dist/types/InAppMessaging/hooks/useInAppMessaging/__tests__/useInAppMessaging.spec.d.ts +1 -0
  29. package/dist/types/InAppMessaging/hooks/useInAppMessaging/index.d.ts +1 -0
  30. package/dist/types/InAppMessaging/hooks/useInAppMessaging/useInAppMessaging.d.ts +7 -0
  31. package/dist/types/InAppMessaging/hooks/useMessage/__tests__/useMessage.spec.d.ts +1 -0
  32. package/dist/types/InAppMessaging/hooks/useMessage/__tests__/utils.spec.d.ts +1 -0
  33. package/dist/types/InAppMessaging/hooks/useMessage/index.d.ts +1 -0
  34. package/dist/types/InAppMessaging/hooks/useMessage/types.d.ts +18 -0
  35. package/dist/types/InAppMessaging/hooks/useMessage/useMessage.d.ts +9 -0
  36. package/dist/types/InAppMessaging/hooks/useMessage/utils.d.ts +9 -0
  37. package/dist/{esm/Authenticator/index.js → types/InAppMessaging/index.d.ts} +3 -1
  38. package/dist/types/InAppMessaging/types.d.ts +52 -0
  39. package/dist/types/InAppMessaging/utils/__tests__/handleMessageAction.spec.d.ts +1 -0
  40. package/dist/types/InAppMessaging/utils/handleMessageAction.d.ts +9 -0
  41. package/dist/types/InAppMessaging/utils/index.d.ts +1 -0
  42. package/dist/types/__tests__/index.spec.d.ts +1 -0
  43. package/dist/types/components/RenderNothing/RenderNothing.d.ts +4 -0
  44. package/dist/types/components/RenderNothing/__tests__/RenderNothing.spec.d.ts +1 -0
  45. package/dist/types/components/RenderNothing/index.d.ts +1 -0
  46. package/dist/types/components/index.d.ts +1 -0
  47. package/dist/types/index.d.ts +1 -0
  48. package/dist/types/utils/__tests__/index.spec.d.ts +1 -0
  49. package/package.json +14 -9
  50. package/dist/Authenticator/context/AuthenticatorContext.js +0 -11
  51. package/dist/Authenticator/context/AuthenticatorProvider.js +0 -26
  52. package/dist/Authenticator/context/index.js +0 -10
  53. package/dist/Authenticator/hooks/index.js +0 -4
  54. package/dist/Authenticator/hooks/useAuthenticator/constants.js +0 -16
  55. package/dist/Authenticator/hooks/useAuthenticator/index.js +0 -8
  56. package/dist/Authenticator/hooks/useAuthenticator/types.js +0 -2
  57. package/dist/Authenticator/hooks/useAuthenticator/useAuthenticator.js +0 -38
  58. package/dist/Authenticator/hooks/useAuthenticator/utils.js +0 -53
  59. package/dist/Authenticator/index.js +0 -5
  60. package/dist/esm/Authenticator/context/index.js +0 -2
  61. package/dist/esm/Authenticator/hooks/index.js +0 -1
  62. package/dist/esm/Authenticator/hooks/useAuthenticator/index.js +0 -1
  63. package/dist/utils/index.js +0 -20
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthenticatorContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- /**
7
- * AuthenticatorContext serves static reference to the auth machine service.
8
- *
9
- * https://xstate.js.org/docs/recipes/react.html#context-provider
10
- */
11
- exports.AuthenticatorContext = react_1.default.createContext(null);
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const react_2 = require("@xstate/react");
6
- const ui_1 = require("@aws-amplify/ui");
7
- const AuthenticatorContext_1 = require("./AuthenticatorContext");
8
- function AuthenticatorProvider({ children, }) {
9
- /**
10
- * Based on use cases, developer might already have added another Provider
11
- * outside Authenticator. In that case, we sync the two providers by just
12
- * passing the parent value.
13
- *
14
- * TODO(BREAKING): enforce only one provider in App tree
15
- */
16
- const parentProviderVal = (0, react_1.useContext)(AuthenticatorContext_1.AuthenticatorContext);
17
- const service = (0, react_2.useInterpret)(ui_1.createAuthenticatorMachine);
18
- const value = (0, react_1.useMemo)(() => (!parentProviderVal ? { service } : parentProviderVal), [parentProviderVal, service]);
19
- const { service: activeService } = value;
20
- (0, react_1.useEffect)(() => {
21
- const unsubscribe = (0, ui_1.listenToAuthHub)(activeService);
22
- return unsubscribe;
23
- }, [activeService]);
24
- return (react_1.default.createElement(AuthenticatorContext_1.AuthenticatorContext.Provider, { value: value }, children));
25
- }
26
- exports.default = AuthenticatorProvider;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AuthenticatorContext = exports.AuthenticatorProvider = void 0;
7
- var AuthenticatorProvider_1 = require("./AuthenticatorProvider");
8
- Object.defineProperty(exports, "AuthenticatorProvider", { enumerable: true, get: function () { return __importDefault(AuthenticatorProvider_1).default; } });
9
- var AuthenticatorContext_1 = require("./AuthenticatorContext");
10
- Object.defineProperty(exports, "AuthenticatorContext", { enumerable: true, get: function () { return AuthenticatorContext_1.AuthenticatorContext; } });
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./useAuthenticator"), exports);
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMPONENT_ROUTE_KEYS = exports.USE_AUTHENTICATOR_ERROR = void 0;
4
- exports.USE_AUTHENTICATOR_ERROR = '`useAuthenticator` must be used inside an `Authenticator.Provider`.';
5
- exports.COMPONENT_ROUTE_KEYS = [
6
- 'signIn',
7
- 'signUp',
8
- 'forceNewPassword',
9
- 'confirmResetPassword',
10
- 'confirmSignIn',
11
- 'confirmSignUp',
12
- 'confirmVerifyUser',
13
- 'resetPassword',
14
- 'setupTOTP',
15
- 'verifyUser',
16
- ];
@@ -1,8 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useAuthenticator = void 0;
7
- var useAuthenticator_1 = require("./useAuthenticator");
8
- Object.defineProperty(exports, "useAuthenticator", { enumerable: true, get: function () { return __importDefault(useAuthenticator_1).default; } });
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const react_2 = require("@xstate/react");
6
- const ui_1 = require("@aws-amplify/ui");
7
- const context_1 = require("../../context");
8
- const constants_1 = require("./constants");
9
- const utils_1 = require("./utils");
10
- /**
11
- * [📖 Docs](https://ui.docs.amplify.aws/react/connected-components/authenticator/headless#useauthenticator-hook)
12
- */
13
- function useAuthenticator(selector) {
14
- const context = react_1.default.useContext(context_1.AuthenticatorContext);
15
- if (!context) {
16
- throw new Error(constants_1.USE_AUTHENTICATOR_ERROR);
17
- }
18
- const { service } = context;
19
- const { send } = service;
20
- const xstateSelector = (0, react_1.useCallback)((state) => (Object.assign({}, (0, ui_1.getServiceFacade)({ send, state }))), [send]);
21
- const comparator = selector ? (0, utils_1.getComparator)(selector) : utils_1.defaultComparator;
22
- const facade = (0, react_2.useSelector)(service, xstateSelector, comparator);
23
- const { route, user } = facade, rest = tslib_1.__rest(facade, ["route", "user"]);
24
- // do not memoize output. `service.getSnapshot` reference remains stable preventing
25
- // `fields` from updating with current form state on value changes
26
- const serviceSnapshot = service.getSnapshot();
27
- // legacy `formFields` values required until form state is removed from state machine
28
- const fields = (0, react_1.useMemo)(() => (0, utils_1.getLegacyFields)(route, serviceSnapshot), [route, serviceSnapshot]);
29
- return Object.assign(Object.assign({}, rest), { getTotpSecretCode: (0, utils_1.getTotpSecretCodeCallback)(user), route,
30
- user,
31
- /** @deprecated For internal use only */
32
- fields,
33
- /** @deprecated For internal use only */
34
- _state: serviceSnapshot,
35
- /** @deprecated For internal use only */
36
- _send: send });
37
- }
38
- exports.default = useAuthenticator;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLegacyFields = exports.isComponentRouteKey = exports.getTotpSecretCodeCallback = exports.getComparator = exports.areSelectorDepsEqual = exports.defaultComparator = void 0;
4
- const tslib_1 = require("tslib");
5
- const aws_amplify_1 = require("aws-amplify");
6
- const ui_1 = require("@aws-amplify/ui");
7
- const utils_1 = require("../../../utils");
8
- const constants_1 = require("./constants");
9
- const defaultComparator = () => false;
10
- exports.defaultComparator = defaultComparator;
11
- /**
12
- * Does an ordering and shallow comparison of each array value,
13
- * plus a value equality check for empty objects and arrays.
14
- */
15
- function areSelectorDepsEqual(currentDeps, nextDeps) {
16
- if (currentDeps.length !== nextDeps.length) {
17
- return false;
18
- }
19
- return currentDeps.every((currentDep, index) => {
20
- const nextDep = nextDeps[index];
21
- if ((0, utils_1.areEmptyArrays)(currentDep, nextDep) ||
22
- (0, utils_1.areEmptyObjects)(currentDep, nextDep)) {
23
- return true;
24
- }
25
- return currentDep === nextDep;
26
- });
27
- }
28
- exports.areSelectorDepsEqual = areSelectorDepsEqual;
29
- const getComparator = (selector) => (currentFacade, nextFacade) => {
30
- const currentSelectorDeps = selector(currentFacade);
31
- const nextSelectorDeps = selector(nextFacade);
32
- // Shallow compare the array values
33
- return areSelectorDepsEqual(currentSelectorDeps, nextSelectorDeps);
34
- };
35
- exports.getComparator = getComparator;
36
- const getTotpSecretCodeCallback = (user) => function getTotpSecretCode() {
37
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
- return yield aws_amplify_1.Auth.setupTOTP(user);
39
- });
40
- };
41
- exports.getTotpSecretCodeCallback = getTotpSecretCodeCallback;
42
- const isComponentRouteKey = (route) => constants_1.COMPONENT_ROUTE_KEYS.some((componentRoute) => componentRoute === route);
43
- exports.isComponentRouteKey = isComponentRouteKey;
44
- const flattenFormFields = (fields) => fields.flatMap(([name, options]) => (Object.assign({ name }, options)));
45
- /**
46
- * Retrieves legacy form field values from state machine for routes that have fields
47
- */
48
- const getLegacyFields = (route, state) =>
49
- // verifyUser is a component route, but does not have form fields
50
- (0, exports.isComponentRouteKey)(route) && route !== 'verifyUser'
51
- ? flattenFormFields((0, ui_1.getSortedFormFields)(route, state))
52
- : [];
53
- exports.getLegacyFields = getLegacyFields;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./context"), exports);
5
- tslib_1.__exportStar(require("./hooks"), exports);
@@ -1,2 +0,0 @@
1
- export { default as AuthenticatorProvider } from './AuthenticatorProvider';
2
- export { AuthenticatorContext } from './AuthenticatorContext';
@@ -1 +0,0 @@
1
- export * from './useAuthenticator';
@@ -1 +0,0 @@
1
- export { default as useAuthenticator } from './useAuthenticator';
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areEmptyObjects = exports.areEmptyArrays = void 0;
4
- const tslib_1 = require("tslib");
5
- const isEmpty_1 = tslib_1.__importDefault(require("lodash/isEmpty"));
6
- const isObject_1 = tslib_1.__importDefault(require("lodash/isObject"));
7
- function isEmptyArray(value) {
8
- return Array.isArray(value) && (0, isEmpty_1.default)(value);
9
- }
10
- function areEmptyArrays(...values) {
11
- return values.every(isEmptyArray);
12
- }
13
- exports.areEmptyArrays = areEmptyArrays;
14
- function isEmptyObject(value) {
15
- return (0, isObject_1.default)(value) && !Array.isArray(value) && (0, isEmpty_1.default)(value);
16
- }
17
- function areEmptyObjects(...values) {
18
- return values.every(isEmptyObject);
19
- }
20
- exports.areEmptyObjects = areEmptyObjects;