@clicktap/state 0.16.2 → 0.16.3

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 (59) hide show
  1. package/__mocks__/nanoid.d.ts +7 -0
  2. package/auth/AuthProvider.d.ts +255 -0
  3. package/auth/actions/addError.d.ts +8 -0
  4. package/auth/actions/clearErrors.d.ts +5 -0
  5. package/auth/actions/index.d.ts +8 -0
  6. package/auth/actions/notifyAuthenticated.d.ts +6 -0
  7. package/auth/actions/setAccessToken.d.ts +9 -0
  8. package/auth/actions/setIgnoreRefreshToken.d.ts +4 -0
  9. package/auth/actions/setUserContext.d.ts +9 -0
  10. package/auth/actions/unsetRefreshToken.d.ts +4 -0
  11. package/auth/actions/unsetUserContext.d.ts +8 -0
  12. package/auth/actors/authenticate.d.ts +16 -0
  13. package/auth/actors/index.d.ts +3 -0
  14. package/auth/actors/refreshAccessToken.d.ts +18 -0
  15. package/auth/actors/unauthenticate.d.ts +14 -0
  16. package/auth/auth.d.ts +115 -0
  17. package/auth/types.d.ts +50 -0
  18. package/helpers/request.d.ts +2 -0
  19. package/package.json +1 -1
  20. package/quote/CheckoutProvider.d.ts +276 -0
  21. package/quote/QuoteProvider.d.ts +491 -0
  22. package/quote/checkout/actions/changeStep.d.ts +8 -0
  23. package/quote/checkout/actions/index.d.ts +5 -0
  24. package/quote/checkout/actions/nextStep.d.ts +8 -0
  25. package/quote/checkout/actions/resetCheckout.d.ts +104 -0
  26. package/quote/checkout/actions/updateQuote.d.ts +216 -0
  27. package/quote/checkout/actions/updateSuccessId.d.ts +8 -0
  28. package/quote/checkout/actors/index.d.ts +2 -0
  29. package/quote/checkout/actors/placeOrder.d.ts +20 -0
  30. package/quote/checkout/actors/submitStepData.d.ts +19 -0
  31. package/quote/checkout/guards/index.d.ts +1 -0
  32. package/quote/checkout/guards/quoteExists.d.ts +10 -0
  33. package/quote/checkout/types.d.ts +55 -0
  34. package/quote/checkout.d.ts +85 -0
  35. package/quote/quote/actions/addItems.d.ts +217 -0
  36. package/quote/quote/actions/index.d.ts +9 -0
  37. package/quote/quote/actions/notifyAddItems.d.ts +6 -0
  38. package/quote/quote/actions/notifyRemoveItems.d.ts +6 -0
  39. package/quote/quote/actions/notifyUpdateItems.d.ts +6 -0
  40. package/quote/quote/actions/refresh.d.ts +216 -0
  41. package/quote/quote/actions/removeItems.d.ts +217 -0
  42. package/quote/quote/actions/reset.d.ts +40 -0
  43. package/quote/quote/actions/syncAccessToken.d.ts +100 -0
  44. package/quote/quote/actions/updateItems.d.ts +217 -0
  45. package/quote/quote/actors/addItems.d.ts +24 -0
  46. package/quote/quote/actors/index.d.ts +4 -0
  47. package/quote/quote/actors/refresh.d.ts +22 -0
  48. package/quote/quote/actors/removeItems.d.ts +24 -0
  49. package/quote/quote/actors/updateItems.d.ts +24 -0
  50. package/quote/quote/guards/canRefresh.d.ts +10 -0
  51. package/quote/quote/guards/hasItems.d.ts +5 -0
  52. package/quote/quote/guards/index.d.ts +2 -0
  53. package/quote/quote/types.d.ts +291 -0
  54. package/quote/quote.d.ts +155 -0
  55. package/quote/types.d.ts +5 -0
  56. package/toast/ToastProvider.d.ts +93 -0
  57. package/toast/timer.d.ts +22 -0
  58. package/toast/toast.d.ts +82 -0
  59. package/toast/types.d.ts +58 -0
