bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
42 lines (41 loc) • 1.7 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
require("../../../chunk-CoQrYLCe.js");
const require_keys = require("../../../keys-durSVUrO.js");
let vue = require("vue");
//#region src/composables/useProvideDefaults/index.ts
var useProvideDefaults = (defaults, mergeDefaults) => {
const injectedDefaults = (0, vue.inject)(require_keys.defaultsKey, null);
(0, vue.provide)(require_keys.defaultsKey, (0, vue.computed)(() => {
const _defaults = (0, vue.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
exports.useProvideDefaults = useProvideDefaults;
//# sourceMappingURL=index.umd.js.map