@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
JavaScript
;
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;