@@ -0,0 +1,155 @@
1
+ import { DeepPartial } from './types';
2
+ import { QuoteMachineContext } from './quote/types';
3
+ export declare const quoteMachine: import('xstate').StateMachine<QuoteMachineContext, import('./quote/types').SetQuoteEmptyEvent | import('./quote/types').SetQuoteActiveEvent | import('./quote/types').AddItemsEvent | import('./quote/types').RemoveItemsEvent | import('./quote/types').UpdateItemsEvent | import('./quote/types').ClearItemsEvent | import('./quote/types').RefreshEvent | import('./quote/types').ResetEvent | import('./quote/types').ApplyPromotionEvent | import('./quote/types').RemovePromotionEvent | import('./quote/types').AddAddressEvent | import('./quote/types').RemoveAddressEvent | import('./quote/types').ApplyPaymentMethodEvent | import('./quote/types').AddRewardEvent | import('./quote/types').RemoveRewardEvent | import('./quote/types').AddStoreCreditEvent | import('./quote/types').RemoveStoreCreditEvent | import('./quote/types').AddGiftCardEvent | import('./quote/types').RemoveGiftCardEvent | import('./quote/types').SyncAccessTokenEvent | import('xstate').DoneActorEvent<import('./quote/types').AddItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').RemoveItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').UpdateItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').ClearItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').RefreshSuccessEvent>, {
4
+ [x: string]: import('xstate').ActorRef<import('xstate').PromiseSnapshot<import('./quote/types').RefreshSuccessEvent, import('./quote/actors').RefreshInput>, {
5
+ [k: string]: unknown;
6
+ type: string;
7
+ }, import('xstate').EventObject> | import('xstate').ActorRef<import('xstate').PromiseSnapshot<import('./quote/types').AddItemsSuccessEvent, import('./quote/actors').AddItemsInput>, {
8
+ [k: string]: unknown;
9
+ type: string;
10
+ }, import('xstate').EventObject> | import('xstate').ActorRef<import('xstate').PromiseSnapshot<import('./quote/types').RemoveItemsSuccessEvent, import('./quote/actors').RemoveItemsInput>, {
11
+ [k: string]: unknown;
12
+ type: string;
13
+ }, import('xstate').EventObject> | import('xstate').ActorRef<import('xstate').PromiseSnapshot<import('./quote/types').UpdateItemsSuccessEvent, import('./quote/actors').UpdateItemsInput>, {
14
+ [k: string]: unknown;
15
+ type: string;
16
+ }, import('xstate').EventObject> | undefined;
17
+ }, import('xstate').Values<{
18
+ refresh: {
19
+ src: "refresh";
20
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').RefreshSuccessEvent, import('./quote/actors').RefreshInput>;
21
+ id: string | undefined;
22
+ };
23
+ addItems: {
24
+ src: "addItems";
25
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').AddItemsSuccessEvent, import('./quote/actors').AddItemsInput>;
26
+ id: string | undefined;
27
+ };
28
+ removeItems: {
29
+ src: "removeItems";
30
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').RemoveItemsSuccessEvent, import('./quote/actors').RemoveItemsInput>;
31
+ id: string | undefined;
32
+ };
33
+ updateItems: {
34
+ src: "updateItems";
35
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').UpdateItemsSuccessEvent, import('./quote/actors').UpdateItemsInput>;
36
+ id: string | undefined;
37
+ };
38
+ }>, import('xstate').Values<{
39
+ refresh: {
40
+ type: "refresh";
41
+ params: import('xstate').NonReducibleUnknown;
42
+ };
43
+ addItems: {
44
+ type: "addItems";
45
+ params: import('xstate').NonReducibleUnknown;
46
+ };
47
+ removeItems: {
48
+ type: "removeItems";
49
+ params: import('xstate').NonReducibleUnknown;
50
+ };
51
+ updateItems: {
52
+ type: "updateItems";
53
+ params: import('xstate').NonReducibleUnknown;
54
+ };
55
+ notifyAddItems: {
56
+ type: "notifyAddItems";
57
+ params: import('xstate').NonReducibleUnknown;
58
+ };
59
+ notifyRemoveItems: {
60
+ type: "notifyRemoveItems";
61
+ params: import('xstate').NonReducibleUnknown;
62
+ };
63
+ notifyUpdateItems: {
64
+ type: "notifyUpdateItems";
65
+ params: import('xstate').NonReducibleUnknown;
66
+ };
67
+ reset: {
68
+ type: "reset";
69
+ params: import('xstate').NonReducibleUnknown;
70
+ };
71
+ syncAccessToken: {
72
+ type: "syncAccessToken";
73
+ params: import('xstate').NonReducibleUnknown;
74
+ };
75
+ }>, import('xstate').Values<{
76
+ canRefresh: {
77
+ type: "canRefresh";
78
+ params: unknown;
79
+ };
80
+ hasItems: {
81
+ type: "hasItems";
82
+ params: unknown;
83
+ };
84
+ }>, never, "active" | "refreshing" | "uninitialized" | "initializing" | "empty" | "addingItems" | "updatingItems" | "removingItems" | "resetting" | "checkingItems", string, {
85
+ initialContext: DeepPartial<QuoteMachineContext>;
86
+ initialState?: string | undefined;
87
+ }, import('xstate').NonReducibleUnknown, import('./quote/types').AddItemsEmittedEvent | import('./quote/types').RemoveItemsEmittedEvent | import('./quote/types').UpdateItemsEmittedEvent, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./quote/types').SetQuoteEmptyEvent | import('./quote/types').SetQuoteActiveEvent | import('./quote/types').AddItemsEvent | import('./quote/types').RemoveItemsEvent | import('./quote/types').UpdateItemsEvent | import('./quote/types').ClearItemsEvent | import('./quote/types').RefreshEvent | import('./quote/types').ResetEvent | import('./quote/types').ApplyPromotionEvent | import('./quote/types').RemovePromotionEvent | import('./quote/types').AddAddressEvent | import('./quote/types').RemoveAddressEvent | import('./quote/types').ApplyPaymentMethodEvent | import('./quote/types').AddRewardEvent | import('./quote/types').RemoveRewardEvent | import('./quote/types').AddStoreCreditEvent | import('./quote/types').RemoveStoreCreditEvent | import('./quote/types').AddGiftCardEvent | import('./quote/types').RemoveGiftCardEvent | import('./quote/types').SyncAccessTokenEvent | import('xstate').DoneActorEvent<import('./quote/types').AddItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').RemoveItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').UpdateItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').ClearItemsSuccessEvent> | import('xstate').DoneActorEvent<import('./quote/types').RefreshSuccessEvent>, import('xstate').Values<{
88
+ refresh: {
89
+ src: "refresh";
90
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').RefreshSuccessEvent, import('./quote/actors').RefreshInput>;
91
+ id: string | undefined;
92
+ };
93
+ addItems: {
94
+ src: "addItems";
95
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').AddItemsSuccessEvent, import('./quote/actors').AddItemsInput>;
96
+ id: string | undefined;
97
+ };
98
+ removeItems: {
99
+ src: "removeItems";
100
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').RemoveItemsSuccessEvent, import('./quote/actors').RemoveItemsInput>;
101
+ id: string | undefined;
102
+ };
103
+ updateItems: {
104
+ src: "updateItems";
105
+ logic: import('xstate').PromiseActorLogic<import('./quote/types').UpdateItemsSuccessEvent, import('./quote/actors').UpdateItemsInput>;
106
+ id: string | undefined;
107
+ };
108
+ }>, import('xstate').Values<{
109
+ refresh: {
110
+ type: "refresh";
111
+ params: import('xstate').NonReducibleUnknown;
112
+ };
113
+ addItems: {
114
+ type: "addItems";
115
+ params: import('xstate').NonReducibleUnknown;
116
+ };
117
+ removeItems: {
118
+ type: "removeItems";
119
+ params: import('xstate').NonReducibleUnknown;
120
+ };
121
+ updateItems: {
122
+ type: "updateItems";
123
+ params: import('xstate').NonReducibleUnknown;
124
+ };
125
+ notifyAddItems: {
126
+ type: "notifyAddItems";
127
+ params: import('xstate').NonReducibleUnknown;
128
+ };
129
+ notifyRemoveItems: {
130
+ type: "notifyRemoveItems";
131
+ params: import('xstate').NonReducibleUnknown;
132
+ };
133
+ notifyUpdateItems: {
134
+ type: "notifyUpdateItems";
135
+ params: import('xstate').NonReducibleUnknown;
136
+ };
137
+ reset: {
138
+ type: "reset";
139
+ params: import('xstate').NonReducibleUnknown;
140
+ };
141
+ syncAccessToken: {
142
+ type: "syncAccessToken";
143
+ params: import('xstate').NonReducibleUnknown;
144
+ };
145
+ }>, import('xstate').Values<{
146
+ canRefresh: {
147
+ type: "canRefresh";
148
+ params: unknown;
149
+ };
150
+ hasItems: {
151
+ type: "hasItems";
152
+ params: unknown;
153
+ };
154
+ }>, never, string, import('./quote/types').AddItemsEmittedEvent | import('./quote/types').RemoveItemsEmittedEvent | import('./quote/types').UpdateItemsEmittedEvent>>;
155
+ export default quoteMachine;
@@ -0,0 +1,5 @@
1
+ /** @todo is this level of deep partial necessary? */
2
+ export type DeepPartial<T> = {
3
+ [P in keyof T]?: T[P] extends Array<infer U> ? Array<DeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T[P] extends Date | Function | RegExp ? T[P] : T[P] extends object ? DeepPartial<T[P]> : T[P];
4
+ };
5
+ export default DeepPartial;
@@ -0,0 +1,93 @@
1
+ import { Actor } from 'xstate';
2
+ import { ReactNode } from 'react';
3
+ import { toastMachine } from './toast';
4
+ export interface ToastContextType {
5
+ toastActor: Actor<typeof toastMachine>;
6
+ }
7
+ export declare const ToastContext: import('react').Context<Actor<import('xstate').StateMachine<import('./types').ToastMachineContext, import('./types').AddItemEvent | import('./types').RemoveItemEvent | import('./types').SetToastIdleEvent | import('./types').SetToastActiveEvent | import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').TimerDoneEvent, {
8
+ [x: string]: import('xstate').ActorRef<import('xstate').MachineSnapshot<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
9
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
10
+ interval: number;
11
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
12
+ }, "running" | "paused" | "completed", string, import('xstate').NonReducibleUnknown, import('xstate').MetaObject>, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, import('xstate').EventObject> | undefined;
13
+ }, {
14
+ src: "timer";
15
+ logic: import('xstate').StateMachine<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
16
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
17
+ interval: number;
18
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
19
+ }, {
20
+ src: "tick";
21
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
22
+ interval: number;
23
+ }>;
24
+ id: string | undefined;
25
+ }, never, never, never, "running" | "paused" | "completed", string, {
26
+ initialContext: Partial<import('./types').TimerContext>;
27
+ initialState?: string | undefined;
28
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
29
+ src: "tick";
30
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
31
+ interval: number;
32
+ }>;
33
+ id: string | undefined;
34
+ }, never, never, never, string, import('xstate').EventObject>>;
35
+ id: string | undefined;
36
+ }, import('xstate').Values<{
37
+ addItem: {
38
+ type: "addItem";
39
+ params: import('xstate').NonReducibleUnknown;
40
+ };
41
+ removeItem: {
42
+ type: "removeItem";
43
+ params: import('xstate').NonReducibleUnknown;
44
+ };
45
+ }>, {
46
+ type: "itemHasTimeout";
47
+ params: unknown;
48
+ }, "ITEM_TIMEOUT", "active" | "idle" | "adding" | "removing", string, {
49
+ initialContext: Partial<import('./types').ToastMachineContext>;
50
+ initialState?: string | undefined;
51
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').AddItemEvent | import('./types').RemoveItemEvent | import('./types').SetToastIdleEvent | import('./types').SetToastActiveEvent | import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').TimerDoneEvent, {
52
+ src: "timer";
53
+ logic: import('xstate').StateMachine<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
54
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
55
+ interval: number;
56
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
57
+ }, {
58
+ src: "tick";
59
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
60
+ interval: number;
61
+ }>;
62
+ id: string | undefined;
63
+ }, never, never, never, "running" | "paused" | "completed", string, {
64
+ initialContext: Partial<import('./types').TimerContext>;
65
+ initialState?: string | undefined;
66
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
67
+ src: "tick";
68
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
69
+ interval: number;
70
+ }>;
71
+ id: string | undefined;
72
+ }, never, never, never, string, import('xstate').EventObject>>;
73
+ id: string | undefined;
74
+ }, import('xstate').Values<{
75
+ addItem: {
76
+ type: "addItem";
77
+ params: import('xstate').NonReducibleUnknown;
78
+ };
79
+ removeItem: {
80
+ type: "removeItem";
81
+ params: import('xstate').NonReducibleUnknown;
82
+ };
83
+ }>, {
84
+ type: "itemHasTimeout";
85
+ params: unknown;
86
+ }, "ITEM_TIMEOUT", string, import('xstate').EventObject>>>>;
87
+ export declare const useToast: () => ToastContextType;
88
+ type Props = {
89
+ children: ReactNode;
90
+ actor: Actor<typeof toastMachine>;
91
+ };
92
+ export declare function ToastProvider({ children, actor }: Props): import("react/jsx-runtime").JSX.Element;
93
+ export {};
@@ -0,0 +1,22 @@
1
+ import { TimerContext, TimerTickEvent } from './types';
2
+ export declare const timerMachine: import('xstate').StateMachine<TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
3
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
4
+ interval: number;
5
+ }>, TimerTickEvent, import('xstate').EventObject> | undefined;
6
+ }, {
7
+ src: "tick";
8
+ logic: import('xstate').CallbackActorLogic<TimerTickEvent, {
9
+ interval: number;
10
+ }>;
11
+ id: string | undefined;
12
+ }, never, never, never, "running" | "paused" | "completed", string, {
13
+ initialContext: Partial<TimerContext>;
14
+ initialState?: string | undefined;
15
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
16
+ src: "tick";
17
+ logic: import('xstate').CallbackActorLogic<TimerTickEvent, {
18
+ interval: number;
19
+ }>;
20
+ id: string | undefined;
21
+ }, never, never, never, string, import('xstate').EventObject>>;
22
+ export default timerMachine;
@@ -0,0 +1,82 @@
1
+ import { ToastMachineContext } from './types';
2
+ export declare const toastMachine: import('xstate').StateMachine<ToastMachineContext, import('./types').AddItemEvent | import('./types').RemoveItemEvent | import('./types').SetToastIdleEvent | import('./types').SetToastActiveEvent | import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').TimerDoneEvent, {
3
+ [x: string]: import('xstate').ActorRef<import('xstate').MachineSnapshot<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
4
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
5
+ interval: number;
6
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
7
+ }, "running" | "paused" | "completed", string, import('xstate').NonReducibleUnknown, import('xstate').MetaObject>, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, import('xstate').EventObject> | undefined;
8
+ }, {
9
+ src: "timer";
10
+ logic: import('xstate').StateMachine<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
11
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
12
+ interval: number;
13
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
14
+ }, {
15
+ src: "tick";
16
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
17
+ interval: number;
18
+ }>;
19
+ id: string | undefined;
20
+ }, never, never, never, "running" | "paused" | "completed", string, {
21
+ initialContext: Partial<import('./types').TimerContext>;
22
+ initialState?: string | undefined;
23
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
24
+ src: "tick";
25
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
26
+ interval: number;
27
+ }>;
28
+ id: string | undefined;
29
+ }, never, never, never, string, import('xstate').EventObject>>;
30
+ id: string | undefined;
31
+ }, import('xstate').Values<{
32
+ addItem: {
33
+ type: "addItem";
34
+ params: import('xstate').NonReducibleUnknown;
35
+ };
36
+ removeItem: {
37
+ type: "removeItem";
38
+ params: import('xstate').NonReducibleUnknown;
39
+ };
40
+ }>, {
41
+ type: "itemHasTimeout";
42
+ params: unknown;
43
+ }, "ITEM_TIMEOUT", "active" | "idle" | "adding" | "removing", string, {
44
+ initialContext: Partial<ToastMachineContext>;
45
+ initialState?: string | undefined;
46
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').AddItemEvent | import('./types').RemoveItemEvent | import('./types').SetToastIdleEvent | import('./types').SetToastActiveEvent | import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').TimerDoneEvent, {
47
+ src: "timer";
48
+ logic: import('xstate').StateMachine<import('./types').TimerContext, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
49
+ [x: string]: import('xstate').ActorRef<import('xstate').CallbackSnapshot<{
50
+ interval: number;
51
+ }>, import('./types').TimerTickEvent, import('xstate').EventObject> | undefined;
52
+ }, {
53
+ src: "tick";
54
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
55
+ interval: number;
56
+ }>;
57
+ id: string | undefined;
58
+ }, never, never, never, "running" | "paused" | "completed", string, {
59
+ initialContext: Partial<import('./types').TimerContext>;
60
+ initialState?: string | undefined;
61
+ }, import('xstate').NonReducibleUnknown, import('xstate').EventObject, import('xstate').MetaObject, import('xstate').ResolveTypegenMeta<import('xstate').TypegenDisabled, import('./types').ResumeTimerEvent | import('./types').PauseTimerEvent | import('./types').StartTimerEvent | import('./types').TimerTickEvent | import('./types').TimerDurationUpdateEvent | import('./types').ResetTimerEvent, {
62
+ src: "tick";
63
+ logic: import('xstate').CallbackActorLogic<import('./types').TimerTickEvent, {
64
+ interval: number;
65
+ }>;
66
+ id: string | undefined;
67
+ }, never, never, never, string, import('xstate').EventObject>>;
68
+ id: string | undefined;
69
+ }, import('xstate').Values<{
70
+ addItem: {
71
+ type: "addItem";
72
+ params: import('xstate').NonReducibleUnknown;
73
+ };
74
+ removeItem: {
75
+ type: "removeItem";
76
+ params: import('xstate').NonReducibleUnknown;
77
+ };
78
+ }>, {
79
+ type: "itemHasTimeout";
80
+ params: unknown;
81
+ }, "ITEM_TIMEOUT", string, import('xstate').EventObject>>;
82
+ export default toastMachine;
@@ -0,0 +1,58 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ /** @todo figure out TS here */
3
+ export type ToastItem = {
4
+ id: string | null;
5
+ duration: number;
6
+ element: ReactNode;
7
+ };
8
+ export interface ToastMachineContext {
9
+ /** @todo create proper type for Array items */
10
+ items: Array<ToastItem>;
11
+ order: 'asc' | 'desc';
12
+ duration: number;
13
+ activeItem: string | null;
14
+ }
15
+ export interface AddItemEvent {
16
+ type: 'ADD_ITEM';
17
+ item: ReactElement;
18
+ duration?: number;
19
+ }
20
+ export interface RemoveItemEvent {
21
+ type: 'REMOVE_ITEM';
22
+ }
23
+ export interface SetToastIdleEvent {
24
+ type: 'SET_IDLE';
25
+ }
26
+ export interface SetToastActiveEvent {
27
+ type: 'SET_ACTIVE';
28
+ }
29
+ export interface ResumeTimerEvent {
30
+ type: 'RESUME_TIMER';
31
+ }
32
+ export interface PauseTimerEvent {
33
+ type: 'PAUSE_TIMER';
34
+ }
35
+ export interface TimerDoneEvent {
36
+ type: 'xstate.done.actor.timer';
37
+ }
38
+ export type ToastMachineEvents = AddItemEvent | RemoveItemEvent | SetToastIdleEvent | SetToastActiveEvent | ResumeTimerEvent | PauseTimerEvent | TimerDoneEvent;
39
+ export interface TimerContext {
40
+ elapsed: number;
41
+ duration: number;
42
+ interval: number;
43
+ intervalId: NodeJS.Timer | null;
44
+ }
45
+ export type StartTimerEvent = {
46
+ type: 'START_TIMER';
47
+ };
48
+ export type TimerTickEvent = {
49
+ type: 'TICK';
50
+ };
51
+ export type TimerDurationUpdateEvent = {
52
+ type: 'DURATION.UPDATE';
53
+ value: number;
54
+ };
55
+ export type ResetTimerEvent = {
56
+ type: 'RESET_TIMER';
57
+ };
58
+ export type TimerEvents = StartTimerEvent | ResumeTimerEvent | PauseTimerEvent | TimerTickEvent | TimerDurationUpdateEvent | ResetTimerEvent;