@zag-js/toast 0.65.1 → 0.66.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -19,6 +19,16 @@ interface GenericOptions<T = string> {
19
19
  interface StatusChangeDetails {
20
20
  status: Status;
21
21
  }
22
+ interface ActionOptions {
23
+ /**
24
+ * The label of the action
25
+ */
26
+ label: string;
27
+ /**
28
+ * The function to call when the action is clicked
29
+ */
30
+ onClick: () => void;
31
+ }
22
32
  interface Options<T> extends GenericOptions<T> {
23
33
  /**
24
34
  * The duration the toast will be visible
@@ -45,10 +55,14 @@ interface Options<T> extends GenericOptions<T> {
45
55
  * Function called when the toast is visible
46
56
  */
47
57
  onStatusChange?(details: StatusChangeDetails): void;
58
+ /**
59
+ * The action of the toast
60
+ */
61
+ action?: ActionOptions;
48
62
  /**
49
63
  * The metadata of the toast
50
64
  */
51
- meta?: Record<string, unknown>;
65
+ meta?: Record<string, any>;
52
66
  }
53
67
  interface MachineContext<T = any> extends Omit<CommonProperties, "id">, MachinePrivateContext, Omit<Options<T>, "removeDelay"> {
54
68
  /**
@@ -288,4 +302,4 @@ declare const group: {
288
302
  machine: typeof groupMachine;
289
303
  };
290
304
 
291
- export { type MachineApi as Api, type GenericOptions, type GroupMachineApi as GroupApi, type GroupMachineContext, type GroupProps, type GroupService, type GroupState, type MachineContext, type Options, type Placement, type PromiseOptions, type Service, type Status, type StatusChangeDetails, type Type, anatomy, connect, createToastMachine as createMachine, group };
305
+ export { type ActionOptions, type MachineApi as Api, type GenericOptions, type GroupMachineApi as GroupApi, type GroupMachineContext, type GroupProps, type GroupService, type GroupState, type MachineContext, type Options, type Placement, type PromiseOptions, type Service, type Status, type StatusChangeDetails, type Type, anatomy, connect, createToastMachine as createMachine, group };
package/dist/index.d.ts CHANGED
@@ -19,6 +19,16 @@ interface GenericOptions<T = string> {
19
19
  interface StatusChangeDetails {
20
20
  status: Status;
21
21
  }
22
+ interface ActionOptions {
23
+ /**
24
+ * The label of the action
25
+ */
26
+ label: string;
27
+ /**
28
+ * The function to call when the action is clicked
29
+ */
30
+ onClick: () => void;
31
+ }
22
32
  interface Options<T> extends GenericOptions<T> {
23
33
  /**
24
34
  * The duration the toast will be visible
@@ -45,10 +55,14 @@ interface Options<T> extends GenericOptions<T> {
45
55
  * Function called when the toast is visible
46
56
  */
47
57
  onStatusChange?(details: StatusChangeDetails): void;
58
+ /**
59
+ * The action of the toast
60
+ */
61
+ action?: ActionOptions;
48
62
  /**
49
63
  * The metadata of the toast
50
64
  */
51
- meta?: Record<string, unknown>;
65
+ meta?: Record<string, any>;
52
66
  }
53
67
  interface MachineContext<T = any> extends Omit<CommonProperties, "id">, MachinePrivateContext, Omit<Options<T>, "removeDelay"> {
54
68
  /**
@@ -288,4 +302,4 @@ declare const group: {
288
302
  machine: typeof groupMachine;
289
303
  };
290
304
 
291
- export { type MachineApi as Api, type GenericOptions, type GroupMachineApi as GroupApi, type GroupMachineContext, type GroupProps, type GroupService, type GroupState, type MachineContext, type Options, type Placement, type PromiseOptions, type Service, type Status, type StatusChangeDetails, type Type, anatomy, connect, createToastMachine as createMachine, group };
305
+ export { type ActionOptions, type MachineApi as Api, type GenericOptions, type GroupMachineApi as GroupApi, type GroupMachineContext, type GroupProps, type GroupService, type GroupState, type MachineContext, type Options, type Placement, type PromiseOptions, type Service, type Status, type StatusChangeDetails, type Type, anatomy, connect, createToastMachine as createMachine, group };
package/dist/index.js CHANGED
@@ -921,6 +921,7 @@ function connect(state, send, normalize) {
921
921
  type: "button",
922
922
  onClick(event) {
923
923
  if (event.defaultPrevented) return;
924
+ state.context.action?.onClick?.();
924
925
  send("DISMISS");
925
926
  }
926
927
  });
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 GenericOptions,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupService,\n GroupState,\n MachineContext,\n Placement,\n PromiseOptions,\n Service,\n StatusChangeDetails,\n Options,\n Status,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n","import { isMachine, subscribe } from \"@zag-js/core\"\nimport { contains } from \"@zag-js/dom-query\"\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, GroupService, GroupState, Options, Placement } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupConnect<T extends PropTypes, O = any>(\n serviceOrState: GroupState<O> | GroupService<O>,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T, O> {\n //\n\n function getState(): GroupState<O> {\n const result = isMachine(serviceOrState) ? serviceOrState.getState() : serviceOrState\n return result as GroupState<O>\n }\n\n function getToastsByPlacementImpl(placement: Placement) {\n return getToastsByPlacement(getState().context.toasts, placement)\n }\n\n function isVisible(id: string) {\n const toasts = getState().context.toasts\n if (!toasts.length) return false\n return !!toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options<O>) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return id\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options<O>) {\n if (!isVisible(id)) return id\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options<O>) {\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 getCount() {\n return getState().context.count\n },\n getPlacements() {\n const toasts = getState().context.toasts\n const placements = toasts.map((toast) => toast.state.context.placement!)\n return Array.from(new Set(placements))\n },\n getToastsByPlacement: getToastsByPlacementImpl,\n isVisible,\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 = getToastsByPlacementImpl(placement)\n toasts.forEach((toast) => dismiss(toast.id))\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 runIfFn(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 .finally(() => {\n options.finally?.()\n })\n\n return id\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 const state = getState()\n const hotkeyLabel = state.context.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\")\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n id: dom.getRegionId(placement),\n \"data-placement\": placement,\n \"data-side\": side,\n \"data-align\": align,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n onMouseMove() {\n send({ type: \"REGION.POINTER_ENTER\", placement })\n },\n onMouseLeave() {\n send({ type: \"REGION.POINTER_LEAVE\", placement })\n },\n onFocus(event) {\n send({ type: \"REGION.FOCUS\", target: event.relatedTarget })\n },\n onBlur(event) {\n if (state.context.isFocusWithin && !contains(event.currentTarget, event.relatedTarget)) {\n send({ type: \"REGION.BLUR\" })\n }\n },\n })\n },\n\n subscribe(fn) {\n const state = getState()\n return subscribe(state.context.toasts, () => {\n const toasts = getToastsByPlacementImpl(state.context.placement)\n const contexts = toasts.map((toast) => toast.getState().context)\n fn(contexts)\n })\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\n \"group\",\n \"root\",\n \"title\",\n \"description\",\n \"actionTrigger\",\n \"closeTrigger\",\n)\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement, GroupMachineContext as GroupCtx } from \"./toast.types\"\n\nexport const dom = createScope({\n getRegionId: (placement: Placement) => `toast-group:${placement}`,\n getRegionEl: (ctx: GroupCtx, placement: Placement) => dom.getById(ctx, `toast-group:${placement}`),\n\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\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 { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement<T>(toasts: Service<T>[], placement: Placement) {\n return toasts.filter((toast) => toast.state.context.placement === placement)\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n DEFAULT: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: NonNullable<MachineContext[\"type\"]>) {\n return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT\n}\n\nexport function getGroupPlacementStyle<T>(ctx: GroupMachineContext<T>, 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 \"--gap\": `${ctx.gap}px`,\n \"--first-height\": `${ctx.heights[0]?.height || 0}px`,\n zIndex: MAX_Z_INDEX,\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 = `max(env(safe-area-inset-top, 0px), ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n\nexport function getPlacementStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const [side] = ctx.placement!.split(\"-\")\n const sibling = !ctx.frontmost\n const overlap = !ctx.stacked\n\n const styles: Style = {\n position: \"absolute\",\n pointerEvents: \"auto\",\n \"--opacity\": \"0\",\n \"--remove-delay\": `${ctx.removeDelay}ms`,\n \"--duration\": `${ctx.type === \"loading\" ? Number.MAX_SAFE_INTEGER : ctx.duration}ms`,\n \"--initial-height\": `${ctx.height}px`,\n \"--offset\": `${ctx.offset}px`,\n \"--index\": ctx.index,\n \"--z-index\": ctx.zIndex,\n \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n \"--y\": \"100%\",\n \"--x\": \"0\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (side === \"top\") {\n //\n assign({\n top: \"0\",\n \"--sign\": \"-1\",\n \"--y\": \"-100%\",\n \"--lift\": \"1\",\n })\n //\n } else if (side === \"bottom\") {\n //\n assign({\n bottom: \"0\",\n \"--sign\": \"1\",\n \"--y\": \"100%\",\n \"--lift\": \"-1\",\n })\n }\n\n if (ctx.mounted) {\n assign({\n \"--y\": \"0\",\n \"--opacity\": \"1\",\n })\n\n if (ctx.stacked) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset))\",\n \"--height\": \"var(--initial-height)\",\n })\n }\n }\n\n if (!visible) {\n assign({\n \"--opacity\": \"0\",\n pointerEvents: \"none\",\n })\n }\n\n if (sibling && overlap) {\n assign({\n \"--base-scale\": \"var(--index) * 0.05 + 1\",\n \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n \"--scale\": \"calc(-1 * var(--base-scale))\",\n \"--height\": \"var(--first-height)\",\n })\n\n if (!visible) {\n assign({\n \"--y\": \"calc(var(--sign) * 40%)\",\n })\n }\n }\n\n if (sibling && ctx.stacked && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\",\n })\n }\n\n if (ctx.frontmost && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * -100%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostBeforeStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const styles: Style = {\n position: \"absolute\",\n inset: \"0\",\n scale: \"1 2\",\n pointerEvents: visible ? \"none\" : \"auto\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (ctx.frontmost && !visible) {\n assign({\n height: \"calc(var(--initial-height) + 80%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostAfterStyle<T>(_ctx: MachineContext<T>, _visible: boolean): Style {\n return {\n position: \"absolute\",\n left: \"0\",\n height: \"calc(var(--gap) + 2px)\",\n bottom: \"100%\",\n width: \"100%\",\n }\n}\n","import { createMachine, ref } from \"@zag-js/core\"\nimport { trackDismissableBranch } from \"@zag-js/dismissable\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type {\n GroupMachineContext,\n GroupMachineState,\n MachineContext,\n Service,\n UserDefinedGroupContext,\n} from \"./toast.types\"\nimport { getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupMachine<T = any>(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext<T>, GroupMachineState>(\n {\n id: \"toaster\",\n initial: ctx.overlap ? \"overlap\" : \"stack\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\n toasts: [],\n lastFocusedEl: null,\n isFocusWithin: false,\n heights: [],\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n activities: [\"trackDocumentVisibility\", \"trackHotKeyPress\"],\n\n watch: {\n toasts: [\"collapsedIfEmpty\", \"setDismissableBranch\"],\n },\n\n exit: [\"removeToasts\", \"clearDismissableBranch\", \"clearLastFocusedEl\"],\n\n on: {\n PAUSE_TOAST: {\n actions: [\"pauseToast\"],\n },\n PAUSE_ALL: {\n actions: [\"pauseToasts\"],\n },\n RESUME_TOAST: {\n actions: [\"resumeToast\"],\n },\n RESUME_ALL: {\n actions: [\"resumeToasts\"],\n },\n ADD_TOAST: {\n guard: \"isWithinRange\",\n actions: [\"createToast\", \"syncToastIndex\"],\n },\n UPDATE_TOAST: {\n actions: [\"updateToast\"],\n },\n DISMISS_TOAST: {\n actions: [\"dismissToast\"],\n },\n DISMISS_ALL: {\n actions: [\"dismissToasts\"],\n },\n REMOVE_TOAST: {\n actions: [\"removeToast\", \"syncToastIndex\", \"syncToastOffset\"],\n },\n REMOVE_ALL: {\n actions: [\"removeToasts\"],\n },\n UPDATE_HEIGHT: {\n actions: [\"syncHeights\", \"syncToastOffset\"],\n },\n \"DOC.HOTKEY\": {\n actions: [\"focusRegionEl\"],\n },\n \"REGION.BLUR\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n {\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n ],\n },\n\n states: {\n stack: {\n entry: [\"expandToasts\"],\n on: {\n \"REGION.POINTER_LEAVE\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\"],\n },\n {\n actions: [\"resumeToasts\"],\n },\n ],\n \"REGION.OVERLAP\": {\n target: \"overlap\",\n },\n \"REGION.FOCUS\": {\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n \"REGION.POINTER_ENTER\": {\n actions: [\"pauseToasts\"],\n },\n },\n },\n overlap: {\n entry: [\"collapseToasts\"],\n on: {\n \"REGION.STACK\": {\n target: \"stack\",\n },\n \"REGION.POINTER_ENTER\": {\n target: \"stack\",\n actions: [\"pauseToasts\"],\n },\n \"REGION.FOCUS\": {\n target: \"stack\",\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isWithinRange: (ctx) => ctx.toasts.length < ctx.max,\n isOverlapping: (ctx) => !!ctx.overlap,\n },\n activities: {\n trackHotKeyPress(ctx, _evt, { send }) {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = ctx.hotkey.every((key) => (event as any)[key] || event.code === key)\n if (!isHotkeyPressed) return\n send({ type: \"DOC.HOTKEY\" })\n }\n return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true })\n },\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_ALL\" : \"RESUME_ALL\")\n })\n },\n },\n actions: {\n setDismissableBranch(ctx) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n const hasToasts = currentToasts.length > 0\n\n if (!hasToasts) {\n ctx._cleanup?.()\n return\n }\n\n if (hasToasts && ctx._cleanup) {\n return\n }\n\n // mark toast as a dismissable branch\n // so that interacting with them will not close dismissable layers\n const groupEl = () => dom.getRegionEl(ctx, ctx.placement)\n ctx._cleanup = trackDismissableBranch(groupEl, { defer: true })\n },\n clearDismissableBranch(ctx) {\n ctx._cleanup?.()\n },\n focusRegionEl(ctx) {\n queueMicrotask(() => {\n dom.getRegionEl(ctx, ctx.placement)?.focus()\n })\n },\n expandToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = true\n })\n },\n collapseToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = false\n })\n },\n collapsedIfEmpty(ctx, _evt, { send }) {\n if (!ctx.overlap || ctx.toasts.length > 1) return\n send(\"REGION.OVERLAP\")\n },\n pauseToast(_ctx, evt, { self }) {\n self.sendChild(\"PAUSE\", evt.id)\n },\n pauseToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n resumeToast(_ctx, evt, { self }) {\n self.sendChild(\"RESUME\", evt.id)\n },\n resumeToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n measureToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"MEASURE\"))\n },\n createToast(ctx, evt, { self, getState }) {\n const options: MachineContext<T> = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n ...evt.toast,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n stacked: getState().matches(\"stack\"),\n }\n\n const toast = createToastMachine(options)\n\n const actor = self.spawn(toast)\n ctx.toasts = [actor, ...ctx.toasts]\n },\n updateToast(_ctx, evt, { self }) {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n dismissToast(_ctx, evt, { self }) {\n self.sendChild(\"DISMISS\", evt.id)\n },\n dismissToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n removeToast(ctx, evt, { self }) {\n self.stopChild(evt.id)\n ctx.toasts = ctx.toasts.filter((toast) => toast.id !== evt.id)\n ctx.heights = ctx.heights.filter((height) => height.id !== evt.id)\n },\n removeToasts(ctx, _evt, { self }) {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n ctx.toasts = []\n ctx.heights = []\n },\n syncHeights(ctx, evt) {\n const existing = ctx.heights.find((height) => height.id === evt.id)\n if (existing) {\n existing.height = evt.height\n existing.placement = evt.placement\n } else {\n const newHeight = { id: evt.id, height: evt.height, placement: evt.placement }\n ctx.heights = [newHeight, ...ctx.heights]\n }\n },\n syncToastIndex(ctx) {\n each(ctx, (toast, index, toasts) => {\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.index = index\n toast.state.context.frontmost = index === 0\n toast.state.context.zIndex = toasts.length - index\n })\n },\n syncToastOffset(ctx, evt) {\n const placement = evt.placement ?? ctx.placement\n\n // Notify each toast of it's index\n each({ ...ctx, placement }, (toast) => {\n const heightIndex = Math.max(\n ctx.heights.findIndex((height) => height.id === toast.id),\n 0,\n )\n\n // calculate offset until toast\n const toastsHeightBefore = ctx.heights.reduce((prev, curr, reducerIndex) => {\n if (reducerIndex >= heightIndex) return prev\n return prev + curr.height\n }, 0)\n\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.offset = heightIndex * ctx.gap + toastsHeightBefore\n })\n },\n setLastFocusedEl(ctx, evt) {\n if (ctx.isFocusWithin || !evt.target) return\n ctx.isFocusWithin = true\n ctx.lastFocusedEl = ref(evt.target)\n },\n restoreLastFocusedEl(ctx) {\n ctx.isFocusWithin = false\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n },\n clearLastFocusedEl(ctx) {\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n ctx.isFocusWithin = false\n },\n },\n },\n )\n}\n\nfunction each(ctx: GroupMachineContext, fn: (toast: Service<any>, index: number, arr: Service<any>[]) => void) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n currentToasts.forEach(fn)\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { queryAll, raf } from \"@zag-js/dom-query\"\nimport { compact, warn } 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<T>(options: Options<T>) {\n const { type = \"info\", duration, id = \"1\", placement = \"bottom\", removeDelay = 200, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext<T>, MachineState>(\n {\n id,\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n height: 0,\n offset: 0,\n frontmost: false,\n mounted: false,\n index: -1,\n zIndex: 0,\n },\n\n initial: type === \"loading\" ? \"visible:persist\" : \"visible\",\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"visible:persist\",\n actions: [\"setContext\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"visible:updating\",\n actions: [\"setContext\"],\n },\n {\n actions: [\"setContext\"],\n },\n ],\n MEASURE: {\n actions: [\"measureHeight\"],\n },\n },\n\n entry: [\"invokeOnVisible\"],\n\n activities: [\"trackHeight\"],\n\n states: {\n \"visible:updating\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"visible\",\n },\n },\n\n \"visible:persist\": {\n tags: [\"visible\", \"paused\"],\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"visible\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n visible: {\n tags: [\"visible\"],\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"visible:persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnDismiss\",\n after: {\n REMOVE_DELAY: {\n target: \"unmounted\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n unmounted: {\n entry: \"invokeOnUnmount\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackHeight(ctx, _evt, { self }) {\n let cleanup: VoidFunction\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n ctx.mounted = true\n\n const ghosts = queryAll(rootEl, \"[data-ghost]\")\n\n warn(\n ghosts.length !== 2,\n \"[toast] No ghost element found in toast. Render the `ghostBefore` and `ghostAfter` elements\",\n )\n\n const syncHeight = () => {\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n\n ctx.height = newHeight\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n }\n\n syncHeight()\n\n const win = dom.getWin(ctx)\n\n const observer = new win.MutationObserver(syncHeight)\n observer.observe(rootEl, { childList: true, subtree: true, characterData: true })\n\n cleanup = () => observer.disconnect()\n })\n\n return () => cleanup?.()\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 != null && evt.toast.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration != null && 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 measureHeight(ctx, _evt, { self }) {\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n\n ctx.mounted = true\n\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n ctx.height = newHeight\n\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n })\n },\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 invokeOnDismiss(ctx) {\n ctx.onStatusChange?.({ status: \"dismissing\" })\n },\n invokeOnUnmount(ctx) {\n ctx.onStatusChange?.({ status: \"unmounted\" })\n },\n invokeOnVisible(ctx) {\n ctx.onStatusChange?.({ status: \"visible\" })\n },\n setContext(ctx, evt) {\n const duration = evt.toast?.duration\n const type = evt.toast?.type ?? ctx.type\n\n const computedDuration = getToastDuration(duration, type)\n\n Object.assign(ctx, {\n ...evt.toast,\n duration: computedDuration,\n remaining: computedDuration,\n })\n },\n },\n },\n )\n}\n","import { dataAttr } from \"@zag-js/dom-query\"\nimport 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\"\nimport { getGhostAfterStyle, getGhostBeforeStyle, getPlacementStyle } from \"./toast.utils\"\n\nexport function connect<T extends PropTypes, O>(\n state: State<O>,\n send: Send,\n normalize: NormalizeProps<T>,\n): MachineApi<T, O> {\n const visible = state.hasTag(\"visible\")\n const paused = state.hasTag(\"paused\")\n\n const placement = state.context.placement!\n const type = state.context.type!\n\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return {\n type: type,\n title: state.context.title,\n description: state.context.description,\n placement,\n visible: visible,\n paused: paused,\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": visible ? \"open\" : \"closed\",\n \"data-type\": type,\n \"data-placement\": placement,\n \"data-align\": align,\n \"data-side\": side,\n \"data-mounted\": dataAttr(state.context.mounted),\n \"data-paused\": dataAttr(paused),\n\n \"data-first\": dataAttr(state.context.frontmost),\n \"data-sibling\": dataAttr(!state.context.frontmost),\n \"data-stack\": dataAttr(state.context.stacked),\n \"data-overlap\": dataAttr(!state.context.stacked),\n\n role: \"status\",\n \"aria-atomic\": \"true\",\n \"aria-describedby\": state.context.description ? dom.getDescriptionId(state.context) : undefined,\n \"aria-labelledby\": state.context.title ? dom.getTitleId(state.context) : undefined,\n tabIndex: 0,\n style: getPlacementStyle(state.context, visible),\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n })\n },\n\n /* Leave a ghost div to avoid setting hover to false when transitioning out */\n getGhostBeforeProps() {\n return normalize.element({\n \"data-ghost\": \"before\",\n style: getGhostBeforeStyle(state.context, visible),\n })\n },\n\n /* Needed to avoid setting hover to false when in between toasts */\n getGhostAfterProps() {\n return normalize.element({\n \"data-ghost\": \"after\",\n style: getGhostAfterStyle(state.context, visible),\n })\n },\n\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n })\n },\n\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n })\n },\n\n getActionTriggerProps() {\n return normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\n })\n },\n\n getCloseTriggerProps() {\n return normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\n })\n },\n }\n}\n"],"mappings":"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","names":["import_dom_query","import_dom_query","offset","import_core","import_utils","import_core","import_dom_query","import_utils","ctx","duration","type","computedDuration","ctx","import_dom_query"]}
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 ActionOptions,\n MachineApi as Api,\n GenericOptions,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupService,\n GroupState,\n MachineContext,\n Options,\n Placement,\n PromiseOptions,\n Service,\n Status,\n StatusChangeDetails,\n Type,\n} from \"./toast.types\"\nexport { createMachine }\n\nexport const group = {\n connect: groupConnect,\n machine: groupMachine,\n}\n","import { isMachine, subscribe } from \"@zag-js/core\"\nimport { contains } from \"@zag-js/dom-query\"\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, GroupService, GroupState, Options, Placement } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupConnect<T extends PropTypes, O = any>(\n serviceOrState: GroupState<O> | GroupService<O>,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T, O> {\n //\n\n function getState(): GroupState<O> {\n const result = isMachine(serviceOrState) ? serviceOrState.getState() : serviceOrState\n return result as GroupState<O>\n }\n\n function getToastsByPlacementImpl(placement: Placement) {\n return getToastsByPlacement(getState().context.toasts, placement)\n }\n\n function isVisible(id: string) {\n const toasts = getState().context.toasts\n if (!toasts.length) return false\n return !!toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options<O>) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return id\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options<O>) {\n if (!isVisible(id)) return id\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options<O>) {\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 getCount() {\n return getState().context.count\n },\n getPlacements() {\n const toasts = getState().context.toasts\n const placements = toasts.map((toast) => toast.state.context.placement!)\n return Array.from(new Set(placements))\n },\n getToastsByPlacement: getToastsByPlacementImpl,\n isVisible,\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 = getToastsByPlacementImpl(placement)\n toasts.forEach((toast) => dismiss(toast.id))\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 runIfFn(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 .finally(() => {\n options.finally?.()\n })\n\n return id\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 const state = getState()\n const hotkeyLabel = state.context.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\")\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n id: dom.getRegionId(placement),\n \"data-placement\": placement,\n \"data-side\": side,\n \"data-align\": align,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n onMouseMove() {\n send({ type: \"REGION.POINTER_ENTER\", placement })\n },\n onMouseLeave() {\n send({ type: \"REGION.POINTER_LEAVE\", placement })\n },\n onFocus(event) {\n send({ type: \"REGION.FOCUS\", target: event.relatedTarget })\n },\n onBlur(event) {\n if (state.context.isFocusWithin && !contains(event.currentTarget, event.relatedTarget)) {\n send({ type: \"REGION.BLUR\" })\n }\n },\n })\n },\n\n subscribe(fn) {\n const state = getState()\n return subscribe(state.context.toasts, () => {\n const toasts = getToastsByPlacementImpl(state.context.placement)\n const contexts = toasts.map((toast) => toast.getState().context)\n fn(contexts)\n })\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\n \"group\",\n \"root\",\n \"title\",\n \"description\",\n \"actionTrigger\",\n \"closeTrigger\",\n)\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement, GroupMachineContext as GroupCtx } from \"./toast.types\"\n\nexport const dom = createScope({\n getRegionId: (placement: Placement) => `toast-group:${placement}`,\n getRegionEl: (ctx: GroupCtx, placement: Placement) => dom.getById(ctx, `toast-group:${placement}`),\n\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\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 { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement<T>(toasts: Service<T>[], placement: Placement) {\n return toasts.filter((toast) => toast.state.context.placement === placement)\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n DEFAULT: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: NonNullable<MachineContext[\"type\"]>) {\n return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT\n}\n\nexport function getGroupPlacementStyle<T>(ctx: GroupMachineContext<T>, 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 \"--gap\": `${ctx.gap}px`,\n \"--first-height\": `${ctx.heights[0]?.height || 0}px`,\n zIndex: MAX_Z_INDEX,\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 = `max(env(safe-area-inset-top, 0px), ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n\nexport function getPlacementStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const [side] = ctx.placement!.split(\"-\")\n const sibling = !ctx.frontmost\n const overlap = !ctx.stacked\n\n const styles: Style = {\n position: \"absolute\",\n pointerEvents: \"auto\",\n \"--opacity\": \"0\",\n \"--remove-delay\": `${ctx.removeDelay}ms`,\n \"--duration\": `${ctx.type === \"loading\" ? Number.MAX_SAFE_INTEGER : ctx.duration}ms`,\n \"--initial-height\": `${ctx.height}px`,\n \"--offset\": `${ctx.offset}px`,\n \"--index\": ctx.index,\n \"--z-index\": ctx.zIndex,\n \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n \"--y\": \"100%\",\n \"--x\": \"0\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (side === \"top\") {\n //\n assign({\n top: \"0\",\n \"--sign\": \"-1\",\n \"--y\": \"-100%\",\n \"--lift\": \"1\",\n })\n //\n } else if (side === \"bottom\") {\n //\n assign({\n bottom: \"0\",\n \"--sign\": \"1\",\n \"--y\": \"100%\",\n \"--lift\": \"-1\",\n })\n }\n\n if (ctx.mounted) {\n assign({\n \"--y\": \"0\",\n \"--opacity\": \"1\",\n })\n\n if (ctx.stacked) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset))\",\n \"--height\": \"var(--initial-height)\",\n })\n }\n }\n\n if (!visible) {\n assign({\n \"--opacity\": \"0\",\n pointerEvents: \"none\",\n })\n }\n\n if (sibling && overlap) {\n assign({\n \"--base-scale\": \"var(--index) * 0.05 + 1\",\n \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n \"--scale\": \"calc(-1 * var(--base-scale))\",\n \"--height\": \"var(--first-height)\",\n })\n\n if (!visible) {\n assign({\n \"--y\": \"calc(var(--sign) * 40%)\",\n })\n }\n }\n\n if (sibling && ctx.stacked && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\",\n })\n }\n\n if (ctx.frontmost && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * -100%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostBeforeStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const styles: Style = {\n position: \"absolute\",\n inset: \"0\",\n scale: \"1 2\",\n pointerEvents: visible ? \"none\" : \"auto\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (ctx.frontmost && !visible) {\n assign({\n height: \"calc(var(--initial-height) + 80%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostAfterStyle<T>(_ctx: MachineContext<T>, _visible: boolean): Style {\n return {\n position: \"absolute\",\n left: \"0\",\n height: \"calc(var(--gap) + 2px)\",\n bottom: \"100%\",\n width: \"100%\",\n }\n}\n","import { createMachine, ref } from \"@zag-js/core\"\nimport { trackDismissableBranch } from \"@zag-js/dismissable\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type {\n GroupMachineContext,\n GroupMachineState,\n MachineContext,\n Service,\n UserDefinedGroupContext,\n} from \"./toast.types\"\nimport { getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupMachine<T = any>(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext<T>, GroupMachineState>(\n {\n id: \"toaster\",\n initial: ctx.overlap ? \"overlap\" : \"stack\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\n toasts: [],\n lastFocusedEl: null,\n isFocusWithin: false,\n heights: [],\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n activities: [\"trackDocumentVisibility\", \"trackHotKeyPress\"],\n\n watch: {\n toasts: [\"collapsedIfEmpty\", \"setDismissableBranch\"],\n },\n\n exit: [\"removeToasts\", \"clearDismissableBranch\", \"clearLastFocusedEl\"],\n\n on: {\n PAUSE_TOAST: {\n actions: [\"pauseToast\"],\n },\n PAUSE_ALL: {\n actions: [\"pauseToasts\"],\n },\n RESUME_TOAST: {\n actions: [\"resumeToast\"],\n },\n RESUME_ALL: {\n actions: [\"resumeToasts\"],\n },\n ADD_TOAST: {\n guard: \"isWithinRange\",\n actions: [\"createToast\", \"syncToastIndex\"],\n },\n UPDATE_TOAST: {\n actions: [\"updateToast\"],\n },\n DISMISS_TOAST: {\n actions: [\"dismissToast\"],\n },\n DISMISS_ALL: {\n actions: [\"dismissToasts\"],\n },\n REMOVE_TOAST: {\n actions: [\"removeToast\", \"syncToastIndex\", \"syncToastOffset\"],\n },\n REMOVE_ALL: {\n actions: [\"removeToasts\"],\n },\n UPDATE_HEIGHT: {\n actions: [\"syncHeights\", \"syncToastOffset\"],\n },\n \"DOC.HOTKEY\": {\n actions: [\"focusRegionEl\"],\n },\n \"REGION.BLUR\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n {\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n ],\n },\n\n states: {\n stack: {\n entry: [\"expandToasts\"],\n on: {\n \"REGION.POINTER_LEAVE\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\"],\n },\n {\n actions: [\"resumeToasts\"],\n },\n ],\n \"REGION.OVERLAP\": {\n target: \"overlap\",\n },\n \"REGION.FOCUS\": {\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n \"REGION.POINTER_ENTER\": {\n actions: [\"pauseToasts\"],\n },\n },\n },\n overlap: {\n entry: [\"collapseToasts\"],\n on: {\n \"REGION.STACK\": {\n target: \"stack\",\n },\n \"REGION.POINTER_ENTER\": {\n target: \"stack\",\n actions: [\"pauseToasts\"],\n },\n \"REGION.FOCUS\": {\n target: \"stack\",\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isWithinRange: (ctx) => ctx.toasts.length < ctx.max,\n isOverlapping: (ctx) => !!ctx.overlap,\n },\n activities: {\n trackHotKeyPress(ctx, _evt, { send }) {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = ctx.hotkey.every((key) => (event as any)[key] || event.code === key)\n if (!isHotkeyPressed) return\n send({ type: \"DOC.HOTKEY\" })\n }\n return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true })\n },\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_ALL\" : \"RESUME_ALL\")\n })\n },\n },\n actions: {\n setDismissableBranch(ctx) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n const hasToasts = currentToasts.length > 0\n\n if (!hasToasts) {\n ctx._cleanup?.()\n return\n }\n\n if (hasToasts && ctx._cleanup) {\n return\n }\n\n // mark toast as a dismissable branch\n // so that interacting with them will not close dismissable layers\n const groupEl = () => dom.getRegionEl(ctx, ctx.placement)\n ctx._cleanup = trackDismissableBranch(groupEl, { defer: true })\n },\n clearDismissableBranch(ctx) {\n ctx._cleanup?.()\n },\n focusRegionEl(ctx) {\n queueMicrotask(() => {\n dom.getRegionEl(ctx, ctx.placement)?.focus()\n })\n },\n expandToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = true\n })\n },\n collapseToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = false\n })\n },\n collapsedIfEmpty(ctx, _evt, { send }) {\n if (!ctx.overlap || ctx.toasts.length > 1) return\n send(\"REGION.OVERLAP\")\n },\n pauseToast(_ctx, evt, { self }) {\n self.sendChild(\"PAUSE\", evt.id)\n },\n pauseToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n resumeToast(_ctx, evt, { self }) {\n self.sendChild(\"RESUME\", evt.id)\n },\n resumeToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n measureToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"MEASURE\"))\n },\n createToast(ctx, evt, { self, getState }) {\n const options: MachineContext<T> = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n ...evt.toast,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n stacked: getState().matches(\"stack\"),\n }\n\n const toast = createToastMachine(options)\n\n const actor = self.spawn(toast)\n ctx.toasts = [actor, ...ctx.toasts]\n },\n updateToast(_ctx, evt, { self }) {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n dismissToast(_ctx, evt, { self }) {\n self.sendChild(\"DISMISS\", evt.id)\n },\n dismissToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n removeToast(ctx, evt, { self }) {\n self.stopChild(evt.id)\n ctx.toasts = ctx.toasts.filter((toast) => toast.id !== evt.id)\n ctx.heights = ctx.heights.filter((height) => height.id !== evt.id)\n },\n removeToasts(ctx, _evt, { self }) {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n ctx.toasts = []\n ctx.heights = []\n },\n syncHeights(ctx, evt) {\n const existing = ctx.heights.find((height) => height.id === evt.id)\n if (existing) {\n existing.height = evt.height\n existing.placement = evt.placement\n } else {\n const newHeight = { id: evt.id, height: evt.height, placement: evt.placement }\n ctx.heights = [newHeight, ...ctx.heights]\n }\n },\n syncToastIndex(ctx) {\n each(ctx, (toast, index, toasts) => {\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.index = index\n toast.state.context.frontmost = index === 0\n toast.state.context.zIndex = toasts.length - index\n })\n },\n syncToastOffset(ctx, evt) {\n const placement = evt.placement ?? ctx.placement\n\n // Notify each toast of it's index\n each({ ...ctx, placement }, (toast) => {\n const heightIndex = Math.max(\n ctx.heights.findIndex((height) => height.id === toast.id),\n 0,\n )\n\n // calculate offset until toast\n const toastsHeightBefore = ctx.heights.reduce((prev, curr, reducerIndex) => {\n if (reducerIndex >= heightIndex) return prev\n return prev + curr.height\n }, 0)\n\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.offset = heightIndex * ctx.gap + toastsHeightBefore\n })\n },\n setLastFocusedEl(ctx, evt) {\n if (ctx.isFocusWithin || !evt.target) return\n ctx.isFocusWithin = true\n ctx.lastFocusedEl = ref(evt.target)\n },\n restoreLastFocusedEl(ctx) {\n ctx.isFocusWithin = false\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n },\n clearLastFocusedEl(ctx) {\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n ctx.isFocusWithin = false\n },\n },\n },\n )\n}\n\nfunction each(ctx: GroupMachineContext, fn: (toast: Service<any>, index: number, arr: Service<any>[]) => void) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n currentToasts.forEach(fn)\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { queryAll, raf } from \"@zag-js/dom-query\"\nimport { compact, warn } 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<T>(options: Options<T>) {\n const { type = \"info\", duration, id = \"1\", placement = \"bottom\", removeDelay = 200, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext<T>, MachineState>(\n {\n id,\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n height: 0,\n offset: 0,\n frontmost: false,\n mounted: false,\n index: -1,\n zIndex: 0,\n },\n\n initial: type === \"loading\" ? \"visible:persist\" : \"visible\",\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"visible:persist\",\n actions: [\"setContext\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"visible:updating\",\n actions: [\"setContext\"],\n },\n {\n actions: [\"setContext\"],\n },\n ],\n MEASURE: {\n actions: [\"measureHeight\"],\n },\n },\n\n entry: [\"invokeOnVisible\"],\n\n activities: [\"trackHeight\"],\n\n states: {\n \"visible:updating\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"visible\",\n },\n },\n\n \"visible:persist\": {\n tags: [\"visible\", \"paused\"],\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"visible\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n visible: {\n tags: [\"visible\"],\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"visible:persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnDismiss\",\n after: {\n REMOVE_DELAY: {\n target: \"unmounted\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n unmounted: {\n entry: \"invokeOnUnmount\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackHeight(ctx, _evt, { self }) {\n let cleanup: VoidFunction\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n ctx.mounted = true\n\n const ghosts = queryAll(rootEl, \"[data-ghost]\")\n\n warn(\n ghosts.length !== 2,\n \"[toast] No ghost element found in toast. Render the `ghostBefore` and `ghostAfter` elements\",\n )\n\n const syncHeight = () => {\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n\n ctx.height = newHeight\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n }\n\n syncHeight()\n\n const win = dom.getWin(ctx)\n\n const observer = new win.MutationObserver(syncHeight)\n observer.observe(rootEl, { childList: true, subtree: true, characterData: true })\n\n cleanup = () => observer.disconnect()\n })\n\n return () => cleanup?.()\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 != null && evt.toast.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration != null && 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 measureHeight(ctx, _evt, { self }) {\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n\n ctx.mounted = true\n\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n ctx.height = newHeight\n\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n })\n },\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 invokeOnDismiss(ctx) {\n ctx.onStatusChange?.({ status: \"dismissing\" })\n },\n invokeOnUnmount(ctx) {\n ctx.onStatusChange?.({ status: \"unmounted\" })\n },\n invokeOnVisible(ctx) {\n ctx.onStatusChange?.({ status: \"visible\" })\n },\n setContext(ctx, evt) {\n const duration = evt.toast?.duration\n const type = evt.toast?.type ?? ctx.type\n\n const computedDuration = getToastDuration(duration, type)\n\n Object.assign(ctx, {\n ...evt.toast,\n duration: computedDuration,\n remaining: computedDuration,\n })\n },\n },\n },\n )\n}\n","import { dataAttr } from \"@zag-js/dom-query\"\nimport 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\"\nimport { getGhostAfterStyle, getGhostBeforeStyle, getPlacementStyle } from \"./toast.utils\"\n\nexport function connect<T extends PropTypes, O>(\n state: State<O>,\n send: Send,\n normalize: NormalizeProps<T>,\n): MachineApi<T, O> {\n const visible = state.hasTag(\"visible\")\n const paused = state.hasTag(\"paused\")\n\n const placement = state.context.placement!\n const type = state.context.type!\n\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return {\n type: type,\n title: state.context.title,\n description: state.context.description,\n placement,\n visible: visible,\n paused: paused,\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": visible ? \"open\" : \"closed\",\n \"data-type\": type,\n \"data-placement\": placement,\n \"data-align\": align,\n \"data-side\": side,\n \"data-mounted\": dataAttr(state.context.mounted),\n \"data-paused\": dataAttr(paused),\n\n \"data-first\": dataAttr(state.context.frontmost),\n \"data-sibling\": dataAttr(!state.context.frontmost),\n \"data-stack\": dataAttr(state.context.stacked),\n \"data-overlap\": dataAttr(!state.context.stacked),\n\n role: \"status\",\n \"aria-atomic\": \"true\",\n \"aria-describedby\": state.context.description ? dom.getDescriptionId(state.context) : undefined,\n \"aria-labelledby\": state.context.title ? dom.getTitleId(state.context) : undefined,\n tabIndex: 0,\n style: getPlacementStyle(state.context, visible),\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n })\n },\n\n /* Leave a ghost div to avoid setting hover to false when transitioning out */\n getGhostBeforeProps() {\n return normalize.element({\n \"data-ghost\": \"before\",\n style: getGhostBeforeStyle(state.context, visible),\n })\n },\n\n /* Needed to avoid setting hover to false when in between toasts */\n getGhostAfterProps() {\n return normalize.element({\n \"data-ghost\": \"after\",\n style: getGhostAfterStyle(state.context, visible),\n })\n },\n\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n })\n },\n\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n })\n },\n\n getActionTriggerProps() {\n return normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return\n state.context.action?.onClick?.()\n send(\"DISMISS\")\n },\n })\n },\n\n getCloseTriggerProps() {\n return normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\n })\n },\n }\n}\n"],"mappings":"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","names":["import_dom_query","import_dom_query","offset","import_core","import_utils","import_core","import_dom_query","import_utils","ctx","duration","type","computedDuration","ctx","import_dom_query"]}
package/dist/index.mjs CHANGED
@@ -892,6 +892,7 @@ function connect(state, send, normalize) {
892
892
  type: "button",
893
893
  onClick(event) {
894
894
  if (event.defaultPrevented) return;
895
+ state.context.action?.onClick?.();
895
896
  send("DISMISS");
896
897
  }
897
898
  });
@@ -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 { isMachine, subscribe } from \"@zag-js/core\"\nimport { contains } from \"@zag-js/dom-query\"\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, GroupService, GroupState, Options, Placement } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupConnect<T extends PropTypes, O = any>(\n serviceOrState: GroupState<O> | GroupService<O>,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T, O> {\n //\n\n function getState(): GroupState<O> {\n const result = isMachine(serviceOrState) ? serviceOrState.getState() : serviceOrState\n return result as GroupState<O>\n }\n\n function getToastsByPlacementImpl(placement: Placement) {\n return getToastsByPlacement(getState().context.toasts, placement)\n }\n\n function isVisible(id: string) {\n const toasts = getState().context.toasts\n if (!toasts.length) return false\n return !!toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options<O>) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return id\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options<O>) {\n if (!isVisible(id)) return id\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options<O>) {\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 getCount() {\n return getState().context.count\n },\n getPlacements() {\n const toasts = getState().context.toasts\n const placements = toasts.map((toast) => toast.state.context.placement!)\n return Array.from(new Set(placements))\n },\n getToastsByPlacement: getToastsByPlacementImpl,\n isVisible,\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 = getToastsByPlacementImpl(placement)\n toasts.forEach((toast) => dismiss(toast.id))\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 runIfFn(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 .finally(() => {\n options.finally?.()\n })\n\n return id\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 const state = getState()\n const hotkeyLabel = state.context.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\")\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n id: dom.getRegionId(placement),\n \"data-placement\": placement,\n \"data-side\": side,\n \"data-align\": align,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n onMouseMove() {\n send({ type: \"REGION.POINTER_ENTER\", placement })\n },\n onMouseLeave() {\n send({ type: \"REGION.POINTER_LEAVE\", placement })\n },\n onFocus(event) {\n send({ type: \"REGION.FOCUS\", target: event.relatedTarget })\n },\n onBlur(event) {\n if (state.context.isFocusWithin && !contains(event.currentTarget, event.relatedTarget)) {\n send({ type: \"REGION.BLUR\" })\n }\n },\n })\n },\n\n subscribe(fn) {\n const state = getState()\n return subscribe(state.context.toasts, () => {\n const toasts = getToastsByPlacementImpl(state.context.placement)\n const contexts = toasts.map((toast) => toast.getState().context)\n fn(contexts)\n })\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\n \"group\",\n \"root\",\n \"title\",\n \"description\",\n \"actionTrigger\",\n \"closeTrigger\",\n)\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement, GroupMachineContext as GroupCtx } from \"./toast.types\"\n\nexport const dom = createScope({\n getRegionId: (placement: Placement) => `toast-group:${placement}`,\n getRegionEl: (ctx: GroupCtx, placement: Placement) => dom.getById(ctx, `toast-group:${placement}`),\n\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\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 { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement<T>(toasts: Service<T>[], placement: Placement) {\n return toasts.filter((toast) => toast.state.context.placement === placement)\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n DEFAULT: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: NonNullable<MachineContext[\"type\"]>) {\n return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT\n}\n\nexport function getGroupPlacementStyle<T>(ctx: GroupMachineContext<T>, 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 \"--gap\": `${ctx.gap}px`,\n \"--first-height\": `${ctx.heights[0]?.height || 0}px`,\n zIndex: MAX_Z_INDEX,\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 = `max(env(safe-area-inset-top, 0px), ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n\nexport function getPlacementStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const [side] = ctx.placement!.split(\"-\")\n const sibling = !ctx.frontmost\n const overlap = !ctx.stacked\n\n const styles: Style = {\n position: \"absolute\",\n pointerEvents: \"auto\",\n \"--opacity\": \"0\",\n \"--remove-delay\": `${ctx.removeDelay}ms`,\n \"--duration\": `${ctx.type === \"loading\" ? Number.MAX_SAFE_INTEGER : ctx.duration}ms`,\n \"--initial-height\": `${ctx.height}px`,\n \"--offset\": `${ctx.offset}px`,\n \"--index\": ctx.index,\n \"--z-index\": ctx.zIndex,\n \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n \"--y\": \"100%\",\n \"--x\": \"0\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (side === \"top\") {\n //\n assign({\n top: \"0\",\n \"--sign\": \"-1\",\n \"--y\": \"-100%\",\n \"--lift\": \"1\",\n })\n //\n } else if (side === \"bottom\") {\n //\n assign({\n bottom: \"0\",\n \"--sign\": \"1\",\n \"--y\": \"100%\",\n \"--lift\": \"-1\",\n })\n }\n\n if (ctx.mounted) {\n assign({\n \"--y\": \"0\",\n \"--opacity\": \"1\",\n })\n\n if (ctx.stacked) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset))\",\n \"--height\": \"var(--initial-height)\",\n })\n }\n }\n\n if (!visible) {\n assign({\n \"--opacity\": \"0\",\n pointerEvents: \"none\",\n })\n }\n\n if (sibling && overlap) {\n assign({\n \"--base-scale\": \"var(--index) * 0.05 + 1\",\n \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n \"--scale\": \"calc(-1 * var(--base-scale))\",\n \"--height\": \"var(--first-height)\",\n })\n\n if (!visible) {\n assign({\n \"--y\": \"calc(var(--sign) * 40%)\",\n })\n }\n }\n\n if (sibling && ctx.stacked && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\",\n })\n }\n\n if (ctx.frontmost && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * -100%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostBeforeStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const styles: Style = {\n position: \"absolute\",\n inset: \"0\",\n scale: \"1 2\",\n pointerEvents: visible ? \"none\" : \"auto\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (ctx.frontmost && !visible) {\n assign({\n height: \"calc(var(--initial-height) + 80%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostAfterStyle<T>(_ctx: MachineContext<T>, _visible: boolean): Style {\n return {\n position: \"absolute\",\n left: \"0\",\n height: \"calc(var(--gap) + 2px)\",\n bottom: \"100%\",\n width: \"100%\",\n }\n}\n","import { createMachine, ref } from \"@zag-js/core\"\nimport { trackDismissableBranch } from \"@zag-js/dismissable\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type {\n GroupMachineContext,\n GroupMachineState,\n MachineContext,\n Service,\n UserDefinedGroupContext,\n} from \"./toast.types\"\nimport { getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupMachine<T = any>(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext<T>, GroupMachineState>(\n {\n id: \"toaster\",\n initial: ctx.overlap ? \"overlap\" : \"stack\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\n toasts: [],\n lastFocusedEl: null,\n isFocusWithin: false,\n heights: [],\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n activities: [\"trackDocumentVisibility\", \"trackHotKeyPress\"],\n\n watch: {\n toasts: [\"collapsedIfEmpty\", \"setDismissableBranch\"],\n },\n\n exit: [\"removeToasts\", \"clearDismissableBranch\", \"clearLastFocusedEl\"],\n\n on: {\n PAUSE_TOAST: {\n actions: [\"pauseToast\"],\n },\n PAUSE_ALL: {\n actions: [\"pauseToasts\"],\n },\n RESUME_TOAST: {\n actions: [\"resumeToast\"],\n },\n RESUME_ALL: {\n actions: [\"resumeToasts\"],\n },\n ADD_TOAST: {\n guard: \"isWithinRange\",\n actions: [\"createToast\", \"syncToastIndex\"],\n },\n UPDATE_TOAST: {\n actions: [\"updateToast\"],\n },\n DISMISS_TOAST: {\n actions: [\"dismissToast\"],\n },\n DISMISS_ALL: {\n actions: [\"dismissToasts\"],\n },\n REMOVE_TOAST: {\n actions: [\"removeToast\", \"syncToastIndex\", \"syncToastOffset\"],\n },\n REMOVE_ALL: {\n actions: [\"removeToasts\"],\n },\n UPDATE_HEIGHT: {\n actions: [\"syncHeights\", \"syncToastOffset\"],\n },\n \"DOC.HOTKEY\": {\n actions: [\"focusRegionEl\"],\n },\n \"REGION.BLUR\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n {\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n ],\n },\n\n states: {\n stack: {\n entry: [\"expandToasts\"],\n on: {\n \"REGION.POINTER_LEAVE\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\"],\n },\n {\n actions: [\"resumeToasts\"],\n },\n ],\n \"REGION.OVERLAP\": {\n target: \"overlap\",\n },\n \"REGION.FOCUS\": {\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n \"REGION.POINTER_ENTER\": {\n actions: [\"pauseToasts\"],\n },\n },\n },\n overlap: {\n entry: [\"collapseToasts\"],\n on: {\n \"REGION.STACK\": {\n target: \"stack\",\n },\n \"REGION.POINTER_ENTER\": {\n target: \"stack\",\n actions: [\"pauseToasts\"],\n },\n \"REGION.FOCUS\": {\n target: \"stack\",\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isWithinRange: (ctx) => ctx.toasts.length < ctx.max,\n isOverlapping: (ctx) => !!ctx.overlap,\n },\n activities: {\n trackHotKeyPress(ctx, _evt, { send }) {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = ctx.hotkey.every((key) => (event as any)[key] || event.code === key)\n if (!isHotkeyPressed) return\n send({ type: \"DOC.HOTKEY\" })\n }\n return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true })\n },\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_ALL\" : \"RESUME_ALL\")\n })\n },\n },\n actions: {\n setDismissableBranch(ctx) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n const hasToasts = currentToasts.length > 0\n\n if (!hasToasts) {\n ctx._cleanup?.()\n return\n }\n\n if (hasToasts && ctx._cleanup) {\n return\n }\n\n // mark toast as a dismissable branch\n // so that interacting with them will not close dismissable layers\n const groupEl = () => dom.getRegionEl(ctx, ctx.placement)\n ctx._cleanup = trackDismissableBranch(groupEl, { defer: true })\n },\n clearDismissableBranch(ctx) {\n ctx._cleanup?.()\n },\n focusRegionEl(ctx) {\n queueMicrotask(() => {\n dom.getRegionEl(ctx, ctx.placement)?.focus()\n })\n },\n expandToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = true\n })\n },\n collapseToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = false\n })\n },\n collapsedIfEmpty(ctx, _evt, { send }) {\n if (!ctx.overlap || ctx.toasts.length > 1) return\n send(\"REGION.OVERLAP\")\n },\n pauseToast(_ctx, evt, { self }) {\n self.sendChild(\"PAUSE\", evt.id)\n },\n pauseToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n resumeToast(_ctx, evt, { self }) {\n self.sendChild(\"RESUME\", evt.id)\n },\n resumeToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n measureToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"MEASURE\"))\n },\n createToast(ctx, evt, { self, getState }) {\n const options: MachineContext<T> = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n ...evt.toast,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n stacked: getState().matches(\"stack\"),\n }\n\n const toast = createToastMachine(options)\n\n const actor = self.spawn(toast)\n ctx.toasts = [actor, ...ctx.toasts]\n },\n updateToast(_ctx, evt, { self }) {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n dismissToast(_ctx, evt, { self }) {\n self.sendChild(\"DISMISS\", evt.id)\n },\n dismissToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n removeToast(ctx, evt, { self }) {\n self.stopChild(evt.id)\n ctx.toasts = ctx.toasts.filter((toast) => toast.id !== evt.id)\n ctx.heights = ctx.heights.filter((height) => height.id !== evt.id)\n },\n removeToasts(ctx, _evt, { self }) {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n ctx.toasts = []\n ctx.heights = []\n },\n syncHeights(ctx, evt) {\n const existing = ctx.heights.find((height) => height.id === evt.id)\n if (existing) {\n existing.height = evt.height\n existing.placement = evt.placement\n } else {\n const newHeight = { id: evt.id, height: evt.height, placement: evt.placement }\n ctx.heights = [newHeight, ...ctx.heights]\n }\n },\n syncToastIndex(ctx) {\n each(ctx, (toast, index, toasts) => {\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.index = index\n toast.state.context.frontmost = index === 0\n toast.state.context.zIndex = toasts.length - index\n })\n },\n syncToastOffset(ctx, evt) {\n const placement = evt.placement ?? ctx.placement\n\n // Notify each toast of it's index\n each({ ...ctx, placement }, (toast) => {\n const heightIndex = Math.max(\n ctx.heights.findIndex((height) => height.id === toast.id),\n 0,\n )\n\n // calculate offset until toast\n const toastsHeightBefore = ctx.heights.reduce((prev, curr, reducerIndex) => {\n if (reducerIndex >= heightIndex) return prev\n return prev + curr.height\n }, 0)\n\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.offset = heightIndex * ctx.gap + toastsHeightBefore\n })\n },\n setLastFocusedEl(ctx, evt) {\n if (ctx.isFocusWithin || !evt.target) return\n ctx.isFocusWithin = true\n ctx.lastFocusedEl = ref(evt.target)\n },\n restoreLastFocusedEl(ctx) {\n ctx.isFocusWithin = false\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n },\n clearLastFocusedEl(ctx) {\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n ctx.isFocusWithin = false\n },\n },\n },\n )\n}\n\nfunction each(ctx: GroupMachineContext, fn: (toast: Service<any>, index: number, arr: Service<any>[]) => void) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n currentToasts.forEach(fn)\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { queryAll, raf } from \"@zag-js/dom-query\"\nimport { compact, warn } 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<T>(options: Options<T>) {\n const { type = \"info\", duration, id = \"1\", placement = \"bottom\", removeDelay = 200, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext<T>, MachineState>(\n {\n id,\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n height: 0,\n offset: 0,\n frontmost: false,\n mounted: false,\n index: -1,\n zIndex: 0,\n },\n\n initial: type === \"loading\" ? \"visible:persist\" : \"visible\",\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"visible:persist\",\n actions: [\"setContext\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"visible:updating\",\n actions: [\"setContext\"],\n },\n {\n actions: [\"setContext\"],\n },\n ],\n MEASURE: {\n actions: [\"measureHeight\"],\n },\n },\n\n entry: [\"invokeOnVisible\"],\n\n activities: [\"trackHeight\"],\n\n states: {\n \"visible:updating\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"visible\",\n },\n },\n\n \"visible:persist\": {\n tags: [\"visible\", \"paused\"],\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"visible\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n visible: {\n tags: [\"visible\"],\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"visible:persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnDismiss\",\n after: {\n REMOVE_DELAY: {\n target: \"unmounted\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n unmounted: {\n entry: \"invokeOnUnmount\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackHeight(ctx, _evt, { self }) {\n let cleanup: VoidFunction\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n ctx.mounted = true\n\n const ghosts = queryAll(rootEl, \"[data-ghost]\")\n\n warn(\n ghosts.length !== 2,\n \"[toast] No ghost element found in toast. Render the `ghostBefore` and `ghostAfter` elements\",\n )\n\n const syncHeight = () => {\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n\n ctx.height = newHeight\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n }\n\n syncHeight()\n\n const win = dom.getWin(ctx)\n\n const observer = new win.MutationObserver(syncHeight)\n observer.observe(rootEl, { childList: true, subtree: true, characterData: true })\n\n cleanup = () => observer.disconnect()\n })\n\n return () => cleanup?.()\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 != null && evt.toast.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration != null && 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 measureHeight(ctx, _evt, { self }) {\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n\n ctx.mounted = true\n\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n ctx.height = newHeight\n\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n })\n },\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 invokeOnDismiss(ctx) {\n ctx.onStatusChange?.({ status: \"dismissing\" })\n },\n invokeOnUnmount(ctx) {\n ctx.onStatusChange?.({ status: \"unmounted\" })\n },\n invokeOnVisible(ctx) {\n ctx.onStatusChange?.({ status: \"visible\" })\n },\n setContext(ctx, evt) {\n const duration = evt.toast?.duration\n const type = evt.toast?.type ?? ctx.type\n\n const computedDuration = getToastDuration(duration, type)\n\n Object.assign(ctx, {\n ...evt.toast,\n duration: computedDuration,\n remaining: computedDuration,\n })\n },\n },\n },\n )\n}\n","import { dataAttr } from \"@zag-js/dom-query\"\nimport 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\"\nimport { getGhostAfterStyle, getGhostBeforeStyle, getPlacementStyle } from \"./toast.utils\"\n\nexport function connect<T extends PropTypes, O>(\n state: State<O>,\n send: Send,\n normalize: NormalizeProps<T>,\n): MachineApi<T, O> {\n const visible = state.hasTag(\"visible\")\n const paused = state.hasTag(\"paused\")\n\n const placement = state.context.placement!\n const type = state.context.type!\n\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return {\n type: type,\n title: state.context.title,\n description: state.context.description,\n placement,\n visible: visible,\n paused: paused,\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": visible ? \"open\" : \"closed\",\n \"data-type\": type,\n \"data-placement\": placement,\n \"data-align\": align,\n \"data-side\": side,\n \"data-mounted\": dataAttr(state.context.mounted),\n \"data-paused\": dataAttr(paused),\n\n \"data-first\": dataAttr(state.context.frontmost),\n \"data-sibling\": dataAttr(!state.context.frontmost),\n \"data-stack\": dataAttr(state.context.stacked),\n \"data-overlap\": dataAttr(!state.context.stacked),\n\n role: \"status\",\n \"aria-atomic\": \"true\",\n \"aria-describedby\": state.context.description ? dom.getDescriptionId(state.context) : undefined,\n \"aria-labelledby\": state.context.title ? dom.getTitleId(state.context) : undefined,\n tabIndex: 0,\n style: getPlacementStyle(state.context, visible),\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n })\n },\n\n /* Leave a ghost div to avoid setting hover to false when transitioning out */\n getGhostBeforeProps() {\n return normalize.element({\n \"data-ghost\": \"before\",\n style: getGhostBeforeStyle(state.context, visible),\n })\n },\n\n /* Needed to avoid setting hover to false when in between toasts */\n getGhostAfterProps() {\n return normalize.element({\n \"data-ghost\": \"after\",\n style: getGhostAfterStyle(state.context, visible),\n })\n },\n\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n })\n },\n\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n })\n },\n\n getActionTriggerProps() {\n return normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\n })\n },\n\n getCloseTriggerProps() {\n return normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\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 GenericOptions,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupService,\n GroupState,\n MachineContext,\n Placement,\n PromiseOptions,\n Service,\n StatusChangeDetails,\n Options,\n Status,\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","computedDuration","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 { isMachine, subscribe } from \"@zag-js/core\"\nimport { contains } from \"@zag-js/dom-query\"\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, GroupService, GroupState, Options, Placement } from \"./toast.types\"\nimport { getGroupPlacementStyle, getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupConnect<T extends PropTypes, O = any>(\n serviceOrState: GroupState<O> | GroupService<O>,\n send: GroupSend,\n normalize: NormalizeProps<T>,\n): GroupMachineApi<T, O> {\n //\n\n function getState(): GroupState<O> {\n const result = isMachine(serviceOrState) ? serviceOrState.getState() : serviceOrState\n return result as GroupState<O>\n }\n\n function getToastsByPlacementImpl(placement: Placement) {\n return getToastsByPlacement(getState().context.toasts, placement)\n }\n\n function isVisible(id: string) {\n const toasts = getState().context.toasts\n if (!toasts.length) return false\n return !!toasts.find((toast) => toast.id == id)\n }\n\n function create(options: Options<O>) {\n const uid = `toast:${uuid()}`\n const id = options.id ? options.id : uid\n\n if (isVisible(id)) return id\n send({ type: \"ADD_TOAST\", toast: { ...options, id } })\n\n return id\n }\n\n function update(id: string, options: Options<O>) {\n if (!isVisible(id)) return id\n send({ type: \"UPDATE_TOAST\", id, toast: options })\n return id\n }\n\n function upsert(options: Options<O>) {\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 getCount() {\n return getState().context.count\n },\n getPlacements() {\n const toasts = getState().context.toasts\n const placements = toasts.map((toast) => toast.state.context.placement!)\n return Array.from(new Set(placements))\n },\n getToastsByPlacement: getToastsByPlacementImpl,\n isVisible,\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 = getToastsByPlacementImpl(placement)\n toasts.forEach((toast) => dismiss(toast.id))\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 runIfFn(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 .finally(() => {\n options.finally?.()\n })\n\n return id\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 const state = getState()\n const hotkeyLabel = state.context.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\")\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return normalize.element({\n ...parts.group.attrs,\n dir: state.context.dir,\n tabIndex: -1,\n \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n id: dom.getRegionId(placement),\n \"data-placement\": placement,\n \"data-side\": side,\n \"data-align\": align,\n \"aria-live\": \"polite\",\n role: \"region\",\n style: getGroupPlacementStyle(state.context, placement),\n onMouseMove() {\n send({ type: \"REGION.POINTER_ENTER\", placement })\n },\n onMouseLeave() {\n send({ type: \"REGION.POINTER_LEAVE\", placement })\n },\n onFocus(event) {\n send({ type: \"REGION.FOCUS\", target: event.relatedTarget })\n },\n onBlur(event) {\n if (state.context.isFocusWithin && !contains(event.currentTarget, event.relatedTarget)) {\n send({ type: \"REGION.BLUR\" })\n }\n },\n })\n },\n\n subscribe(fn) {\n const state = getState()\n return subscribe(state.context.toasts, () => {\n const toasts = getToastsByPlacementImpl(state.context.placement)\n const contexts = toasts.map((toast) => toast.getState().context)\n fn(contexts)\n })\n },\n }\n}\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"toast\").parts(\n \"group\",\n \"root\",\n \"title\",\n \"description\",\n \"actionTrigger\",\n \"closeTrigger\",\n)\n\nexport const parts = anatomy.build()\n","import { createScope } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx, Placement, GroupMachineContext as GroupCtx } from \"./toast.types\"\n\nexport const dom = createScope({\n getRegionId: (placement: Placement) => `toast-group:${placement}`,\n getRegionEl: (ctx: GroupCtx, placement: Placement) => dom.getById(ctx, `toast-group:${placement}`),\n\n getRootId: (ctx: Ctx) => `toast:${ctx.id}`,\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\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 { MAX_Z_INDEX } from \"@zag-js/dom-query\"\nimport type { Style } from \"@zag-js/types\"\nimport type { GroupMachineContext, MachineContext, Placement, Service, Type } from \"./toast.types\"\n\nexport function getToastsByPlacement<T>(toasts: Service<T>[], placement: Placement) {\n return toasts.filter((toast) => toast.state.context.placement === placement)\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n DEFAULT: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: NonNullable<MachineContext[\"type\"]>) {\n return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT\n}\n\nexport function getGroupPlacementStyle<T>(ctx: GroupMachineContext<T>, 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 \"--gap\": `${ctx.gap}px`,\n \"--first-height\": `${ctx.heights[0]?.height || 0}px`,\n zIndex: MAX_Z_INDEX,\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 = `max(env(safe-area-inset-top, 0px), ${offset})`\n }\n\n if (computedPlacement.includes(\"bottom\")) {\n const offset = computedOffset.bottom\n styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`\n }\n\n if (!computedPlacement.includes(\"left\")) {\n const offset = computedOffset.right\n styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`\n }\n\n if (!computedPlacement.includes(\"right\")) {\n const offset = computedOffset.left\n styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`\n }\n\n return styles\n}\n\nexport function getPlacementStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const [side] = ctx.placement!.split(\"-\")\n const sibling = !ctx.frontmost\n const overlap = !ctx.stacked\n\n const styles: Style = {\n position: \"absolute\",\n pointerEvents: \"auto\",\n \"--opacity\": \"0\",\n \"--remove-delay\": `${ctx.removeDelay}ms`,\n \"--duration\": `${ctx.type === \"loading\" ? Number.MAX_SAFE_INTEGER : ctx.duration}ms`,\n \"--initial-height\": `${ctx.height}px`,\n \"--offset\": `${ctx.offset}px`,\n \"--index\": ctx.index,\n \"--z-index\": ctx.zIndex,\n \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n \"--y\": \"100%\",\n \"--x\": \"0\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (side === \"top\") {\n //\n assign({\n top: \"0\",\n \"--sign\": \"-1\",\n \"--y\": \"-100%\",\n \"--lift\": \"1\",\n })\n //\n } else if (side === \"bottom\") {\n //\n assign({\n bottom: \"0\",\n \"--sign\": \"1\",\n \"--y\": \"100%\",\n \"--lift\": \"-1\",\n })\n }\n\n if (ctx.mounted) {\n assign({\n \"--y\": \"0\",\n \"--opacity\": \"1\",\n })\n\n if (ctx.stacked) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset))\",\n \"--height\": \"var(--initial-height)\",\n })\n }\n }\n\n if (!visible) {\n assign({\n \"--opacity\": \"0\",\n pointerEvents: \"none\",\n })\n }\n\n if (sibling && overlap) {\n assign({\n \"--base-scale\": \"var(--index) * 0.05 + 1\",\n \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n \"--scale\": \"calc(-1 * var(--base-scale))\",\n \"--height\": \"var(--first-height)\",\n })\n\n if (!visible) {\n assign({\n \"--y\": \"calc(var(--sign) * 40%)\",\n })\n }\n }\n\n if (sibling && ctx.stacked && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\",\n })\n }\n\n if (ctx.frontmost && !visible) {\n assign({\n \"--y\": \"calc(var(--lift) * -100%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostBeforeStyle<T>(ctx: MachineContext<T>, visible: boolean): Style {\n const styles: Style = {\n position: \"absolute\",\n inset: \"0\",\n scale: \"1 2\",\n pointerEvents: visible ? \"none\" : \"auto\",\n }\n\n const assign = (overrides: Style) => Object.assign(styles, overrides)\n\n if (ctx.frontmost && !visible) {\n assign({\n height: \"calc(var(--initial-height) + 80%)\",\n })\n }\n\n return styles\n}\n\nexport function getGhostAfterStyle<T>(_ctx: MachineContext<T>, _visible: boolean): Style {\n return {\n position: \"absolute\",\n left: \"0\",\n height: \"calc(var(--gap) + 2px)\",\n bottom: \"100%\",\n width: \"100%\",\n }\n}\n","import { createMachine, ref } from \"@zag-js/core\"\nimport { trackDismissableBranch } from \"@zag-js/dismissable\"\nimport { addDomEvent } from \"@zag-js/dom-event\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./toast.dom\"\nimport { createToastMachine } from \"./toast.machine\"\nimport type {\n GroupMachineContext,\n GroupMachineState,\n MachineContext,\n Service,\n UserDefinedGroupContext,\n} from \"./toast.types\"\nimport { getToastsByPlacement } from \"./toast.utils\"\n\nexport function groupMachine<T = any>(userContext: UserDefinedGroupContext) {\n const ctx = compact(userContext)\n return createMachine<GroupMachineContext<T>, GroupMachineState>(\n {\n id: \"toaster\",\n initial: ctx.overlap ? \"overlap\" : \"stack\",\n context: {\n dir: \"ltr\",\n max: Number.MAX_SAFE_INTEGER,\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\n toasts: [],\n lastFocusedEl: null,\n isFocusWithin: false,\n heights: [],\n },\n\n computed: {\n count: (ctx) => ctx.toasts.length,\n },\n\n activities: [\"trackDocumentVisibility\", \"trackHotKeyPress\"],\n\n watch: {\n toasts: [\"collapsedIfEmpty\", \"setDismissableBranch\"],\n },\n\n exit: [\"removeToasts\", \"clearDismissableBranch\", \"clearLastFocusedEl\"],\n\n on: {\n PAUSE_TOAST: {\n actions: [\"pauseToast\"],\n },\n PAUSE_ALL: {\n actions: [\"pauseToasts\"],\n },\n RESUME_TOAST: {\n actions: [\"resumeToast\"],\n },\n RESUME_ALL: {\n actions: [\"resumeToasts\"],\n },\n ADD_TOAST: {\n guard: \"isWithinRange\",\n actions: [\"createToast\", \"syncToastIndex\"],\n },\n UPDATE_TOAST: {\n actions: [\"updateToast\"],\n },\n DISMISS_TOAST: {\n actions: [\"dismissToast\"],\n },\n DISMISS_ALL: {\n actions: [\"dismissToasts\"],\n },\n REMOVE_TOAST: {\n actions: [\"removeToast\", \"syncToastIndex\", \"syncToastOffset\"],\n },\n REMOVE_ALL: {\n actions: [\"removeToasts\"],\n },\n UPDATE_HEIGHT: {\n actions: [\"syncHeights\", \"syncToastOffset\"],\n },\n \"DOC.HOTKEY\": {\n actions: [\"focusRegionEl\"],\n },\n \"REGION.BLUR\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n {\n actions: [\"resumeToasts\", \"restoreLastFocusedEl\"],\n },\n ],\n },\n\n states: {\n stack: {\n entry: [\"expandToasts\"],\n on: {\n \"REGION.POINTER_LEAVE\": [\n {\n guard: \"isOverlapping\",\n target: \"overlap\",\n actions: [\"resumeToasts\"],\n },\n {\n actions: [\"resumeToasts\"],\n },\n ],\n \"REGION.OVERLAP\": {\n target: \"overlap\",\n },\n \"REGION.FOCUS\": {\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n \"REGION.POINTER_ENTER\": {\n actions: [\"pauseToasts\"],\n },\n },\n },\n overlap: {\n entry: [\"collapseToasts\"],\n on: {\n \"REGION.STACK\": {\n target: \"stack\",\n },\n \"REGION.POINTER_ENTER\": {\n target: \"stack\",\n actions: [\"pauseToasts\"],\n },\n \"REGION.FOCUS\": {\n target: \"stack\",\n actions: [\"setLastFocusedEl\", \"pauseToasts\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isWithinRange: (ctx) => ctx.toasts.length < ctx.max,\n isOverlapping: (ctx) => !!ctx.overlap,\n },\n activities: {\n trackHotKeyPress(ctx, _evt, { send }) {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = ctx.hotkey.every((key) => (event as any)[key] || event.code === key)\n if (!isHotkeyPressed) return\n send({ type: \"DOC.HOTKEY\" })\n }\n return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true })\n },\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_ALL\" : \"RESUME_ALL\")\n })\n },\n },\n actions: {\n setDismissableBranch(ctx) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n const hasToasts = currentToasts.length > 0\n\n if (!hasToasts) {\n ctx._cleanup?.()\n return\n }\n\n if (hasToasts && ctx._cleanup) {\n return\n }\n\n // mark toast as a dismissable branch\n // so that interacting with them will not close dismissable layers\n const groupEl = () => dom.getRegionEl(ctx, ctx.placement)\n ctx._cleanup = trackDismissableBranch(groupEl, { defer: true })\n },\n clearDismissableBranch(ctx) {\n ctx._cleanup?.()\n },\n focusRegionEl(ctx) {\n queueMicrotask(() => {\n dom.getRegionEl(ctx, ctx.placement)?.focus()\n })\n },\n expandToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = true\n })\n },\n collapseToasts(ctx) {\n each(ctx, (toast) => {\n toast.state.context.stacked = false\n })\n },\n collapsedIfEmpty(ctx, _evt, { send }) {\n if (!ctx.overlap || ctx.toasts.length > 1) return\n send(\"REGION.OVERLAP\")\n },\n pauseToast(_ctx, evt, { self }) {\n self.sendChild(\"PAUSE\", evt.id)\n },\n pauseToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"PAUSE\"))\n },\n resumeToast(_ctx, evt, { self }) {\n self.sendChild(\"RESUME\", evt.id)\n },\n resumeToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"RESUME\"))\n },\n measureToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"MEASURE\"))\n },\n createToast(ctx, evt, { self, getState }) {\n const options: MachineContext<T> = {\n placement: ctx.placement,\n duration: ctx.duration,\n removeDelay: ctx.removeDelay,\n ...evt.toast,\n dir: ctx.dir,\n getRootNode: ctx.getRootNode,\n stacked: getState().matches(\"stack\"),\n }\n\n const toast = createToastMachine(options)\n\n const actor = self.spawn(toast)\n ctx.toasts = [actor, ...ctx.toasts]\n },\n updateToast(_ctx, evt, { self }) {\n self.sendChild({ type: \"UPDATE\", toast: evt.toast }, evt.id)\n },\n dismissToast(_ctx, evt, { self }) {\n self.sendChild(\"DISMISS\", evt.id)\n },\n dismissToasts(ctx) {\n ctx.toasts.forEach((toast) => toast.send(\"DISMISS\"))\n },\n removeToast(ctx, evt, { self }) {\n self.stopChild(evt.id)\n ctx.toasts = ctx.toasts.filter((toast) => toast.id !== evt.id)\n ctx.heights = ctx.heights.filter((height) => height.id !== evt.id)\n },\n removeToasts(ctx, _evt, { self }) {\n ctx.toasts.forEach((toast) => self.stopChild(toast.id))\n ctx.toasts = []\n ctx.heights = []\n },\n syncHeights(ctx, evt) {\n const existing = ctx.heights.find((height) => height.id === evt.id)\n if (existing) {\n existing.height = evt.height\n existing.placement = evt.placement\n } else {\n const newHeight = { id: evt.id, height: evt.height, placement: evt.placement }\n ctx.heights = [newHeight, ...ctx.heights]\n }\n },\n syncToastIndex(ctx) {\n each(ctx, (toast, index, toasts) => {\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.index = index\n toast.state.context.frontmost = index === 0\n toast.state.context.zIndex = toasts.length - index\n })\n },\n syncToastOffset(ctx, evt) {\n const placement = evt.placement ?? ctx.placement\n\n // Notify each toast of it's index\n each({ ...ctx, placement }, (toast) => {\n const heightIndex = Math.max(\n ctx.heights.findIndex((height) => height.id === toast.id),\n 0,\n )\n\n // calculate offset until toast\n const toastsHeightBefore = ctx.heights.reduce((prev, curr, reducerIndex) => {\n if (reducerIndex >= heightIndex) return prev\n return prev + curr.height\n }, 0)\n\n // Note: This is an intentional side effect\n // consider writing directly to the DOM (root element)\n toast.state.context.offset = heightIndex * ctx.gap + toastsHeightBefore\n })\n },\n setLastFocusedEl(ctx, evt) {\n if (ctx.isFocusWithin || !evt.target) return\n ctx.isFocusWithin = true\n ctx.lastFocusedEl = ref(evt.target)\n },\n restoreLastFocusedEl(ctx) {\n ctx.isFocusWithin = false\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n },\n clearLastFocusedEl(ctx) {\n if (!ctx.lastFocusedEl) return\n ctx.lastFocusedEl.focus({ preventScroll: true })\n ctx.lastFocusedEl = null\n ctx.isFocusWithin = false\n },\n },\n },\n )\n}\n\nfunction each(ctx: GroupMachineContext, fn: (toast: Service<any>, index: number, arr: Service<any>[]) => void) {\n const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement)\n currentToasts.forEach(fn)\n}\n","import { createMachine, guards } from \"@zag-js/core\"\nimport { queryAll, raf } from \"@zag-js/dom-query\"\nimport { compact, warn } 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<T>(options: Options<T>) {\n const { type = \"info\", duration, id = \"1\", placement = \"bottom\", removeDelay = 200, ...restProps } = options\n const ctx = compact(restProps)\n\n const computedDuration = getToastDuration(duration, type)\n\n return createMachine<MachineContext<T>, MachineState>(\n {\n id,\n context: {\n id,\n type,\n remaining: computedDuration,\n duration: computedDuration,\n removeDelay,\n createdAt: Date.now(),\n placement,\n ...ctx,\n height: 0,\n offset: 0,\n frontmost: false,\n mounted: false,\n index: -1,\n zIndex: 0,\n },\n\n initial: type === \"loading\" ? \"visible:persist\" : \"visible\",\n\n on: {\n UPDATE: [\n {\n guard: and(\"hasTypeChanged\", \"isChangingToLoading\"),\n target: \"visible:persist\",\n actions: [\"setContext\"],\n },\n {\n guard: or(\"hasDurationChanged\", \"hasTypeChanged\"),\n target: \"visible:updating\",\n actions: [\"setContext\"],\n },\n {\n actions: [\"setContext\"],\n },\n ],\n MEASURE: {\n actions: [\"measureHeight\"],\n },\n },\n\n entry: [\"invokeOnVisible\"],\n\n activities: [\"trackHeight\"],\n\n states: {\n \"visible:updating\": {\n tags: [\"visible\", \"updating\"],\n after: {\n 0: \"visible\",\n },\n },\n\n \"visible:persist\": {\n tags: [\"visible\", \"paused\"],\n on: {\n RESUME: {\n guard: not(\"isLoadingType\"),\n target: \"visible\",\n actions: [\"setCreatedAt\"],\n },\n DISMISS: \"dismissing\",\n },\n },\n\n visible: {\n tags: [\"visible\"],\n after: {\n VISIBLE_DURATION: \"dismissing\",\n },\n on: {\n DISMISS: \"dismissing\",\n PAUSE: {\n target: \"visible:persist\",\n actions: \"setRemainingDuration\",\n },\n },\n },\n\n dismissing: {\n entry: \"invokeOnDismiss\",\n after: {\n REMOVE_DELAY: {\n target: \"unmounted\",\n actions: \"notifyParentToRemove\",\n },\n },\n },\n\n unmounted: {\n entry: \"invokeOnUnmount\",\n type: \"final\",\n },\n },\n },\n {\n activities: {\n trackHeight(ctx, _evt, { self }) {\n let cleanup: VoidFunction\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n ctx.mounted = true\n\n const ghosts = queryAll(rootEl, \"[data-ghost]\")\n\n warn(\n ghosts.length !== 2,\n \"[toast] No ghost element found in toast. Render the `ghostBefore` and `ghostAfter` elements\",\n )\n\n const syncHeight = () => {\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n\n ctx.height = newHeight\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n }\n\n syncHeight()\n\n const win = dom.getWin(ctx)\n\n const observer = new win.MutationObserver(syncHeight)\n observer.observe(rootEl, { childList: true, subtree: true, characterData: true })\n\n cleanup = () => observer.disconnect()\n })\n\n return () => cleanup?.()\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 != null && evt.toast.type !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration != null && 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 measureHeight(ctx, _evt, { self }) {\n raf(() => {\n const rootEl = dom.getRootEl(ctx)\n if (!rootEl) return\n\n ctx.mounted = true\n\n const originalHeight = rootEl.style.height\n rootEl.style.height = \"auto\"\n\n const newHeight = rootEl.getBoundingClientRect().height\n rootEl.style.height = originalHeight\n ctx.height = newHeight\n\n self.sendParent({ type: \"UPDATE_HEIGHT\", id: self.id, height: newHeight, placement: ctx.placement })\n })\n },\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 invokeOnDismiss(ctx) {\n ctx.onStatusChange?.({ status: \"dismissing\" })\n },\n invokeOnUnmount(ctx) {\n ctx.onStatusChange?.({ status: \"unmounted\" })\n },\n invokeOnVisible(ctx) {\n ctx.onStatusChange?.({ status: \"visible\" })\n },\n setContext(ctx, evt) {\n const duration = evt.toast?.duration\n const type = evt.toast?.type ?? ctx.type\n\n const computedDuration = getToastDuration(duration, type)\n\n Object.assign(ctx, {\n ...evt.toast,\n duration: computedDuration,\n remaining: computedDuration,\n })\n },\n },\n },\n )\n}\n","import { dataAttr } from \"@zag-js/dom-query\"\nimport 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\"\nimport { getGhostAfterStyle, getGhostBeforeStyle, getPlacementStyle } from \"./toast.utils\"\n\nexport function connect<T extends PropTypes, O>(\n state: State<O>,\n send: Send,\n normalize: NormalizeProps<T>,\n): MachineApi<T, O> {\n const visible = state.hasTag(\"visible\")\n const paused = state.hasTag(\"paused\")\n\n const placement = state.context.placement!\n const type = state.context.type!\n\n const [side, align = \"center\"] = placement.split(\"-\")\n\n return {\n type: type,\n title: state.context.title,\n description: state.context.description,\n placement,\n visible: visible,\n paused: paused,\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": visible ? \"open\" : \"closed\",\n \"data-type\": type,\n \"data-placement\": placement,\n \"data-align\": align,\n \"data-side\": side,\n \"data-mounted\": dataAttr(state.context.mounted),\n \"data-paused\": dataAttr(paused),\n\n \"data-first\": dataAttr(state.context.frontmost),\n \"data-sibling\": dataAttr(!state.context.frontmost),\n \"data-stack\": dataAttr(state.context.stacked),\n \"data-overlap\": dataAttr(!state.context.stacked),\n\n role: \"status\",\n \"aria-atomic\": \"true\",\n \"aria-describedby\": state.context.description ? dom.getDescriptionId(state.context) : undefined,\n \"aria-labelledby\": state.context.title ? dom.getTitleId(state.context) : undefined,\n tabIndex: 0,\n style: getPlacementStyle(state.context, visible),\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n })\n },\n\n /* Leave a ghost div to avoid setting hover to false when transitioning out */\n getGhostBeforeProps() {\n return normalize.element({\n \"data-ghost\": \"before\",\n style: getGhostBeforeStyle(state.context, visible),\n })\n },\n\n /* Needed to avoid setting hover to false when in between toasts */\n getGhostAfterProps() {\n return normalize.element({\n \"data-ghost\": \"after\",\n style: getGhostAfterStyle(state.context, visible),\n })\n },\n\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n })\n },\n\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n })\n },\n\n getActionTriggerProps() {\n return normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return\n state.context.action?.onClick?.()\n send(\"DISMISS\")\n },\n })\n },\n\n getCloseTriggerProps() {\n return normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\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 ActionOptions,\n MachineApi as Api,\n GenericOptions,\n GroupMachineApi as GroupApi,\n GroupMachineContext,\n GroupProps,\n GroupService,\n GroupState,\n MachineContext,\n Options,\n Placement,\n PromiseOptions,\n Service,\n Status,\n StatusChangeDetails,\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","computedDuration","compact","createMachine","ctx"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/toast",
3
- "version": "0.65.1",
3
+ "version": "0.66.1",
4
4
  "description": "Core logic for the toast widget implemented as a state machine",
5
5
  "keywords": [
6
6
  "js",
@@ -27,13 +27,13 @@
27
27
  "url": "https://github.com/chakra-ui/zag/issues"
28
28
  },
29
29
  "dependencies": {
30
- "@zag-js/anatomy": "0.65.1",
31
- "@zag-js/core": "0.65.1",
32
- "@zag-js/dom-query": "0.65.1",
33
- "@zag-js/dismissable": "0.65.1",
34
- "@zag-js/dom-event": "0.65.1",
35
- "@zag-js/types": "0.65.1",
36
- "@zag-js/utils": "0.65.1"
30
+ "@zag-js/anatomy": "0.66.1",
31
+ "@zag-js/core": "0.66.1",
32
+ "@zag-js/dom-query": "0.66.1",
33
+ "@zag-js/dismissable": "0.66.1",
34
+ "@zag-js/dom-event": "0.66.1",
35
+ "@zag-js/utils": "0.66.1",
36
+ "@zag-js/types": "0.66.1"
37
37
  },
38
38
  "devDependencies": {
39
39
  "clean-package": "2.2.0"
package/src/index.ts CHANGED
@@ -5,6 +5,7 @@ import { createToastMachine as createMachine } from "./toast.machine"
5
5
  export { anatomy } from "./toast.anatomy"
6
6
  export { connect } from "./toast.connect"
7
7
  export type {
8
+ ActionOptions,
8
9
  MachineApi as Api,
9
10
  GenericOptions,
10
11
  GroupMachineApi as GroupApi,
@@ -13,12 +14,12 @@ export type {
13
14
  GroupService,
14
15
  GroupState,
15
16
  MachineContext,
17
+ Options,
16
18
  Placement,
17
19
  PromiseOptions,
18
20
  Service,
19
- StatusChangeDetails,
20
- Options,
21
21
  Status,
22
+ StatusChangeDetails,
22
23
  Type,
23
24
  } from "./toast.types"
24
25
  export { createMachine }
@@ -108,6 +108,7 @@ export function connect<T extends PropTypes, O>(
108
108
  type: "button",
109
109
  onClick(event) {
110
110
  if (event.defaultPrevented) return
111
+ state.context.action?.onClick?.()
111
112
  send("DISMISS")
112
113
  },
113
114
  })
@@ -35,6 +35,17 @@ export interface ToastHeightDetails {
35
35
  placement: Placement
36
36
  }
37
37
 
38
+ export interface ActionOptions {
39
+ /**
40
+ * The label of the action
41
+ */
42
+ label: string
43
+ /**
44
+ * The function to call when the action is clicked
45
+ */
46
+ onClick: () => void
47
+ }
48
+
38
49
  export interface Options<T> extends GenericOptions<T> {
39
50
  /**
40
51
  * The duration the toast will be visible
@@ -61,10 +72,14 @@ export interface Options<T> extends GenericOptions<T> {
61
72
  * Function called when the toast is visible
62
73
  */
63
74
  onStatusChange?(details: StatusChangeDetails): void
75
+ /**
76
+ * The action of the toast
77
+ */
78
+ action?: ActionOptions
64
79
  /**
65
80
  * The metadata of the toast
66
81
  */
67
- meta?: Record<string, unknown>
82
+ meta?: Record<string, any>
68
83
  }
69
84
 
70
85
  /* -----------------------------------------------------------------------------