@zag-js/toast 0.28.0 → 0.29.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.
package/README.md CHANGED
@@ -5,9 +5,9 @@ Core logic for the toast widget implemented as a state machine
5
5
  ## Installation
6
6
 
7
7
  ```sh
8
- yarn add @zag-js/toast
8
+ yarn add @zag-js/toast
9
9
  # or
10
- npm i @zag-js/toast
10
+ npm i @zag-js/toast
11
11
  ```
12
12
 
13
13
  ## Contribution
package/dist/index.d.mts CHANGED
@@ -5,7 +5,7 @@ import * as _zag_js_anatomy from '@zag-js/anatomy';
5
5
 
6
6
  type Type = "success" | "error" | "loading" | "info" | "custom";
7
7
  type Placement = "top-start" | "top" | "top-end" | "bottom-start" | "bottom" | "bottom-end";
8
- interface BaseOptions {
8
+ interface GlobalToastOptions {
9
9
  /**
10
10
  * Whether to pause toast when the user leaves the browser tab
11
11
  */
@@ -66,8 +66,8 @@ interface ToastOptions {
66
66
  */
67
67
  onUpdate?: VoidFunction;
68
68
  }
69
- type Options = Partial<ToastOptions & BaseOptions>;
70
- interface MachineContext extends BaseOptions, RootProperties, CommonProperties, Omit<ToastOptions, "removeDelay"> {
69
+ type Options = Partial<ToastOptions & GlobalToastOptions>;
70
+ interface MachineContext extends GlobalToastOptions, RootProperties, CommonProperties, Omit<ToastOptions, "removeDelay"> {
71
71
  /**
72
72
  * The duration for the toast to kept alive before it is removed.
73
73
  * Useful for exit transitions.
@@ -93,7 +93,7 @@ interface MachineState {
93
93
  type State = StateMachine.State<MachineContext, MachineState>;
94
94
  type Send = StateMachine.Send;
95
95
  type Service = Machine<MachineContext, MachineState>;
96
- interface GroupPublicContext extends BaseOptions, DirectionProperty, CommonProperties {
96
+ interface GroupPublicContext extends GlobalToastOptions, DirectionProperty, CommonProperties {
97
97
  /**
98
98
  * The gutter or spacing between toasts
99
99
  */
@@ -271,4 +271,4 @@ declare const group: {
271
271
  machine: typeof groupMachine;
272
272
  };
273
273
 
274
- export { MachineApi as Api, GroupMachineApi as GroupApi, GroupMachineContext, MachineContext, MachineState, Placement, PromiseOptions, Service, ToastOptions, Type, anatomy, connect, createToastMachine as createMachine, group };
274
+ export { MachineApi as Api, GroupMachineApi as GroupApi, GroupMachineContext, GroupProps, GroupState, MachineContext, MachineState, Placement, PromiseOptions, Service, ToastOptions, Type, anatomy, connect, createToastMachine as createMachine, group };
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ import * as _zag_js_anatomy from '@zag-js/anatomy';
5
5
 
6
6
  type Type = "success" | "error" | "loading" | "info" | "custom";
7
7
  type Placement = "top-start" | "top" | "top-end" | "bottom-start" | "bottom" | "bottom-end";
8
- interface BaseOptions {
8
+ interface GlobalToastOptions {
9
9
  /**
10
10
  * Whether to pause toast when the user leaves the browser tab
11
11
  */
@@ -66,8 +66,8 @@ interface ToastOptions {
66
66
  */
67
67
  onUpdate?: VoidFunction;
68
68
  }
69
- type Options = Partial<ToastOptions & BaseOptions>;
70
- interface MachineContext extends BaseOptions, RootProperties, CommonProperties, Omit<ToastOptions, "removeDelay"> {
69
+ type Options = Partial<ToastOptions & GlobalToastOptions>;
70
+ interface MachineContext extends GlobalToastOptions, RootProperties, CommonProperties, Omit<ToastOptions, "removeDelay"> {
71
71
  /**
72
72
  * The duration for the toast to kept alive before it is removed.
73
73
  * Useful for exit transitions.
@@ -93,7 +93,7 @@ interface MachineState {
93
93
  type State = StateMachine.State<MachineContext, MachineState>;
94
94
  type Send = StateMachine.Send;
95
95
  type Service = Machine<MachineContext, MachineState>;
96
- interface GroupPublicContext extends BaseOptions, DirectionProperty, CommonProperties {
96
+ interface GroupPublicContext extends GlobalToastOptions, DirectionProperty, CommonProperties {
97
97
  /**
98
98
  * The gutter or spacing between toasts
99
99
  */
@@ -271,4 +271,4 @@ declare const group: {
271
271
  machine: typeof groupMachine;
272
272
  };
273
273
 
274
- export { MachineApi as Api, GroupMachineApi as GroupApi, GroupMachineContext, MachineContext, MachineState, Placement, PromiseOptions, Service, ToastOptions, Type, anatomy, connect, createToastMachine as createMachine, group };
274
+ export { MachineApi as Api, GroupMachineApi as GroupApi, GroupMachineContext, GroupProps, GroupState, MachineContext, MachineState, Placement, PromiseOptions, Service, ToastOptions, Type, anatomy, connect, createToastMachine as createMachine, group };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/toast-group.connect.ts","../src/toast.anatomy.ts","../src/toast.dom.ts","../src/toast.utils.ts","../src/toast-group.machine.ts","../src/toast.machine.ts","../src/toast.connect.ts"],"sourcesContent":["import { groupConnect } from \"./toast-group.connect\"\nimport { groupMachine } from \"./toast-group.machine\"\nimport { createToastMachine as createMachine } from \"./toast.machine\"\n\nexport { anatomy } from \"./toast.anatomy\"\nexport { connect } from \"./toast.connect\"\nexport type {\n MachineApi as Api,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n MachineContext,\n MachineState,\n Placement,\n PromiseOptions,\n Service,\n ToastOptions,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n","import { subscribe } from \"@zag-js/core\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { runIfFn, uuid } from \"@zag-js/utils\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { GroupMachineApi, GroupSend, GroupState, Options } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport let toaster = {} as GroupMachineApi\n\nexport function groupConnect<T extends PropTypes>(\n state: GroupState,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T> {\n //\n const toastsByPlacement = getToastsByPlacement(state.context.toasts)\n\n function isVisible(id: string) {\n if (!state.context.toasts.length) return false\n return !!state.context.toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options) {\n if (!isVisible(id)) return\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options) {\n const { id } = options\n const visible = id ? isVisible(id) : false\n if (visible && id != null) {\n return update(id, options)\n } else {\n return create(options)\n }\n }\n\n function dismiss(id?: string) {\n if (id == null) {\n send(\"DISMISS_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"DISMISS_TOAST\", id })\n }\n }\n\n return {\n count: state.context.count,\n toasts: state.context.toasts,\n toastsByPlacement,\n isVisible,\n\n create,\n update,\n upsert,\n dismiss,\n\n remove(id) {\n if (id == null) {\n send(\"REMOVE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"REMOVE_TOAST\", id })\n }\n },\n\n dismissByPlacement(placement) {\n const toasts = toastsByPlacement[placement]\n if (toasts) {\n toasts.forEach((toast) => dismiss(toast.id))\n }\n },\n loading(options) {\n return upsert({ ...options, type: \"loading\" })\n },\n success(options) {\n return upsert({ ...options, type: \"success\" })\n },\n error(options) {\n return upsert({ ...options, type: \"error\" })\n },\n\n promise(promise, options, shared = {}) {\n const id = upsert({ ...shared, ...options.loading, type: \"loading\" })\n\n promise\n .then((response) => {\n const successOptions = runIfFn(options.success, response)\n upsert({ ...shared, ...successOptions, id, type: \"success\" })\n })\n .catch((error) => {\n const errorOptions = runIfFn(options.error, error)\n upsert({ ...shared, ...errorOptions, id, type: \"error\" })\n })\n\n return promise\n },\n\n pause(id) {\n if (id == null) {\n send(\"PAUSE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"PAUSE_TOAST\", id })\n }\n },\n\n resume(id) {\n if (id == null) {\n send(\"RESUME_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"RESUME_TOAST\", id })\n }\n },\n\n getGroupProps(options) {\n const { placement, label = \"Notifications\" } = options\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label}`,\n id: dom.getGroupId(placement),\n \"data-placement\": placement,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n })\n },\n\n subscribe(fn) {\n return subscribe(state.context.toasts, () => fn(state.context.toasts))\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\"group\", \"root\", \"title\", \"description\", \"closeTrigger\")\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement } from \"./toast.types\"\n\nexport const dom = createScope({\n getGroupId: (placement: Placement) => `toast-group:${placement}`,\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getTitleId: (ctx: Ctx) => `toast:${ctx.id}:title`,\n getDescriptionId: (ctx: Ctx) => `toast:${ctx.id}:description`,\n getCloseTriggerId: (ctx: Ctx) => `toast${ctx.id}:close`,\n})\n","import type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement(toasts: Service[]) {\n const result: Partial<Record<Placement, Service[]>> = {}\n\n for (const toast of toasts) {\n const placement = toast.state.context.placement!\n result[placement] ||= []\n result[placement]!.push(toast)\n }\n\n return result\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n custom: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: MachineContext[\"type\"]) {\n return duration ?? defaultTimeouts[type]\n}\n\nexport function getGroupPlacementStyle(ctx: GroupMachineContext, placement: Placement): Style {\n const offset = ctx.offsets\n const computedOffset =\n typeof offset === \"string\" ? { left: offset, right: offset, bottom: offset, top: offset } : offset\n\n const rtl = ctx.dir === \"rtl\"\n const computedPlacement = placement\n .replace(\"-start\", rtl ? \"-right\" : \"-left\")\n .replace(\"-end\", rtl ? \"-left\" : \"-right\")\n\n const isRighty = computedPlacement.includes(\"right\")\n const isLefty = computedPlacement.includes(\"left\")\n\n const styles: Style = {\n position: \"fixed\",\n pointerEvents: ctx.count > 0 ? undefined : \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n \"--toast-gutter\": ctx.gutter,\n zIndex: ctx.zIndex,\n }\n\n let alignItems: Style[\"alignItems\"] = \"center\"\n if (isRighty) alignItems = \"flex-end\"\n if (isLefty) alignItems = \"flex-start\"\n\n styles.alignItems = alignItems\n\n if (computedPlacement.includes(\"top\")) {\n const offset = computedOffset.top\n styles.top = `calc(env(safe-area-inset-top, 0px) + ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `calc(env(safe-area-inset-bottom, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.right = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.left = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type { GroupMachineContext, MachineContext, UserDefinedGroupContext } from \"./toast.types\"\n\nexport function groupMachine(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext>({\n id: \"toaster\",\n initial: \"active\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n toasts: [],\n gutter: \"1rem\",\n zIndex: MAX_Z_INDEX,\n pauseOnPageIdle: false,\n pauseOnInteraction: true,\n offsets: { left: \"0px\", right: \"0px\", top: \"0px\", bottom: \"0px\" },\n ...ctx,\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n on: {\n SETUP: {},\n\n PAUSE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"PAUSE\", evt.id)\n },\n },\n\n PAUSE_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n },\n\n RESUME_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"RESUME\", evt.id)\n },\n },\n\n RESUME_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n },\n\n ADD_TOAST: {\n guard: (ctx) => ctx.toasts.length < ctx.max,\n actions: (ctx, evt, { self }) => {\n const options: MachineContext = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n render: ctx.render,\n ...evt.toast,\n pauseOnPageIdle: ctx.pauseOnPageIdle,\n pauseOnInteraction: ctx.pauseOnInteraction,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n }\n const toast = createToastMachine(options)\n const actor = self.spawn(toast)\n ctx.toasts.push(actor)\n },\n },\n\n UPDATE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n },\n\n DISMISS_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"DISMISS\", evt.id)\n },\n },\n\n DISMISS_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n },\n\n REMOVE_TOAST: {\n actions: (ctx, evt, { self }) => {\n self.stopChild(evt.id)\n const index = ctx.toasts.findIndex((toast) => toast.id === evt.id)\n ctx.toasts.splice(index, 1)\n },\n },\n\n REMOVE_ALL: {\n actions: (ctx, _evt, { self }) => {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n while (ctx.toasts.length) ctx.toasts.pop()\n },\n },\n },\n })\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineContext, MachineState, Options } from \"./toast.types\"\nimport { getToastDuration } from \"./toast.utils\"\n\nconst { not, and, or } = guards\n\nexport function createToastMachine(options: Options = {}) {\n const { type = \"info\", duration, id = \"toast\", placement = \"bottom\", removeDelay = 0, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext, MachineState>(\n {\n id,\n entry: \"invokeOnOpen\",\n initial: type === \"loading\" ? \"persist\" : \"active\",\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n },\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"persist\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"active:temp\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n ],\n },\n\n states: {\n \"active:temp\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"active\",\n },\n },\n\n persist: {\n tags: [\"visible\", \"paused\"],\n activities: \"trackDocumentVisibility\",\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"active\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n active: {\n tags: [\"visible\"],\n activities: \"trackDocumentVisibility\",\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnClosing\",\n after: {\n REMOVE_DELAY: {\n target: \"inactive\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n inactive: {\n entry: \"invokeOnClose\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackDocumentVisibility(ctx, _evt, { send }) {\n if (!ctx.pauseOnPageIdle) return\n const doc = dom.getDoc(ctx)\n return addDomEvent(doc, \"visibilitychange\", () => {\n send(doc.visibilityState === \"hidden\" ? \"PAUSE\" : \"RESUME\")\n })\n },\n },\n\n guards: {\n isChangingToLoading: (_, evt) => evt.toast?.type === \"loading\",\n isLoadingType: (ctx) => ctx.type === \"loading\",\n hasTypeChanged: (ctx, evt) => evt.toast?.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration !== ctx.duration,\n },\n\n delays: {\n VISIBLE_DURATION: (ctx) => ctx.remaining,\n REMOVE_DELAY: (ctx) => ctx.removeDelay,\n },\n\n actions: {\n setRemainingDuration(ctx) {\n ctx.remaining -= Date.now() - ctx.createdAt\n },\n setCreatedAt(ctx) {\n ctx.createdAt = Date.now()\n },\n notifyParentToRemove(_ctx, _evt, { self }) {\n self.sendParent({ type: \"REMOVE_TOAST\", id: self.id })\n },\n invokeOnClosing(ctx) {\n ctx.onClosing?.()\n },\n invokeOnClose(ctx) {\n ctx.onClose?.()\n },\n invokeOnOpen(ctx) {\n ctx.onOpen?.()\n },\n invokeOnUpdate(ctx) {\n ctx.onUpdate?.()\n },\n setContext(ctx, evt) {\n const { duration, type } = evt.toast\n const time = getToastDuration(duration, type)\n Object.assign(ctx, { ...evt.toast, duration: time, remaining: time })\n },\n },\n },\n )\n}\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineApi, Send, State } from \"./toast.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const isVisible = state.hasTag(\"visible\")\n const isPaused = state.hasTag(\"paused\")\n\n const pauseOnInteraction = state.context.pauseOnInteraction\n const placement = state.context.placement!\n\n return {\n type: state.context.type,\n title: state.context.title,\n description: state.context.description,\n placement,\n isVisible,\n isPaused,\n isRtl: state.context.dir === \"rtl\",\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": isVisible ? \"open\" : \"closed\",\n \"data-type\": state.context.type,\n \"data-placement\": placement,\n role: \"status\",\n \"aria-atomic\": \"true\",\n tabIndex: 0,\n style: {\n position: \"relative\",\n pointerEvents: \"auto\",\n margin: \"calc(var(--toast-gutter) / 2)\",\n \"--remove-delay\": `${state.context.removeDelay}ms`,\n \"--duration\": `${state.context.duration}ms`,\n },\n onKeyDown(event) {\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n onFocus() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onBlur() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n onPointerEnter() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onPointerLeave() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n }\n}\n"],"mappings":"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","names":["offset","import_core","import_dom_query","import_utils","import_core","import_utils","ctx","duration","type","ctx"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/toast-group.connect.ts","../src/toast.anatomy.ts","../src/toast.dom.ts","../src/toast.utils.ts","../src/toast-group.machine.ts","../src/toast.machine.ts","../src/toast.connect.ts"],"sourcesContent":["import { groupConnect } from \"./toast-group.connect\"\nimport { groupMachine } from \"./toast-group.machine\"\nimport { createToastMachine as createMachine } from \"./toast.machine\"\n\nexport { anatomy } from \"./toast.anatomy\"\nexport { connect } from \"./toast.connect\"\nexport type {\n MachineApi as Api,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupState,\n MachineContext,\n MachineState,\n Placement,\n PromiseOptions,\n Service,\n ToastOptions,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n","import { subscribe } from \"@zag-js/core\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { runIfFn, uuid } from \"@zag-js/utils\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { GroupMachineApi, GroupSend, GroupState, Options } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport let toaster = {} as GroupMachineApi\n\nexport function groupConnect<T extends PropTypes>(\n state: GroupState,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T> {\n //\n const toastsByPlacement = getToastsByPlacement(state.context.toasts)\n\n function isVisible(id: string) {\n if (!state.context.toasts.length) return false\n return !!state.context.toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options) {\n if (!isVisible(id)) return\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options) {\n const { id } = options\n const visible = id ? isVisible(id) : false\n if (visible && id != null) {\n return update(id, options)\n } else {\n return create(options)\n }\n }\n\n function dismiss(id?: string) {\n if (id == null) {\n send(\"DISMISS_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"DISMISS_TOAST\", id })\n }\n }\n\n return {\n count: state.context.count,\n toasts: state.context.toasts,\n toastsByPlacement,\n isVisible,\n\n create,\n update,\n upsert,\n dismiss,\n\n remove(id) {\n if (id == null) {\n send(\"REMOVE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"REMOVE_TOAST\", id })\n }\n },\n\n dismissByPlacement(placement) {\n const toasts = toastsByPlacement[placement]\n if (toasts) {\n toasts.forEach((toast) => dismiss(toast.id))\n }\n },\n loading(options) {\n return upsert({ ...options, type: \"loading\" })\n },\n success(options) {\n return upsert({ ...options, type: \"success\" })\n },\n error(options) {\n return upsert({ ...options, type: \"error\" })\n },\n\n promise(promise, options, shared = {}) {\n const id = upsert({ ...shared, ...options.loading, type: \"loading\" })\n\n promise\n .then((response) => {\n const successOptions = runIfFn(options.success, response)\n upsert({ ...shared, ...successOptions, id, type: \"success\" })\n })\n .catch((error) => {\n const errorOptions = runIfFn(options.error, error)\n upsert({ ...shared, ...errorOptions, id, type: \"error\" })\n })\n\n return promise\n },\n\n pause(id) {\n if (id == null) {\n send(\"PAUSE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"PAUSE_TOAST\", id })\n }\n },\n\n resume(id) {\n if (id == null) {\n send(\"RESUME_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"RESUME_TOAST\", id })\n }\n },\n\n getGroupProps(options) {\n const { placement, label = \"Notifications\" } = options\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label}`,\n id: dom.getGroupId(placement),\n \"data-placement\": placement,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n })\n },\n\n subscribe(fn) {\n return subscribe(state.context.toasts, () => fn(state.context.toasts))\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\"group\", \"root\", \"title\", \"description\", \"closeTrigger\")\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement } from \"./toast.types\"\n\nexport const dom = createScope({\n getGroupId: (placement: Placement) => `toast-group:${placement}`,\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getTitleId: (ctx: Ctx) => `toast:${ctx.id}:title`,\n getDescriptionId: (ctx: Ctx) => `toast:${ctx.id}:description`,\n getCloseTriggerId: (ctx: Ctx) => `toast${ctx.id}:close`,\n})\n","import type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement(toasts: Service[]) {\n const result: Partial<Record<Placement, Service[]>> = {}\n\n for (const toast of toasts) {\n const placement = toast.state.context.placement!\n result[placement] ||= []\n result[placement]!.push(toast)\n }\n\n return result\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n custom: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: MachineContext[\"type\"]) {\n return duration ?? defaultTimeouts[type]\n}\n\nexport function getGroupPlacementStyle(ctx: GroupMachineContext, placement: Placement): Style {\n const offset = ctx.offsets\n const computedOffset =\n typeof offset === \"string\" ? { left: offset, right: offset, bottom: offset, top: offset } : offset\n\n const rtl = ctx.dir === \"rtl\"\n const computedPlacement = placement\n .replace(\"-start\", rtl ? \"-right\" : \"-left\")\n .replace(\"-end\", rtl ? \"-left\" : \"-right\")\n\n const isRighty = computedPlacement.includes(\"right\")\n const isLefty = computedPlacement.includes(\"left\")\n\n const styles: Style = {\n position: \"fixed\",\n pointerEvents: ctx.count > 0 ? undefined : \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n \"--toast-gutter\": ctx.gutter,\n zIndex: ctx.zIndex,\n }\n\n let alignItems: Style[\"alignItems\"] = \"center\"\n if (isRighty) alignItems = \"flex-end\"\n if (isLefty) alignItems = \"flex-start\"\n\n styles.alignItems = alignItems\n\n if (computedPlacement.includes(\"top\")) {\n const offset = computedOffset.top\n styles.top = `calc(env(safe-area-inset-top, 0px) + ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `calc(env(safe-area-inset-bottom, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.right = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.left = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type { GroupMachineContext, MachineContext, UserDefinedGroupContext } from \"./toast.types\"\n\nexport function groupMachine(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext>({\n id: \"toaster\",\n initial: \"active\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n toasts: [],\n gutter: \"1rem\",\n zIndex: MAX_Z_INDEX,\n pauseOnPageIdle: false,\n pauseOnInteraction: true,\n offsets: { left: \"0px\", right: \"0px\", top: \"0px\", bottom: \"0px\" },\n ...ctx,\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n on: {\n SETUP: {},\n\n PAUSE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"PAUSE\", evt.id)\n },\n },\n\n PAUSE_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n },\n\n RESUME_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"RESUME\", evt.id)\n },\n },\n\n RESUME_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n },\n\n ADD_TOAST: {\n guard: (ctx) => ctx.toasts.length < ctx.max,\n actions: (ctx, evt, { self }) => {\n const options: MachineContext = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n render: ctx.render,\n ...evt.toast,\n pauseOnPageIdle: ctx.pauseOnPageIdle,\n pauseOnInteraction: ctx.pauseOnInteraction,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n }\n const toast = createToastMachine(options)\n const actor = self.spawn(toast)\n ctx.toasts.push(actor)\n },\n },\n\n UPDATE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n },\n\n DISMISS_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"DISMISS\", evt.id)\n },\n },\n\n DISMISS_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n },\n\n REMOVE_TOAST: {\n actions: (ctx, evt, { self }) => {\n self.stopChild(evt.id)\n const index = ctx.toasts.findIndex((toast) => toast.id === evt.id)\n ctx.toasts.splice(index, 1)\n },\n },\n\n REMOVE_ALL: {\n actions: (ctx, _evt, { self }) => {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n while (ctx.toasts.length) ctx.toasts.pop()\n },\n },\n },\n })\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineContext, MachineState, Options } from \"./toast.types\"\nimport { getToastDuration } from \"./toast.utils\"\n\nconst { not, and, or } = guards\n\nexport function createToastMachine(options: Options = {}) {\n const { type = \"info\", duration, id = \"toast\", placement = \"bottom\", removeDelay = 0, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext, MachineState>(\n {\n id,\n entry: \"invokeOnOpen\",\n initial: type === \"loading\" ? \"persist\" : \"active\",\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n },\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"persist\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"active:temp\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n ],\n },\n\n states: {\n \"active:temp\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"active\",\n },\n },\n\n persist: {\n tags: [\"visible\", \"paused\"],\n activities: \"trackDocumentVisibility\",\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"active\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n active: {\n tags: [\"visible\"],\n activities: \"trackDocumentVisibility\",\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnClosing\",\n after: {\n REMOVE_DELAY: {\n target: \"inactive\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n inactive: {\n entry: \"invokeOnClose\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackDocumentVisibility(ctx, _evt, { send }) {\n if (!ctx.pauseOnPageIdle) return\n const doc = dom.getDoc(ctx)\n return addDomEvent(doc, \"visibilitychange\", () => {\n send(doc.visibilityState === \"hidden\" ? \"PAUSE\" : \"RESUME\")\n })\n },\n },\n\n guards: {\n isChangingToLoading: (_, evt) => evt.toast?.type === \"loading\",\n isLoadingType: (ctx) => ctx.type === \"loading\",\n hasTypeChanged: (ctx, evt) => evt.toast?.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration !== ctx.duration,\n },\n\n delays: {\n VISIBLE_DURATION: (ctx) => ctx.remaining,\n REMOVE_DELAY: (ctx) => ctx.removeDelay,\n },\n\n actions: {\n setRemainingDuration(ctx) {\n ctx.remaining -= Date.now() - ctx.createdAt\n },\n setCreatedAt(ctx) {\n ctx.createdAt = Date.now()\n },\n notifyParentToRemove(_ctx, _evt, { self }) {\n self.sendParent({ type: \"REMOVE_TOAST\", id: self.id })\n },\n invokeOnClosing(ctx) {\n ctx.onClosing?.()\n },\n invokeOnClose(ctx) {\n ctx.onClose?.()\n },\n invokeOnOpen(ctx) {\n ctx.onOpen?.()\n },\n invokeOnUpdate(ctx) {\n ctx.onUpdate?.()\n },\n setContext(ctx, evt) {\n const { duration, type } = evt.toast\n const time = getToastDuration(duration, type)\n Object.assign(ctx, { ...evt.toast, duration: time, remaining: time })\n },\n },\n },\n )\n}\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineApi, Send, State } from \"./toast.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const isVisible = state.hasTag(\"visible\")\n const isPaused = state.hasTag(\"paused\")\n\n const pauseOnInteraction = state.context.pauseOnInteraction\n const placement = state.context.placement!\n\n return {\n type: state.context.type,\n title: state.context.title,\n description: state.context.description,\n placement,\n isVisible,\n isPaused,\n isRtl: state.context.dir === \"rtl\",\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": isVisible ? \"open\" : \"closed\",\n \"data-type\": state.context.type,\n \"data-placement\": placement,\n role: \"status\",\n \"aria-atomic\": \"true\",\n tabIndex: 0,\n style: {\n position: \"relative\",\n pointerEvents: \"auto\",\n margin: \"calc(var(--toast-gutter) / 2)\",\n \"--remove-delay\": `${state.context.removeDelay}ms`,\n \"--duration\": `${state.context.duration}ms`,\n },\n onKeyDown(event) {\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n onFocus() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onBlur() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n onPointerEnter() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onPointerLeave() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n }\n}\n"],"mappings":"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","names":["offset","import_core","import_dom_query","import_utils","import_core","import_utils","ctx","duration","type","ctx"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toast-group.connect.ts","../src/toast.anatomy.ts","../src/toast.dom.ts","../src/toast.utils.ts","../src/toast-group.machine.ts","../src/toast.machine.ts","../src/toast.connect.ts","../src/index.ts"],"sourcesContent":["import { subscribe } from \"@zag-js/core\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { runIfFn, uuid } from \"@zag-js/utils\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { GroupMachineApi, GroupSend, GroupState, Options } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport let toaster = {} as GroupMachineApi\n\nexport function groupConnect<T extends PropTypes>(\n state: GroupState,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T> {\n //\n const toastsByPlacement = getToastsByPlacement(state.context.toasts)\n\n function isVisible(id: string) {\n if (!state.context.toasts.length) return false\n return !!state.context.toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options) {\n if (!isVisible(id)) return\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options) {\n const { id } = options\n const visible = id ? isVisible(id) : false\n if (visible && id != null) {\n return update(id, options)\n } else {\n return create(options)\n }\n }\n\n function dismiss(id?: string) {\n if (id == null) {\n send(\"DISMISS_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"DISMISS_TOAST\", id })\n }\n }\n\n return {\n count: state.context.count,\n toasts: state.context.toasts,\n toastsByPlacement,\n isVisible,\n\n create,\n update,\n upsert,\n dismiss,\n\n remove(id) {\n if (id == null) {\n send(\"REMOVE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"REMOVE_TOAST\", id })\n }\n },\n\n dismissByPlacement(placement) {\n const toasts = toastsByPlacement[placement]\n if (toasts) {\n toasts.forEach((toast) => dismiss(toast.id))\n }\n },\n loading(options) {\n return upsert({ ...options, type: \"loading\" })\n },\n success(options) {\n return upsert({ ...options, type: \"success\" })\n },\n error(options) {\n return upsert({ ...options, type: \"error\" })\n },\n\n promise(promise, options, shared = {}) {\n const id = upsert({ ...shared, ...options.loading, type: \"loading\" })\n\n promise\n .then((response) => {\n const successOptions = runIfFn(options.success, response)\n upsert({ ...shared, ...successOptions, id, type: \"success\" })\n })\n .catch((error) => {\n const errorOptions = runIfFn(options.error, error)\n upsert({ ...shared, ...errorOptions, id, type: \"error\" })\n })\n\n return promise\n },\n\n pause(id) {\n if (id == null) {\n send(\"PAUSE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"PAUSE_TOAST\", id })\n }\n },\n\n resume(id) {\n if (id == null) {\n send(\"RESUME_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"RESUME_TOAST\", id })\n }\n },\n\n getGroupProps(options) {\n const { placement, label = \"Notifications\" } = options\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label}`,\n id: dom.getGroupId(placement),\n \"data-placement\": placement,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n })\n },\n\n subscribe(fn) {\n return subscribe(state.context.toasts, () => fn(state.context.toasts))\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\"group\", \"root\", \"title\", \"description\", \"closeTrigger\")\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement } from \"./toast.types\"\n\nexport const dom = createScope({\n getGroupId: (placement: Placement) => `toast-group:${placement}`,\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getTitleId: (ctx: Ctx) => `toast:${ctx.id}:title`,\n getDescriptionId: (ctx: Ctx) => `toast:${ctx.id}:description`,\n getCloseTriggerId: (ctx: Ctx) => `toast${ctx.id}:close`,\n})\n","import type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement(toasts: Service[]) {\n const result: Partial<Record<Placement, Service[]>> = {}\n\n for (const toast of toasts) {\n const placement = toast.state.context.placement!\n result[placement] ||= []\n result[placement]!.push(toast)\n }\n\n return result\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n custom: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: MachineContext[\"type\"]) {\n return duration ?? defaultTimeouts[type]\n}\n\nexport function getGroupPlacementStyle(ctx: GroupMachineContext, placement: Placement): Style {\n const offset = ctx.offsets\n const computedOffset =\n typeof offset === \"string\" ? { left: offset, right: offset, bottom: offset, top: offset } : offset\n\n const rtl = ctx.dir === \"rtl\"\n const computedPlacement = placement\n .replace(\"-start\", rtl ? \"-right\" : \"-left\")\n .replace(\"-end\", rtl ? \"-left\" : \"-right\")\n\n const isRighty = computedPlacement.includes(\"right\")\n const isLefty = computedPlacement.includes(\"left\")\n\n const styles: Style = {\n position: \"fixed\",\n pointerEvents: ctx.count > 0 ? undefined : \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n \"--toast-gutter\": ctx.gutter,\n zIndex: ctx.zIndex,\n }\n\n let alignItems: Style[\"alignItems\"] = \"center\"\n if (isRighty) alignItems = \"flex-end\"\n if (isLefty) alignItems = \"flex-start\"\n\n styles.alignItems = alignItems\n\n if (computedPlacement.includes(\"top\")) {\n const offset = computedOffset.top\n styles.top = `calc(env(safe-area-inset-top, 0px) + ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `calc(env(safe-area-inset-bottom, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.right = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.left = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type { GroupMachineContext, MachineContext, UserDefinedGroupContext } from \"./toast.types\"\n\nexport function groupMachine(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext>({\n id: \"toaster\",\n initial: \"active\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n toasts: [],\n gutter: \"1rem\",\n zIndex: MAX_Z_INDEX,\n pauseOnPageIdle: false,\n pauseOnInteraction: true,\n offsets: { left: \"0px\", right: \"0px\", top: \"0px\", bottom: \"0px\" },\n ...ctx,\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n on: {\n SETUP: {},\n\n PAUSE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"PAUSE\", evt.id)\n },\n },\n\n PAUSE_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n },\n\n RESUME_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"RESUME\", evt.id)\n },\n },\n\n RESUME_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n },\n\n ADD_TOAST: {\n guard: (ctx) => ctx.toasts.length < ctx.max,\n actions: (ctx, evt, { self }) => {\n const options: MachineContext = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n render: ctx.render,\n ...evt.toast,\n pauseOnPageIdle: ctx.pauseOnPageIdle,\n pauseOnInteraction: ctx.pauseOnInteraction,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n }\n const toast = createToastMachine(options)\n const actor = self.spawn(toast)\n ctx.toasts.push(actor)\n },\n },\n\n UPDATE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n },\n\n DISMISS_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"DISMISS\", evt.id)\n },\n },\n\n DISMISS_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n },\n\n REMOVE_TOAST: {\n actions: (ctx, evt, { self }) => {\n self.stopChild(evt.id)\n const index = ctx.toasts.findIndex((toast) => toast.id === evt.id)\n ctx.toasts.splice(index, 1)\n },\n },\n\n REMOVE_ALL: {\n actions: (ctx, _evt, { self }) => {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n while (ctx.toasts.length) ctx.toasts.pop()\n },\n },\n },\n })\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineContext, MachineState, Options } from \"./toast.types\"\nimport { getToastDuration } from \"./toast.utils\"\n\nconst { not, and, or } = guards\n\nexport function createToastMachine(options: Options = {}) {\n const { type = \"info\", duration, id = \"toast\", placement = \"bottom\", removeDelay = 0, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext, MachineState>(\n {\n id,\n entry: \"invokeOnOpen\",\n initial: type === \"loading\" ? \"persist\" : \"active\",\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n },\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"persist\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"active:temp\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n ],\n },\n\n states: {\n \"active:temp\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"active\",\n },\n },\n\n persist: {\n tags: [\"visible\", \"paused\"],\n activities: \"trackDocumentVisibility\",\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"active\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n active: {\n tags: [\"visible\"],\n activities: \"trackDocumentVisibility\",\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnClosing\",\n after: {\n REMOVE_DELAY: {\n target: \"inactive\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n inactive: {\n entry: \"invokeOnClose\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackDocumentVisibility(ctx, _evt, { send }) {\n if (!ctx.pauseOnPageIdle) return\n const doc = dom.getDoc(ctx)\n return addDomEvent(doc, \"visibilitychange\", () => {\n send(doc.visibilityState === \"hidden\" ? \"PAUSE\" : \"RESUME\")\n })\n },\n },\n\n guards: {\n isChangingToLoading: (_, evt) => evt.toast?.type === \"loading\",\n isLoadingType: (ctx) => ctx.type === \"loading\",\n hasTypeChanged: (ctx, evt) => evt.toast?.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration !== ctx.duration,\n },\n\n delays: {\n VISIBLE_DURATION: (ctx) => ctx.remaining,\n REMOVE_DELAY: (ctx) => ctx.removeDelay,\n },\n\n actions: {\n setRemainingDuration(ctx) {\n ctx.remaining -= Date.now() - ctx.createdAt\n },\n setCreatedAt(ctx) {\n ctx.createdAt = Date.now()\n },\n notifyParentToRemove(_ctx, _evt, { self }) {\n self.sendParent({ type: \"REMOVE_TOAST\", id: self.id })\n },\n invokeOnClosing(ctx) {\n ctx.onClosing?.()\n },\n invokeOnClose(ctx) {\n ctx.onClose?.()\n },\n invokeOnOpen(ctx) {\n ctx.onOpen?.()\n },\n invokeOnUpdate(ctx) {\n ctx.onUpdate?.()\n },\n setContext(ctx, evt) {\n const { duration, type } = evt.toast\n const time = getToastDuration(duration, type)\n Object.assign(ctx, { ...evt.toast, duration: time, remaining: time })\n },\n },\n },\n )\n}\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineApi, Send, State } from \"./toast.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const isVisible = state.hasTag(\"visible\")\n const isPaused = state.hasTag(\"paused\")\n\n const pauseOnInteraction = state.context.pauseOnInteraction\n const placement = state.context.placement!\n\n return {\n type: state.context.type,\n title: state.context.title,\n description: state.context.description,\n placement,\n isVisible,\n isPaused,\n isRtl: state.context.dir === \"rtl\",\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": isVisible ? \"open\" : \"closed\",\n \"data-type\": state.context.type,\n \"data-placement\": placement,\n role: \"status\",\n \"aria-atomic\": \"true\",\n tabIndex: 0,\n style: {\n position: \"relative\",\n pointerEvents: \"auto\",\n margin: \"calc(var(--toast-gutter) / 2)\",\n \"--remove-delay\": `${state.context.removeDelay}ms`,\n \"--duration\": `${state.context.duration}ms`,\n },\n onKeyDown(event) {\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n onFocus() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onBlur() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n onPointerEnter() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onPointerLeave() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n }\n}\n","import { groupConnect } from \"./toast-group.connect\"\nimport { groupMachine } from \"./toast-group.machine\"\nimport { createToastMachine as createMachine } from \"./toast.machine\"\n\nexport { anatomy } from \"./toast.anatomy\"\nexport { connect } from \"./toast.connect\"\nexport type {\n MachineApi as Api,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n MachineContext,\n MachineState,\n Placement,\n PromiseOptions,\n Service,\n ToastOptions,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n"],"mappings":"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","names":["offset","createMachine","compact","ctx","duration","type","compact","createMachine","ctx"]}
1
+ {"version":3,"sources":["../src/toast-group.connect.ts","../src/toast.anatomy.ts","../src/toast.dom.ts","../src/toast.utils.ts","../src/toast-group.machine.ts","../src/toast.machine.ts","../src/toast.connect.ts","../src/index.ts"],"sourcesContent":["import { subscribe } from \"@zag-js/core\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { runIfFn, uuid } from \"@zag-js/utils\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { GroupMachineApi, GroupSend, GroupState, Options } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport let toaster = {} as GroupMachineApi\n\nexport function groupConnect<T extends PropTypes>(\n state: GroupState,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T> {\n //\n const toastsByPlacement = getToastsByPlacement(state.context.toasts)\n\n function isVisible(id: string) {\n if (!state.context.toasts.length) return false\n return !!state.context.toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options) {\n if (!isVisible(id)) return\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options) {\n const { id } = options\n const visible = id ? isVisible(id) : false\n if (visible && id != null) {\n return update(id, options)\n } else {\n return create(options)\n }\n }\n\n function dismiss(id?: string) {\n if (id == null) {\n send(\"DISMISS_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"DISMISS_TOAST\", id })\n }\n }\n\n return {\n count: state.context.count,\n toasts: state.context.toasts,\n toastsByPlacement,\n isVisible,\n\n create,\n update,\n upsert,\n dismiss,\n\n remove(id) {\n if (id == null) {\n send(\"REMOVE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"REMOVE_TOAST\", id })\n }\n },\n\n dismissByPlacement(placement) {\n const toasts = toastsByPlacement[placement]\n if (toasts) {\n toasts.forEach((toast) => dismiss(toast.id))\n }\n },\n loading(options) {\n return upsert({ ...options, type: \"loading\" })\n },\n success(options) {\n return upsert({ ...options, type: \"success\" })\n },\n error(options) {\n return upsert({ ...options, type: \"error\" })\n },\n\n promise(promise, options, shared = {}) {\n const id = upsert({ ...shared, ...options.loading, type: \"loading\" })\n\n promise\n .then((response) => {\n const successOptions = runIfFn(options.success, response)\n upsert({ ...shared, ...successOptions, id, type: \"success\" })\n })\n .catch((error) => {\n const errorOptions = runIfFn(options.error, error)\n upsert({ ...shared, ...errorOptions, id, type: \"error\" })\n })\n\n return promise\n },\n\n pause(id) {\n if (id == null) {\n send(\"PAUSE_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"PAUSE_TOAST\", id })\n }\n },\n\n resume(id) {\n if (id == null) {\n send(\"RESUME_ALL\")\n } else if (isVisible(id)) {\n send({ type: \"RESUME_TOAST\", id })\n }\n },\n\n getGroupProps(options) {\n const { placement, label = \"Notifications\" } = options\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label}`,\n id: dom.getGroupId(placement),\n \"data-placement\": placement,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n })\n },\n\n subscribe(fn) {\n return subscribe(state.context.toasts, () => fn(state.context.toasts))\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\"group\", \"root\", \"title\", \"description\", \"closeTrigger\")\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement } from \"./toast.types\"\n\nexport const dom = createScope({\n getGroupId: (placement: Placement) => `toast-group:${placement}`,\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getTitleId: (ctx: Ctx) => `toast:${ctx.id}:title`,\n getDescriptionId: (ctx: Ctx) => `toast:${ctx.id}:description`,\n getCloseTriggerId: (ctx: Ctx) => `toast${ctx.id}:close`,\n})\n","import type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement(toasts: Service[]) {\n const result: Partial<Record<Placement, Service[]>> = {}\n\n for (const toast of toasts) {\n const placement = toast.state.context.placement!\n result[placement] ||= []\n result[placement]!.push(toast)\n }\n\n return result\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n custom: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: MachineContext[\"type\"]) {\n return duration ?? defaultTimeouts[type]\n}\n\nexport function getGroupPlacementStyle(ctx: GroupMachineContext, placement: Placement): Style {\n const offset = ctx.offsets\n const computedOffset =\n typeof offset === \"string\" ? { left: offset, right: offset, bottom: offset, top: offset } : offset\n\n const rtl = ctx.dir === \"rtl\"\n const computedPlacement = placement\n .replace(\"-start\", rtl ? \"-right\" : \"-left\")\n .replace(\"-end\", rtl ? \"-left\" : \"-right\")\n\n const isRighty = computedPlacement.includes(\"right\")\n const isLefty = computedPlacement.includes(\"left\")\n\n const styles: Style = {\n position: \"fixed\",\n pointerEvents: ctx.count > 0 ? undefined : \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n \"--toast-gutter\": ctx.gutter,\n zIndex: ctx.zIndex,\n }\n\n let alignItems: Style[\"alignItems\"] = \"center\"\n if (isRighty) alignItems = \"flex-end\"\n if (isLefty) alignItems = \"flex-start\"\n\n styles.alignItems = alignItems\n\n if (computedPlacement.includes(\"top\")) {\n const offset = computedOffset.top\n styles.top = `calc(env(safe-area-inset-top, 0px) + ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `calc(env(safe-area-inset-bottom, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.right = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.left = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport { compact } from \"@zag-js/utils\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type { GroupMachineContext, MachineContext, UserDefinedGroupContext } from \"./toast.types\"\n\nexport function groupMachine(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext>({\n id: \"toaster\",\n initial: \"active\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n toasts: [],\n gutter: \"1rem\",\n zIndex: MAX_Z_INDEX,\n pauseOnPageIdle: false,\n pauseOnInteraction: true,\n offsets: { left: \"0px\", right: \"0px\", top: \"0px\", bottom: \"0px\" },\n ...ctx,\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n on: {\n SETUP: {},\n\n PAUSE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"PAUSE\", evt.id)\n },\n },\n\n PAUSE_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n },\n\n RESUME_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"RESUME\", evt.id)\n },\n },\n\n RESUME_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n },\n\n ADD_TOAST: {\n guard: (ctx) => ctx.toasts.length < ctx.max,\n actions: (ctx, evt, { self }) => {\n const options: MachineContext = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n render: ctx.render,\n ...evt.toast,\n pauseOnPageIdle: ctx.pauseOnPageIdle,\n pauseOnInteraction: ctx.pauseOnInteraction,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n }\n const toast = createToastMachine(options)\n const actor = self.spawn(toast)\n ctx.toasts.push(actor)\n },\n },\n\n UPDATE_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n },\n\n DISMISS_TOAST: {\n actions: (_ctx, evt, { self }) => {\n self.sendChild(\"DISMISS\", evt.id)\n },\n },\n\n DISMISS_ALL: {\n actions: (ctx) => {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n },\n\n REMOVE_TOAST: {\n actions: (ctx, evt, { self }) => {\n self.stopChild(evt.id)\n const index = ctx.toasts.findIndex((toast) => toast.id === evt.id)\n ctx.toasts.splice(index, 1)\n },\n },\n\n REMOVE_ALL: {\n actions: (ctx, _evt, { self }) => {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n while (ctx.toasts.length) ctx.toasts.pop()\n },\n },\n },\n })\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineContext, MachineState, Options } from \"./toast.types\"\nimport { getToastDuration } from \"./toast.utils\"\n\nconst { not, and, or } = guards\n\nexport function createToastMachine(options: Options = {}) {\n const { type = \"info\", duration, id = \"toast\", placement = \"bottom\", removeDelay = 0, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext, MachineState>(\n {\n id,\n entry: \"invokeOnOpen\",\n initial: type === \"loading\" ? \"persist\" : \"active\",\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n },\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"persist\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"active:temp\",\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n {\n actions: [\"setContext\", \"invokeOnUpdate\"],\n },\n ],\n },\n\n states: {\n \"active:temp\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"active\",\n },\n },\n\n persist: {\n tags: [\"visible\", \"paused\"],\n activities: \"trackDocumentVisibility\",\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"active\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n active: {\n tags: [\"visible\"],\n activities: \"trackDocumentVisibility\",\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnClosing\",\n after: {\n REMOVE_DELAY: {\n target: \"inactive\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n inactive: {\n entry: \"invokeOnClose\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackDocumentVisibility(ctx, _evt, { send }) {\n if (!ctx.pauseOnPageIdle) return\n const doc = dom.getDoc(ctx)\n return addDomEvent(doc, \"visibilitychange\", () => {\n send(doc.visibilityState === \"hidden\" ? \"PAUSE\" : \"RESUME\")\n })\n },\n },\n\n guards: {\n isChangingToLoading: (_, evt) => evt.toast?.type === \"loading\",\n isLoadingType: (ctx) => ctx.type === \"loading\",\n hasTypeChanged: (ctx, evt) => evt.toast?.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration !== ctx.duration,\n },\n\n delays: {\n VISIBLE_DURATION: (ctx) => ctx.remaining,\n REMOVE_DELAY: (ctx) => ctx.removeDelay,\n },\n\n actions: {\n setRemainingDuration(ctx) {\n ctx.remaining -= Date.now() - ctx.createdAt\n },\n setCreatedAt(ctx) {\n ctx.createdAt = Date.now()\n },\n notifyParentToRemove(_ctx, _evt, { self }) {\n self.sendParent({ type: \"REMOVE_TOAST\", id: self.id })\n },\n invokeOnClosing(ctx) {\n ctx.onClosing?.()\n },\n invokeOnClose(ctx) {\n ctx.onClose?.()\n },\n invokeOnOpen(ctx) {\n ctx.onOpen?.()\n },\n invokeOnUpdate(ctx) {\n ctx.onUpdate?.()\n },\n setContext(ctx, evt) {\n const { duration, type } = evt.toast\n const time = getToastDuration(duration, type)\n Object.assign(ctx, { ...evt.toast, duration: time, remaining: time })\n },\n },\n },\n )\n}\n","import type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./toast.anatomy\"\nimport { dom } from \"./toast.dom\"\nimport type { MachineApi, Send, State } from \"./toast.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const isVisible = state.hasTag(\"visible\")\n const isPaused = state.hasTag(\"paused\")\n\n const pauseOnInteraction = state.context.pauseOnInteraction\n const placement = state.context.placement!\n\n return {\n type: state.context.type,\n title: state.context.title,\n description: state.context.description,\n placement,\n isVisible,\n isPaused,\n isRtl: state.context.dir === \"rtl\",\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": isVisible ? \"open\" : \"closed\",\n \"data-type\": state.context.type,\n \"data-placement\": placement,\n role: \"status\",\n \"aria-atomic\": \"true\",\n tabIndex: 0,\n style: {\n position: \"relative\",\n pointerEvents: \"auto\",\n margin: \"calc(var(--toast-gutter) / 2)\",\n \"--remove-delay\": `${state.context.removeDelay}ms`,\n \"--duration\": `${state.context.duration}ms`,\n },\n onKeyDown(event) {\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n onFocus() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onBlur() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n onPointerEnter() {\n if (pauseOnInteraction) {\n send(\"PAUSE\")\n }\n },\n onPointerLeave() {\n if (pauseOnInteraction) {\n send(\"RESUME\")\n }\n },\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n }\n}\n","import { groupConnect } from \"./toast-group.connect\"\nimport { groupMachine } from \"./toast-group.machine\"\nimport { createToastMachine as createMachine } from \"./toast.machine\"\n\nexport { anatomy } from \"./toast.anatomy\"\nexport { connect } from \"./toast.connect\"\nexport type {\n MachineApi as Api,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupState,\n MachineContext,\n MachineState,\n Placement,\n PromiseOptions,\n Service,\n ToastOptions,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,SAAS,SAAS,YAAY;;;ACF9B,SAAS,qBAAqB;AAEvB,IAAM,UAAU,cAAc,OAAO,EAAE,MAAM,SAAS,QAAQ,SAAS,eAAe,cAAc;AACpG,IAAM,QAAQ,QAAQ,MAAM;;;ACHnC,SAAS,mBAAmB;AAGrB,IAAM,MAAM,YAAY;AAAA,EAC7B,YAAY,CAAC,cAAyB,eAAe,SAAS;AAAA,EAC9D,WAAW,CAAC,QAAa,SAAS,IAAI,EAAE;AAAA,EACxC,YAAY,CAAC,QAAa,SAAS,IAAI,EAAE;AAAA,EACzC,kBAAkB,CAAC,QAAa,SAAS,IAAI,EAAE;AAAA,EAC/C,mBAAmB,CAAC,QAAa,QAAQ,IAAI,EAAE;AACjD,CAAC;;;ACNM,SAAS,qBAAqB,QAAmB;AACtD,QAAM,SAAgD,CAAC;AAEvD,aAAW,SAAS,QAAQ;AAC1B,UAAM,YAAY,MAAM,MAAM,QAAQ;AACtC,8CAAsB,CAAC;AACvB,WAAO,SAAS,EAAG,KAAK,KAAK;AAAA,EAC/B;AAEA,SAAO;AACT;AAEO,IAAM,kBAAwC;AAAA,EACnD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,SAAS,iBAAiB,UAA8B,MAA8B;AAC3F,SAAO,YAAY,gBAAgB,IAAI;AACzC;AAEO,SAAS,uBAAuB,KAA0B,WAA6B;AAC5F,QAAM,SAAS,IAAI;AACnB,QAAM,iBACJ,OAAO,WAAW,WAAW,EAAE,MAAM,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,KAAK,OAAO,IAAI;AAE9F,QAAM,MAAM,IAAI,QAAQ;AACxB,QAAM,oBAAoB,UACvB,QAAQ,UAAU,MAAM,WAAW,OAAO,EAC1C,QAAQ,QAAQ,MAAM,UAAU,QAAQ;AAE3C,QAAM,WAAW,kBAAkB,SAAS,OAAO;AACnD,QAAM,UAAU,kBAAkB,SAAS,MAAM;AAEjD,QAAM,SAAgB;AAAA,IACpB,UAAU;AAAA,IACV,eAAe,IAAI,QAAQ,IAAI,SAAY;AAAA,IAC3C,SAAS;AAAA,IACT,eAAe;AAAA,IACf,kBAAkB,IAAI;AAAA,IACtB,QAAQ,IAAI;AAAA,EACd;AAEA,MAAI,aAAkC;AACtC,MAAI;AAAU,iBAAa;AAC3B,MAAI;AAAS,iBAAa;AAE1B,SAAO,aAAa;AAEpB,MAAI,kBAAkB,SAAS,KAAK,GAAG;AACrC,UAAMA,UAAS,eAAe;AAC9B,WAAO,MAAM,wCAAwCA,OAAM;AAAA,EAC7D;AAEA,MAAI,kBAAkB,SAAS,QAAQ,GAAG;AACxC,UAAMA,UAAS,eAAe;AAC9B,WAAO,SAAS,2CAA2CA,OAAM;AAAA,EACnE;AAEA,MAAI,CAAC,kBAAkB,SAAS,MAAM,GAAG;AACvC,UAAMA,UAAS,eAAe;AAC9B,WAAO,QAAQ,0CAA0CA,OAAM;AAAA,EACjE;AAEA,MAAI,CAAC,kBAAkB,SAAS,OAAO,GAAG;AACxC,UAAMA,UAAS,eAAe;AAC9B,WAAO,OAAO,yCAAyCA,OAAM;AAAA,EAC/D;AAEA,SAAO;AACT;;;AHlEO,SAAS,aACd,OACA,MACA,WACoB;AAEpB,QAAM,oBAAoB,qBAAqB,MAAM,QAAQ,MAAM;AAEnE,WAAS,UAAU,IAAY;AAC7B,QAAI,CAAC,MAAM,QAAQ,OAAO;AAAQ,aAAO;AACzC,WAAO,CAAC,CAAC,MAAM,QAAQ,OAAO,KAAK,CAAC,UAAU,MAAM,MAAM,EAAE;AAAA,EAC9D;AAEA,WAAS,OAAO,SAAkB;AAChC,UAAM,MAAM,SAAS,KAAK,CAAC;AAC3B,UAAM,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAErC,QAAI,UAAU,EAAE;AAAG;AACnB,SAAK,EAAE,MAAM,aAAa,OAAO,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC;AAErD,WAAO;AAAA,EACT;AAEA,WAAS,OAAO,IAAY,SAAkB;AAC5C,QAAI,CAAC,UAAU,EAAE;AAAG;AACpB,SAAK,EAAE,MAAM,gBAAgB,IAAI,OAAO,QAAQ,CAAC;AACjD,WAAO;AAAA,EACT;AAEA,WAAS,OAAO,SAAkB;AAChC,UAAM,EAAE,GAAG,IAAI;AACf,UAAM,UAAU,KAAK,UAAU,EAAE,IAAI;AACrC,QAAI,WAAW,MAAM,MAAM;AACzB,aAAO,OAAO,IAAI,OAAO;AAAA,IAC3B,OAAO;AACL,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,EACF;AAEA,WAAS,QAAQ,IAAa;AAC5B,QAAI,MAAM,MAAM;AACd,WAAK,aAAa;AAAA,IACpB,WAAW,UAAU,EAAE,GAAG;AACxB,WAAK,EAAE,MAAM,iBAAiB,GAAG,CAAC;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,MAAM,QAAQ;AAAA,IACrB,QAAQ,MAAM,QAAQ;AAAA,IACtB;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,OAAO,IAAI;AACT,UAAI,MAAM,MAAM;AACd,aAAK,YAAY;AAAA,MACnB,WAAW,UAAU,EAAE,GAAG;AACxB,aAAK,EAAE,MAAM,gBAAgB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,mBAAmB,WAAW;AAC5B,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ;AACV,eAAO,QAAQ,CAAC,UAAU,QAAQ,MAAM,EAAE,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,QAAQ,SAAS;AACf,aAAO,OAAO,EAAE,GAAG,SAAS,MAAM,UAAU,CAAC;AAAA,IAC/C;AAAA,IACA,QAAQ,SAAS;AACf,aAAO,OAAO,EAAE,GAAG,SAAS,MAAM,UAAU,CAAC;AAAA,IAC/C;AAAA,IACA,MAAM,SAAS;AACb,aAAO,OAAO,EAAE,GAAG,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC7C;AAAA,IAEA,QAAQ,SAAS,SAAS,SAAS,CAAC,GAAG;AACrC,YAAM,KAAK,OAAO,EAAE,GAAG,QAAQ,GAAG,QAAQ,SAAS,MAAM,UAAU,CAAC;AAEpE,cACG,KAAK,CAAC,aAAa;AAClB,cAAM,iBAAiB,QAAQ,QAAQ,SAAS,QAAQ;AACxD,eAAO,EAAE,GAAG,QAAQ,GAAG,gBAAgB,IAAI,MAAM,UAAU,CAAC;AAAA,MAC9D,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,cAAM,eAAe,QAAQ,QAAQ,OAAO,KAAK;AACjD,eAAO,EAAE,GAAG,QAAQ,GAAG,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,MAC1D,CAAC;AAEH,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,IAAI;AACR,UAAI,MAAM,MAAM;AACd,aAAK,WAAW;AAAA,MAClB,WAAW,UAAU,EAAE,GAAG;AACxB,aAAK,EAAE,MAAM,eAAe,GAAG,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,OAAO,IAAI;AACT,UAAI,MAAM,MAAM;AACd,aAAK,YAAY;AAAA,MACnB,WAAW,UAAU,EAAE,GAAG;AACxB,aAAK,EAAE,MAAM,gBAAgB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,cAAc,SAAS;AACrB,YAAM,EAAE,WAAW,QAAQ,gBAAgB,IAAI;AAC/C,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,MAAM;AAAA,QACf,KAAK,MAAM,QAAQ;AAAA,QACnB,UAAU;AAAA,QACV,cAAc,GAAG,SAAS,IAAI,KAAK;AAAA,QACnC,IAAI,IAAI,WAAW,SAAS;AAAA,QAC5B,kBAAkB;AAAA,QAClB,aAAa;AAAA,QACb,MAAM;AAAA,QACN,OAAO,uBAAuB,MAAM,SAAS,SAAS;AAAA,MACxD,CAAC;AAAA,IACH;AAAA,IAEA,UAAU,IAAI;AACZ,aAAO,UAAU,MAAM,QAAQ,QAAQ,MAAM,GAAG,MAAM,QAAQ,MAAM,CAAC;AAAA,IACvE;AAAA,EACF;AACF;;;AI/IA,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,WAAAC,gBAAe;;;ACFxB,SAAS,eAAe,cAAc;AACtC,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AAKxB,IAAM,EAAE,KAAK,KAAK,GAAG,IAAI;AAElB,SAAS,mBAAmB,UAAmB,CAAC,GAAG;AACxD,QAAM,EAAE,OAAO,QAAQ,UAAU,KAAK,SAAS,YAAY,UAAU,cAAc,GAAG,GAAG,UAAU,IAAI;AACvG,QAAM,MAAM,QAAQ,SAAS;AAE7B,QAAM,mBAAmB,iBAAiB,UAAU,IAAI;AAExD,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA,OAAO;AAAA,MACP,SAAS,SAAS,YAAY,YAAY;AAAA,MAC1C,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA,WAAW,KAAK,IAAI;AAAA,QACpB;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MAEA,IAAI;AAAA,QACF,QAAQ;AAAA,UACN;AAAA,YACE,OAAO,IAAI,kBAAkB,qBAAqB;AAAA,YAClD,QAAQ;AAAA,YACR,SAAS,CAAC,cAAc,gBAAgB;AAAA,UAC1C;AAAA,UACA;AAAA,YACE,OAAO,GAAG,sBAAsB,gBAAgB;AAAA,YAChD,QAAQ;AAAA,YACR,SAAS,CAAC,cAAc,gBAAgB;AAAA,UAC1C;AAAA,UACA;AAAA,YACE,SAAS,CAAC,cAAc,gBAAgB;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAQ;AAAA,QACN,eAAe;AAAA,UACb,MAAM,CAAC,WAAW,UAAU;AAAA,UAC5B,OAAO;AAAA,YACL,GAAG;AAAA,UACL;AAAA,QACF;AAAA,QAEA,SAAS;AAAA,UACP,MAAM,CAAC,WAAW,QAAQ;AAAA,UAC1B,YAAY;AAAA,UACZ,IAAI;AAAA,YACF,QAAQ;AAAA,cACN,OAAO,IAAI,eAAe;AAAA,cAC1B,QAAQ;AAAA,cACR,SAAS,CAAC,cAAc;AAAA,YAC1B;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QAEA,QAAQ;AAAA,UACN,MAAM,CAAC,SAAS;AAAA,UAChB,YAAY;AAAA,UACZ,OAAO;AAAA,YACL,kBAAkB;AAAA,UACpB;AAAA,UACA,IAAI;AAAA,YACF,SAAS;AAAA,YACT,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QAEA,YAAY;AAAA,UACV,OAAO;AAAA,UACP,OAAO;AAAA,YACL,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QAEA,UAAU;AAAA,UACR,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,YAAY;AAAA,QACV,wBAAwBC,MAAK,MAAM,EAAE,KAAK,GAAG;AAC3C,cAAI,CAACA,KAAI;AAAiB;AAC1B,gBAAM,MAAM,IAAI,OAAOA,IAAG;AAC1B,iBAAO,YAAY,KAAK,oBAAoB,MAAM;AAChD,iBAAK,IAAI,oBAAoB,WAAW,UAAU,QAAQ;AAAA,UAC5D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,QAAQ;AAAA,QACN,qBAAqB,CAAC,GAAG,QAAQ,IAAI,OAAO,SAAS;AAAA,QACrD,eAAe,CAACA,SAAQA,KAAI,SAAS;AAAA,QACrC,gBAAgB,CAACA,MAAK,QAAQ,IAAI,OAAO,SAASA,KAAI;AAAA,QACtD,oBAAoB,CAACA,MAAK,QAAQ,IAAI,OAAO,aAAaA,KAAI;AAAA,MAChE;AAAA,MAEA,QAAQ;AAAA,QACN,kBAAkB,CAACA,SAAQA,KAAI;AAAA,QAC/B,cAAc,CAACA,SAAQA,KAAI;AAAA,MAC7B;AAAA,MAEA,SAAS;AAAA,QACP,qBAAqBA,MAAK;AACxB,UAAAA,KAAI,aAAa,KAAK,IAAI,IAAIA,KAAI;AAAA,QACpC;AAAA,QACA,aAAaA,MAAK;AAChB,UAAAA,KAAI,YAAY,KAAK,IAAI;AAAA,QAC3B;AAAA,QACA,qBAAqB,MAAM,MAAM,EAAE,KAAK,GAAG;AACzC,eAAK,WAAW,EAAE,MAAM,gBAAgB,IAAI,KAAK,GAAG,CAAC;AAAA,QACvD;AAAA,QACA,gBAAgBA,MAAK;AACnB,UAAAA,KAAI,YAAY;AAAA,QAClB;AAAA,QACA,cAAcA,MAAK;AACjB,UAAAA,KAAI,UAAU;AAAA,QAChB;AAAA,QACA,aAAaA,MAAK;AAChB,UAAAA,KAAI,SAAS;AAAA,QACf;AAAA,QACA,eAAeA,MAAK;AAClB,UAAAA,KAAI,WAAW;AAAA,QACjB;AAAA,QACA,WAAWA,MAAK,KAAK;AACnB,gBAAM,EAAE,UAAAC,WAAU,MAAAC,MAAK,IAAI,IAAI;AAC/B,gBAAM,OAAO,iBAAiBD,WAAUC,KAAI;AAC5C,iBAAO,OAAOF,MAAK,EAAE,GAAG,IAAI,OAAO,UAAU,MAAM,WAAW,KAAK,CAAC;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADpJO,SAAS,aAAa,aAAsC;AACjE,QAAM,MAAMG,SAAQ,WAAW;AAC/B,SAAOC,eAAmC;AAAA,IACxC,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,SAAS;AAAA,MACP,KAAK;AAAA,MACL,KAAK,OAAO;AAAA,MACZ,QAAQ,CAAC;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,MACpB,SAAS,EAAE,MAAM,OAAO,OAAO,OAAO,KAAK,OAAO,QAAQ,MAAM;AAAA,MAChE,GAAG;AAAA,IACL;AAAA,IAEA,UAAU;AAAA,MACR,OAAO,CAACC,SAAQA,KAAI,OAAO;AAAA,IAC7B;AAAA,IAEA,IAAI;AAAA,MACF,OAAO,CAAC;AAAA,MAER,aAAa;AAAA,QACX,SAAS,CAAC,MAAM,KAAK,EAAE,KAAK,MAAM;AAChC,eAAK,UAAU,SAAS,IAAI,EAAE;AAAA,QAChC;AAAA,MACF;AAAA,MAEA,WAAW;AAAA,QACT,SAAS,CAACA,SAAQ;AAChB,UAAAA,KAAI,OAAO,QAAQ,CAAC,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,cAAc;AAAA,QACZ,SAAS,CAAC,MAAM,KAAK,EAAE,KAAK,MAAM;AAChC,eAAK,UAAU,UAAU,IAAI,EAAE;AAAA,QACjC;AAAA,MACF;AAAA,MAEA,YAAY;AAAA,QACV,SAAS,CAACA,SAAQ;AAChB,UAAAA,KAAI,OAAO,QAAQ,CAAC,UAAU,MAAM,KAAK,QAAQ,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,MAEA,WAAW;AAAA,QACT,OAAO,CAACA,SAAQA,KAAI,OAAO,SAASA,KAAI;AAAA,QACxC,SAAS,CAACA,MAAK,KAAK,EAAE,KAAK,MAAM;AAC/B,gBAAM,UAA0B;AAAA,YAC9B,WAAWA,KAAI;AAAA,YACf,UAAUA,KAAI;AAAA,YACd,aAAaA,KAAI;AAAA,YACjB,QAAQA,KAAI;AAAA,YACZ,GAAG,IAAI;AAAA,YACP,iBAAiBA,KAAI;AAAA,YACrB,oBAAoBA,KAAI;AAAA,YACxB,KAAKA,KAAI;AAAA,YACT,aAAaA,KAAI;AAAA,UACnB;AACA,gBAAM,QAAQ,mBAAmB,OAAO;AACxC,gBAAM,QAAQ,KAAK,MAAM,KAAK;AAC9B,UAAAA,KAAI,OAAO,KAAK,KAAK;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,cAAc;AAAA,QACZ,SAAS,CAAC,MAAM,KAAK,EAAE,KAAK,MAAM;AAChC,eAAK,UAAU,EAAE,MAAM,UAAU,OAAO,IAAI,MAAM,GAAG,IAAI,EAAE;AAAA,QAC7D;AAAA,MACF;AAAA,MAEA,eAAe;AAAA,QACb,SAAS,CAAC,MAAM,KAAK,EAAE,KAAK,MAAM;AAChC,eAAK,UAAU,WAAW,IAAI,EAAE;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,aAAa;AAAA,QACX,SAAS,CAACA,SAAQ;AAChB,UAAAA,KAAI,OAAO,QAAQ,CAAC,UAAU,MAAM,KAAK,SAAS,CAAC;AAAA,QACrD;AAAA,MACF;AAAA,MAEA,cAAc;AAAA,QACZ,SAAS,CAACA,MAAK,KAAK,EAAE,KAAK,MAAM;AAC/B,eAAK,UAAU,IAAI,EAAE;AACrB,gBAAM,QAAQA,KAAI,OAAO,UAAU,CAAC,UAAU,MAAM,OAAO,IAAI,EAAE;AACjE,UAAAA,KAAI,OAAO,OAAO,OAAO,CAAC;AAAA,QAC5B;AAAA,MACF;AAAA,MAEA,YAAY;AAAA,QACV,SAAS,CAACA,MAAK,MAAM,EAAE,KAAK,MAAM;AAChC,UAAAA,KAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,MAAM,EAAE,CAAC;AACtD,iBAAOA,KAAI,OAAO;AAAQ,YAAAA,KAAI,OAAO,IAAI;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AEvGO,SAAS,QAA6B,OAAc,MAAY,WAA6C;AAClH,QAAM,YAAY,MAAM,OAAO,SAAS;AACxC,QAAM,WAAW,MAAM,OAAO,QAAQ;AAEtC,QAAM,qBAAqB,MAAM,QAAQ;AACzC,QAAM,YAAY,MAAM,QAAQ;AAEhC,SAAO;AAAA,IACL,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,MAAM,QAAQ;AAAA,IACrB,aAAa,MAAM,QAAQ;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM,QAAQ,QAAQ;AAAA,IAE7B,QAAQ;AACN,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,SAAS;AACP,WAAK,QAAQ;AAAA,IACf;AAAA,IAEA,UAAU;AACR,WAAK,SAAS;AAAA,IAChB;AAAA,IAEA,WAAW,UAAU,QAAQ;AAAA,MAC3B,GAAG,MAAM,KAAK;AAAA,MACd,KAAK,MAAM,QAAQ;AAAA,MACnB,IAAI,IAAI,UAAU,MAAM,OAAO;AAAA,MAC/B,cAAc,YAAY,SAAS;AAAA,MACnC,aAAa,MAAM,QAAQ;AAAA,MAC3B,kBAAkB;AAAA,MAClB,MAAM;AAAA,MACN,eAAe;AAAA,MACf,UAAU;AAAA,MACV,OAAO;AAAA,QACL,UAAU;AAAA,QACV,eAAe;AAAA,QACf,QAAQ;AAAA,QACR,kBAAkB,GAAG,MAAM,QAAQ,WAAW;AAAA,QAC9C,cAAc,GAAG,MAAM,QAAQ,QAAQ;AAAA,MACzC;AAAA,MACA,UAAU,OAAO;AACf,YAAI,MAAM,OAAO,UAAU;AACzB,eAAK,SAAS;AACd,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,MACA,UAAU;AACR,YAAI,oBAAoB;AACtB,eAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,MACA,SAAS;AACP,YAAI,oBAAoB;AACtB,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,MACA,iBAAiB;AACf,YAAI,oBAAoB;AACtB,eAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,MACA,iBAAiB;AACf,YAAI,oBAAoB;AACtB,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IAED,YAAY,UAAU,QAAQ;AAAA,MAC5B,GAAG,MAAM,MAAM;AAAA,MACf,IAAI,IAAI,WAAW,MAAM,OAAO;AAAA,IAClC,CAAC;AAAA,IAED,kBAAkB,UAAU,QAAQ;AAAA,MAClC,GAAG,MAAM,YAAY;AAAA,MACrB,IAAI,IAAI,iBAAiB,MAAM,OAAO;AAAA,IACxC,CAAC;AAAA,IAED,mBAAmB,UAAU,OAAO;AAAA,MAClC,IAAI,IAAI,kBAAkB,MAAM,OAAO;AAAA,MACvC,GAAG,MAAM,aAAa;AAAA,MACtB,MAAM;AAAA,MACN,cAAc;AAAA,MACd,UAAU;AACR,aAAK,SAAS;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC5EO,IAAM,QAAQ;AAAA,EACnB,SAAS;AAAA,EACT,SAAS;AACX;","names":["offset","createMachine","compact","ctx","duration","type","compact","createMachine","ctx"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/toast",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "Core logic for the toast widget implemented as a state machine",
5
5
  "keywords": [
6
6
  "js",
@@ -27,12 +27,12 @@
27
27
  "url": "https://github.com/chakra-ui/zag/issues"
28
28
  },
29
29
  "dependencies": {
30
- "@zag-js/anatomy": "0.28.0",
31
- "@zag-js/core": "0.28.0",
32
- "@zag-js/dom-query": "0.28.0",
33
- "@zag-js/dom-event": "0.28.0",
34
- "@zag-js/utils": "0.28.0",
35
- "@zag-js/types": "0.28.0"
30
+ "@zag-js/anatomy": "0.29.0",
31
+ "@zag-js/core": "0.29.0",
32
+ "@zag-js/dom-query": "0.29.0",
33
+ "@zag-js/dom-event": "0.29.0",
34
+ "@zag-js/utils": "0.29.0",
35
+ "@zag-js/types": "0.29.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "clean-package": "2.2.0"
package/src/index.ts CHANGED
@@ -8,6 +8,8 @@ export type {
8
8
  MachineApi as Api,
9
9
  GroupMachineApi as GroupApi,
10
10
  GroupMachineContext,
11
+ GroupProps,
12
+ GroupState,
11
13
  MachineContext,
12
14
  MachineState,
13
15
  Placement,
@@ -17,7 +17,7 @@ export type Type = "success" | "error" | "loading" | "info" | "custom"
17
17
 
18
18
  export type Placement = "top-start" | "top" | "top-end" | "bottom-start" | "bottom" | "bottom-end"
19
19
 
20
- export interface BaseOptions {
20
+ export interface GlobalToastOptions {
21
21
  /**
22
22
  * Whether to pause toast when the user leaves the browser tab
23
23
  */
@@ -80,14 +80,14 @@ export interface ToastOptions {
80
80
  onUpdate?: VoidFunction
81
81
  }
82
82
 
83
- export type Options = Partial<ToastOptions & BaseOptions>
83
+ export type Options = Partial<ToastOptions & GlobalToastOptions>
84
84
 
85
85
  /* -----------------------------------------------------------------------------
86
86
  * Machine context
87
87
  * -----------------------------------------------------------------------------*/
88
88
 
89
89
  export interface MachineContext
90
- extends BaseOptions,
90
+ extends GlobalToastOptions,
91
91
  RootProperties,
92
92
  CommonProperties,
93
93
  Omit<ToastOptions, "removeDelay"> {
@@ -121,7 +121,7 @@ export type Send = S.Send
121
121
 
122
122
  export type Service = Machine<MachineContext, MachineState>
123
123
 
124
- interface GroupPublicContext extends BaseOptions, DirectionProperty, CommonProperties {
124
+ interface GroupPublicContext extends GlobalToastOptions, DirectionProperty, CommonProperties {
125
125
  /**
126
126
  * The gutter or spacing between toasts
127
127
  */