UNPKG

@ark-ui/vue

Version:

A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.

102 lines (95 loc) 2.86 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const vue = require('vue'); const toast = require('@zag-js/toast'); const vue$1 = require('@zag-js/vue'); const useEnvironmentContext = require('../../providers/environment/use-environment-context.cjs'); const useLocaleContext = require('../../providers/locale/use-locale-context.cjs'); const factory = require('../factory.cjs'); const useToastContext = require('./use-toast-context.cjs'); function _interopNamespaceDefault(e) { const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } }); if (e) { for (const k in e) { if (k !== 'default') { const d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: () => e[k] }); } } } n.default = e; return Object.freeze(n); } const toast__namespace = /*#__PURE__*/_interopNamespaceDefault(toast); function _isSlot(s) { return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s); } const Toaster = /* @__PURE__ */ vue.defineComponent((props, { attrs, slots }) => { const locale = useLocaleContext.useLocaleContext(); const env = useEnvironmentContext.useEnvironmentContext(); const service = vue$1.useMachine(toast__namespace.group.machine, { store: props.toaster, id: vue.useId(), dir: locale?.value.dir, getRootNode: env?.value.getRootNode }); const api = vue.computed(() => toast__namespace.group.connect(service, vue$1.normalizeProps)); return () => { let _slot; return vue.createVNode(factory.ark.div, vue.mergeProps(api.value.getGroupProps(), attrs), _isSlot(_slot = api.value.getToasts().map((toast, index) => vue.createVNode(ToastItem, { "value": toast, "key": toast.id, "parent": service, "index": index }, { default: toast => slots.default?.(toast) }))) ? _slot : { default: () => [_slot] }); }; }, { name: 'Toaster', props: { toaster: { type: Object, required: true } }, slots: Object }); const ToastItem = /* @__PURE__ */ vue.defineComponent((props, { slots }) => { const machineProps = vue.computed(() => ({ ...props.value, index: props.index, parent: props.parent })); const service = vue$1.useMachine(toast__namespace.machine, machineProps.value); const api = vue.computed(() => toast__namespace.connect(service, vue$1.normalizeProps)); useToastContext.ToastProvider(api); return () => slots.default?.(props.value); }, { name: 'ToastItem', props: { value: { type: Object, required: true }, index: { type: Number, required: true }, parent: { type: Object, required: true } } }); exports.Toaster = Toaster;