UNPKG

bootstrap-vue-next

Version:

Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development

40 lines (39 loc) 1.54 kB
import { l as defaultsKey } from "../../../keys-CQKrwmvN.mjs"; import { computed, inject, provide, unref } from "vue"; //#region src/composables/useProvideDefaults/index.ts var useProvideDefaults = (defaults, mergeDefaults) => { const injectedDefaults = inject(defaultsKey, null); provide(defaultsKey, computed(() => { const _defaults = unref(defaults); if (!injectedDefaults) return _defaults ?? {}; const merged = { ...injectedDefaults.value }; if (_defaults) { if (mergeDefaults) { if (typeof mergeDefaults === "function") return mergeDefaults(merged, _defaults); else if (mergeDefaults === true) return deepMerge(merged, _defaults); return Object.assign(merged, _defaults); } return _defaults; } return merged; })); }; function isPlainObject(value) { return value !== null && typeof value === "object" && value.constructor === Object && Object.prototype.toString.call(value) === "[object Object]"; } function deepMerge(target, source, visited = /* @__PURE__ */ new WeakSet()) { if (visited.has(source)) return target; visited.add(source); const result = { ...target }; for (const key in source) { const sourceValue = source[key]; const targetValue = target[key]; if (isPlainObject(sourceValue) && isPlainObject(targetValue)) result[key] = deepMerge(targetValue, sourceValue, visited); else if (Array.isArray(sourceValue)) result[key] = [...sourceValue]; else result[key] = sourceValue; } return result; } //#endregion export { useProvideDefaults }; //# sourceMappingURL=index.mjs.map