@zag-js/toast 0.46.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -40,7 +40,7 @@ interface Options<T> extends GenericOptions<T> {
40
40
  /**
41
41
  * The type of the toast
42
42
  */
43
- type: Type;
43
+ type?: Type;
44
44
  /**
45
45
  * Function called when the toast is visible
46
46
  */
@@ -159,13 +159,13 @@ interface GroupMachineApi<T extends PropTypes = PropTypes, O = any> {
159
159
  */
160
160
  getCount(): number;
161
161
  /**
162
- * The active toasts
162
+ * The placements of the active toasts
163
163
  */
164
- getToasts(): Service<O>[];
164
+ getPlacements(): Placement[];
165
165
  /**
166
166
  * The active toasts by placement
167
167
  */
168
- getToastsByPlacement(): Partial<Record<Placement, Service<O>[]>>;
168
+ getToastsByPlacement(placement: Placement): Service<O>[];
169
169
  /**
170
170
  * Returns whether the toast id is visible
171
171
  */
@@ -240,15 +240,11 @@ interface MachineApi<T extends PropTypes = PropTypes, O = any> extends GenericOp
240
240
  /**
241
241
  * Whether the toast is visible.
242
242
  */
243
- isVisible: boolean;
243
+ visible: boolean;
244
244
  /**
245
245
  * Whether the toast is paused.
246
246
  */
247
- isPaused: boolean;
248
- /**
249
- * Whether the toast is in RTL mode.
250
- */
251
- isRtl: boolean;
247
+ paused: boolean;
252
248
  /**
253
249
  * Function to pause the toast (keeping it visible).
254
250
  */
@@ -276,7 +272,7 @@ declare function groupMachine<T = any>(userContext: UserDefinedGroupContext): _z
276
272
 
277
273
  declare function createToastMachine<T>(options: Options<T>): _zag_js_core.Machine<MachineContext<T>, MachineState, _zag_js_core.StateMachine.AnyEventObject>;
278
274
 
279
- declare const anatomy: _zag_js_anatomy.AnatomyInstance<"title" | "group" | "root" | "ghost" | "description" | "actionTrigger" | "closeTrigger">;
275
+ declare const anatomy: _zag_js_anatomy.AnatomyInstance<"title" | "group" | "root" | "description" | "actionTrigger" | "closeTrigger">;
280
276
 
281
277
  declare function connect<T extends PropTypes, O>(state: State<O>, send: Send, normalize: NormalizeProps<T>): MachineApi<T, O>;
282
278
 
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ interface Options<T> extends GenericOptions<T> {
40
40
  /**
41
41
  * The type of the toast
42
42
  */
43
- type: Type;
43
+ type?: Type;
44
44
  /**
45
45
  * Function called when the toast is visible
46
46
  */
@@ -159,13 +159,13 @@ interface GroupMachineApi<T extends PropTypes = PropTypes, O = any> {
159
159
  */
160
160
  getCount(): number;
161
161
  /**
162
- * The active toasts
162
+ * The placements of the active toasts
163
163
  */
164
- getToasts(): Service<O>[];
164
+ getPlacements(): Placement[];
165
165
  /**
166
166
  * The active toasts by placement
167
167
  */
168
- getToastsByPlacement(): Partial<Record<Placement, Service<O>[]>>;
168
+ getToastsByPlacement(placement: Placement): Service<O>[];
169
169
  /**
170
170
  * Returns whether the toast id is visible
171
171
  */
@@ -240,15 +240,11 @@ interface MachineApi<T extends PropTypes = PropTypes, O = any> extends GenericOp
240
240
  /**
241
241
  * Whether the toast is visible.
242
242
  */
243
- isVisible: boolean;
243
+ visible: boolean;
244
244
  /**
245
245
  * Whether the toast is paused.
246
246
  */
247
- isPaused: boolean;
248
- /**
249
- * Whether the toast is in RTL mode.
250
- */
251
- isRtl: boolean;
247
+ paused: boolean;
252
248
  /**
253
249
  * Function to pause the toast (keeping it visible).
254
250
  */
@@ -276,7 +272,7 @@ declare function groupMachine<T = any>(userContext: UserDefinedGroupContext): _z
276
272
 
277
273
  declare function createToastMachine<T>(options: Options<T>): _zag_js_core.Machine<MachineContext<T>, MachineState, _zag_js_core.StateMachine.AnyEventObject>;
278
274
 
279
- declare const anatomy: _zag_js_anatomy.AnatomyInstance<"title" | "group" | "root" | "ghost" | "description" | "actionTrigger" | "closeTrigger">;
275
+ declare const anatomy: _zag_js_anatomy.AnatomyInstance<"title" | "group" | "root" | "description" | "actionTrigger" | "closeTrigger">;
280
276
 
281
277
  declare function connect<T extends PropTypes, O>(state: State<O>, send: Send, normalize: NormalizeProps<T>): MachineApi<T, O>;
282
278
 
package/dist/index.js CHANGED
@@ -37,7 +37,6 @@ var import_anatomy = require("@zag-js/anatomy");
37
37
  var anatomy = (0, import_anatomy.createAnatomy)("toast").parts(
38
38
  "group",
39
39
  "root",
40
- "ghost",
41
40
  "title",
42
41
  "description",
43
42
  "actionTrigger",
@@ -59,14 +58,8 @@ var dom = (0, import_dom_query.createScope)({
59
58
 
60
59
  // src/toast.utils.ts
61
60
  var import_dom_query2 = require("@zag-js/dom-query");
62
- function getToastsByPlacement(toasts) {
63
- const result = {};
64
- for (const toast of toasts) {
65
- const placement = toast.state.context.placement;
66
- result[placement] || (result[placement] = []);
67
- result[placement].push(toast);
68
- }
69
- return result;
61
+ function getToastsByPlacement(toasts, placement) {
62
+ return toasts.filter((toast) => toast.state.context.placement === placement);
70
63
  }
71
64
  var defaultTimeouts = {
72
65
  info: 5e3,
@@ -226,8 +219,8 @@ function groupConnect(serviceOrState, send, normalize) {
226
219
  const result = (0, import_core.isMachine)(serviceOrState) ? serviceOrState.getState() : serviceOrState;
227
220
  return result;
228
221
  }
229
- function getToastsByPlacementImpl() {
230
- return getToastsByPlacement(getState().context.toasts);
222
+ function getToastsByPlacementImpl(placement) {
223
+ return getToastsByPlacement(getState().context.toasts, placement);
231
224
  }
232
225
  function isVisible(id) {
233
226
  const toasts = getState().context.toasts;
@@ -269,8 +262,10 @@ function groupConnect(serviceOrState, send, normalize) {
269
262
  getCount() {
270
263
  return getState().context.count;
271
264
  },
272
- getToasts() {
273
- return getState().context.toasts;
265
+ getPlacements() {
266
+ const toasts = getState().context.toasts;
267
+ const placements = toasts.map((toast) => toast.state.context.placement);
268
+ return Array.from(new Set(placements));
274
269
  },
275
270
  getToastsByPlacement: getToastsByPlacementImpl,
276
271
  isVisible,
@@ -286,10 +281,7 @@ function groupConnect(serviceOrState, send, normalize) {
286
281
  }
287
282
  },
288
283
  dismissByPlacement(placement) {
289
- const toastsByPlacement = getToastsByPlacementImpl();
290
- const toasts = toastsByPlacement[placement];
291
- if (!toasts)
292
- return;
284
+ const toasts = getToastsByPlacementImpl(placement);
293
285
  toasts.forEach((toast) => dismiss(toast.id));
294
286
  },
295
287
  loading(options) {
@@ -364,7 +356,7 @@ function groupConnect(serviceOrState, send, normalize) {
364
356
  subscribe(fn) {
365
357
  const state = getState();
366
358
  return (0, import_core.subscribe)(state.context.toasts, () => {
367
- const toasts = getToastsByPlacementImpl()[state.context.placement] ?? [];
359
+ const toasts = getToastsByPlacementImpl(state.context.placement);
368
360
  const contexts = toasts.map((toast) => toast.getState().context);
369
361
  fn(contexts);
370
362
  });
@@ -484,7 +476,7 @@ function createToastMachine(options) {
484
476
  if (!rootEl)
485
477
  return;
486
478
  ctx2.mounted = true;
487
- const ghosts = (0, import_dom_query4.queryAll)(rootEl, "[data-part=ghost]");
479
+ const ghosts = (0, import_dom_query4.queryAll)(rootEl, "[data-ghost]");
488
480
  (0, import_utils2.warn)(
489
481
  ghosts.length !== 2,
490
482
  "[toast] No ghost element found in toast. Render the `ghostBefore` and `ghostAfter` elements"
@@ -492,7 +484,7 @@ function createToastMachine(options) {
492
484
  const syncHeight = () => {
493
485
  const originalHeight = rootEl.style.height;
494
486
  rootEl.style.height = "auto";
495
- const newHeight = rootEl.offsetHeight;
487
+ const newHeight = rootEl.getBoundingClientRect().height;
496
488
  rootEl.style.height = originalHeight;
497
489
  ctx2.height = newHeight;
498
490
  self.sendParent({ type: "UPDATE_HEIGHT", id: self.id, height: newHeight, placement: ctx2.placement });
@@ -509,8 +501,8 @@ function createToastMachine(options) {
509
501
  guards: {
510
502
  isChangingToLoading: (_, evt) => evt.toast?.type === "loading",
511
503
  isLoadingType: (ctx2) => ctx2.type === "loading",
512
- hasTypeChanged: (ctx2, evt) => evt.toast?.type !== ctx2.type,
513
- hasDurationChanged: (ctx2, evt) => evt.toast?.duration !== ctx2.duration
504
+ hasTypeChanged: (ctx2, evt) => evt.toast?.type != null && evt.toast.type !== ctx2.type,
505
+ hasDurationChanged: (ctx2, evt) => evt.toast?.duration != null && evt.toast.duration !== ctx2.duration
514
506
  },
515
507
  delays: {
516
508
  VISIBLE_DURATION: (ctx2) => ctx2.remaining,
@@ -525,7 +517,7 @@ function createToastMachine(options) {
525
517
  ctx2.mounted = true;
526
518
  const originalHeight = rootEl.style.height;
527
519
  rootEl.style.height = "auto";
528
- const newHeight = rootEl.offsetHeight;
520
+ const newHeight = rootEl.getBoundingClientRect().height;
529
521
  rootEl.style.height = originalHeight;
530
522
  ctx2.height = newHeight;
531
523
  self.sendParent({ type: "UPDATE_HEIGHT", id: self.id, height: newHeight, placement: ctx2.placement });
@@ -550,13 +542,14 @@ function createToastMachine(options) {
550
542
  ctx2.onStatusChange?.({ status: "visible" });
551
543
  },
552
544
  setContext(ctx2, evt) {
553
- const { duration: duration2, type: type2 } = evt.toast;
554
- if (duration2 == null && type2 == null) {
555
- Object.assign(ctx2, evt.toast);
556
- } else {
557
- const time = getToastDuration(duration2, type2);
558
- Object.assign(ctx2, { ...evt.toast, duration: time, remaining: time });
559
- }
545
+ const duration2 = evt.toast?.duration;
546
+ const type2 = evt.toast?.type ?? ctx2.type;
547
+ const computedDuration2 = getToastDuration(duration2, type2);
548
+ Object.assign(ctx2, {
549
+ ...evt.toast,
550
+ duration: computedDuration2,
551
+ remaining: computedDuration2
552
+ });
560
553
  }
561
554
  }
562
555
  }
@@ -711,8 +704,7 @@ function groupMachine(userContext) {
711
704
  },
712
705
  actions: {
713
706
  setDismissableBranch(ctx2) {
714
- const toastsByPlacement = getToastsByPlacement(ctx2.toasts);
715
- const currentToasts = toastsByPlacement[ctx2.placement] ?? [];
707
+ const currentToasts = getToastsByPlacement(ctx2.toasts, ctx2.placement);
716
708
  const hasToasts = currentToasts.length > 0;
717
709
  if (!hasToasts) {
718
710
  ctx2._cleanup?.();
@@ -852,16 +844,15 @@ function groupMachine(userContext) {
852
844
  );
853
845
  }
854
846
  function each(ctx, fn) {
855
- const toastsByPlacement = getToastsByPlacement(ctx.toasts);
856
- const currentToasts = toastsByPlacement[ctx.placement] ?? [];
847
+ const currentToasts = getToastsByPlacement(ctx.toasts, ctx.placement);
857
848
  currentToasts.forEach(fn);
858
849
  }
859
850
 
860
851
  // src/toast.connect.ts
861
852
  var import_dom_query5 = require("@zag-js/dom-query");
862
853
  function connect(state, send, normalize) {
863
- const isVisible = state.hasTag("visible");
864
- const isPaused = state.hasTag("paused");
854
+ const visible = state.hasTag("visible");
855
+ const paused = state.hasTag("paused");
865
856
  const placement = state.context.placement;
866
857
  const type = state.context.type;
867
858
  const [side, align = "center"] = placement.split("-");
@@ -870,9 +861,8 @@ function connect(state, send, normalize) {
870
861
  title: state.context.title,
871
862
  description: state.context.description,
872
863
  placement,
873
- isVisible,
874
- isPaused,
875
- isRtl: state.context.dir === "rtl",
864
+ visible,
865
+ paused,
876
866
  pause() {
877
867
  send("PAUSE");
878
868
  },
@@ -886,13 +876,13 @@ function connect(state, send, normalize) {
886
876
  ...parts.root.attrs,
887
877
  dir: state.context.dir,
888
878
  id: dom.getRootId(state.context),
889
- "data-state": isVisible ? "open" : "closed",
879
+ "data-state": visible ? "open" : "closed",
890
880
  "data-type": type,
891
881
  "data-placement": placement,
892
882
  "data-align": align,
893
883
  "data-side": side,
894
884
  "data-mounted": (0, import_dom_query5.dataAttr)(state.context.mounted),
895
- "data-paused": (0, import_dom_query5.dataAttr)(isPaused),
885
+ "data-paused": (0, import_dom_query5.dataAttr)(paused),
896
886
  "data-first": (0, import_dom_query5.dataAttr)(state.context.frontmost),
897
887
  "data-sibling": (0, import_dom_query5.dataAttr)(!state.context.frontmost),
898
888
  "data-stack": (0, import_dom_query5.dataAttr)(state.context.stacked),
@@ -900,8 +890,10 @@ function connect(state, send, normalize) {
900
890
  role: "status",
901
891
  "aria-atomic": "true",
902
892
  tabIndex: 0,
903
- style: getPlacementStyle(state.context, isVisible),
893
+ style: getPlacementStyle(state.context, visible),
904
894
  onKeyDown(event) {
895
+ if (event.defaultPrevented)
896
+ return;
905
897
  if (event.key == "Escape") {
906
898
  send("DISMISS");
907
899
  event.preventDefault();
@@ -910,15 +902,13 @@ function connect(state, send, normalize) {
910
902
  }),
911
903
  /* Leave a ghost div to avoid setting hover to false when transitioning out */
912
904
  ghostBeforeProps: normalize.element({
913
- ...parts.ghost.attrs,
914
- "data-type": "before",
915
- style: getGhostBeforeStyle(state.context, isVisible)
905
+ "data-ghost": "before",
906
+ style: getGhostBeforeStyle(state.context, visible)
916
907
  }),
917
908
  /* Needed to avoid setting hover to false when in between toasts */
918
909
  ghostAfterProps: normalize.element({
919
- ...parts.ghost.attrs,
920
- "data-type": "after",
921
- style: getGhostAfterStyle(state.context, isVisible)
910
+ "data-ghost": "after",
911
+ style: getGhostAfterStyle(state.context, visible)
922
912
  }),
923
913
  titleProps: normalize.element({
924
914
  ...parts.title.attrs,
@@ -931,7 +921,9 @@ function connect(state, send, normalize) {
931
921
  actionTriggerProps: normalize.button({
932
922
  ...parts.actionTrigger.attrs,
933
923
  type: "button",
934
- onClick() {
924
+ onClick(event) {
925
+ if (event.defaultPrevented)
926
+ return;
935
927
  send("DISMISS");
936
928
  }
937
929
  }),
@@ -940,7 +932,9 @@ function connect(state, send, normalize) {
940
932
  ...parts.closeTrigger.attrs,
941
933
  type: "button",
942
934
  "aria-label": "Dismiss notification",
943
- onClick() {
935
+ onClick(event) {
936
+ if (event.defaultPrevented)
937
+ return;
944
938
  send("DISMISS");
945
939
  }
946
940
  })
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 } 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() {\n return getToastsByPlacement(getState().context.toasts)\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 getToasts() {\n return getState().context.toasts\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 toastsByPlacement = getToastsByPlacementImpl()\n const toasts = toastsByPlacement[placement]\n if (!toasts) return\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 \"ghost\",\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>[]) {\n const result: Partial<Record<Placement, Service<T>[]>> = {}\n\n for (const toast of toasts) {\n const placement = toast.state.context.placement!\n result[placement] ||= []\n result[placement]!.push(toast)\n }\n\n return result\n}\n\nexport const defaultTimeouts: Record<Type, number> = {\n info: 5000,\n error: 5000,\n success: 2000,\n loading: Infinity,\n DEFAULT: 5000,\n}\n\nexport function getToastDuration(duration: number | undefined, type: 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 toasts: [],\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\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 toastsByPlacement = getToastsByPlacement(ctx.toasts)\n const currentToasts = toastsByPlacement[ctx.placement] ?? []\n\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 toastsByPlacement = getToastsByPlacement(ctx.toasts)\n const currentToasts = toastsByPlacement[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-part=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.offsetHeight\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 !== ctx.type,\n hasDurationChanged: (ctx, evt) => evt.toast?.duration !== ctx.duration,\n },\n\n delays: {\n VISIBLE_DURATION: (ctx) => ctx.remaining,\n REMOVE_DELAY: (ctx) => ctx.removeDelay,\n },\n\n actions: {\n 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.offsetHeight\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, type } = evt.toast\n if (duration == null && type == null) {\n Object.assign(ctx, evt.toast)\n } else {\n const time = getToastDuration(duration, type)\n Object.assign(ctx, { ...evt.toast, duration: time, remaining: time })\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 isVisible = state.hasTag(\"visible\")\n const isPaused = 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 isVisible,\n isPaused,\n isRtl: state.context.dir === \"rtl\",\n\n pause() {\n send(\"PAUSE\")\n },\n\n resume() {\n send(\"RESUME\")\n },\n\n dismiss() {\n send(\"DISMISS\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-state\": isVisible ? \"open\" : \"closed\",\n \"data-type\": type,\n \"data-placement\": placement,\n \"data-align\": align,\n \"data-side\": side,\n \"data-mounted\": dataAttr(state.context.mounted),\n \"data-paused\": dataAttr(isPaused),\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 tabIndex: 0,\n style: getPlacementStyle(state.context, isVisible),\n onKeyDown(event) {\n if (event.key == \"Escape\") {\n send(\"DISMISS\")\n event.preventDefault()\n }\n },\n }),\n\n /* Leave a ghost div to avoid setting hover to false when transitioning out */\n ghostBeforeProps: normalize.element({\n ...parts.ghost.attrs,\n \"data-type\": \"before\",\n style: getGhostBeforeStyle(state.context, isVisible),\n }),\n\n /* Needed to avoid setting hover to false when in between toasts */\n ghostAfterProps: normalize.element({\n ...parts.ghost.attrs,\n \"data-type\": \"after\",\n style: getGhostAfterStyle(state.context, isVisible),\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n actionTriggerProps: normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick() {\n send(\"DISMISS\")\n },\n }),\n }\n}\n"],"mappings":"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","names":["import_dom_query","import_dom_query","offset","import_core","import_utils","import_core","import_dom_query","import_utils","ctx","duration","type","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 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 toasts: [],\n gap: 16,\n pauseOnPageIdle: false,\n hotkey: [\"altKey\", \"KeyT\"],\n offsets: \"1rem\",\n placement: \"bottom\",\n removeDelay: 200,\n ...ctx,\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 rootProps: 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 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 /* Leave a ghost div to avoid setting hover to false when transitioning out */\n ghostBeforeProps: normalize.element({\n \"data-ghost\": \"before\",\n style: getGhostBeforeStyle(state.context, visible),\n }),\n\n /* Needed to avoid setting hover to false when in between toasts */\n ghostAfterProps: normalize.element({\n \"data-ghost\": \"after\",\n style: getGhostAfterStyle(state.context, visible),\n }),\n\n titleProps: normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(state.context),\n }),\n\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(state.context),\n }),\n\n actionTriggerProps: normalize.button({\n ...parts.actionTrigger.attrs,\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\n },\n }),\n\n closeTriggerProps: normalize.button({\n id: dom.getCloseTriggerId(state.context),\n ...parts.closeTrigger.attrs,\n type: \"button\",\n \"aria-label\": \"Dismiss notification\",\n onClick(event) {\n if (event.defaultPrevented) return\n send(\"DISMISS\")\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"]}