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