bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
3 lines (2 loc) • 1.51 kB
JavaScript
;const e=require("vue"),t=require("./keys-D59bcWpQ.js");function n(t,n){const o=e.getCurrentInstance();if(!o)throw new Error(`[Bvn] ${t} must be called from inside a setup function`);return o}const o=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);function r(e={},t={},n){const s={};for(const o in e)s[o]=e[o];for(const u in t){const n=e[u],l=t[u];o(n)&&o(l)?s[u]=r(n,l):s[u]=l}return s}function s(o={},s){const u=e.inject(t.defaultsKey,e.ref({})),l=n("useDefaults");if(!(s=s??l.type.name??l.type.__name))throw new Error("[Bvn] Could not determine component name");const a=e.computed(()=>u.value?.[o._as??s]),c=new Proxy(o,{get(e,t){const n=Reflect.get(e,t);return"class"===t||"style"===t?[a.value?.[t],n].filter(e=>null!=e):"string"!=typeof t||((e,t)=>void 0!==e.props?.[t]||void 0!==e.props?.[((e="")=>e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase())(t)])(l.vnode,t)?n:a.value?.[t]??u.value?.global?.[t]??n}}),i=e.shallowRef();return e.watchEffect(()=>{if(a.value){const e=Object.entries(a.value).filter(([e])=>e.startsWith(e[0].toUpperCase()));i.value=e.length?Object.fromEntries(e):void 0}else i.value=void 0}),{props:c,provideSubDefaults:function(){const o=function(e,t=n("injectSelf")){const{provides:o}=t;if(o&&e in o)return o[e]}(t.defaultsKey,l);e.provide(t.defaultsKey,e.computed(()=>i.value?r(o?.value??{},i.value):o?.value))}}}exports.useDefaults=function(e,t){const{props:n,provideSubDefaults:o}=s(e,t);return o(),n};
//# sourceMappingURL=useDefaults-DspAih6L.js.map