bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
182 lines (181 loc) • 7.25 kB
JavaScript
import { o as unrefElement } from "./dist-9-XTMhb-.js";
import { Comment, Fragment, cloneVNode, computed, createBlock, defineComponent, h, inject, mergeProps, openBlock, provide, ref, renderSlot, unref, withCtx } from "vue";
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/shared/createContext.js
/**
* @param providerComponentName - The name(s) of the component(s) providing the context.
*
* There are situations where context can come from multiple components. In such cases, you might need to give an array of component names to provide your context, instead of just a single string.
*
* @param contextName The description for injection key symbol.
*/
function createContext(providerComponentName, contextName) {
const symbolDescription = typeof providerComponentName === "string" && !contextName ? `${providerComponentName}Context` : contextName;
const injectionKey = Symbol(symbolDescription);
/**
* @param fallback The context value to return if the injection fails.
*
* @throws When context injection failed and no fallback is specified.
* This happens when the component injecting the context is not a child of the root component providing the context.
*/
const injectContext = (fallback) => {
const context = inject(injectionKey, fallback);
if (context) return context;
if (context === null) return context;
throw new Error(`Injection \`${injectionKey.toString()}\` not found. Component must be used within ${Array.isArray(providerComponentName) ? `one of the following components: ${providerComponentName.join(", ")}` : `\`${providerComponentName}\``}`);
};
const provideContext = (contextValue) => {
provide(injectionKey, contextValue);
return contextValue;
};
return [injectContext, provideContext];
}
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/shared/getActiveElement.js
function getActiveElement() {
let activeElement = document.activeElement;
if (activeElement == null) return null;
while (activeElement != null && activeElement.shadowRoot != null && activeElement.shadowRoot.activeElement != null) activeElement = activeElement.shadowRoot.activeElement;
return activeElement;
}
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/shared/renderSlotFragments.js
function renderSlotFragments(children) {
if (!children) return [];
return children.flatMap((child) => {
if (child.type === Fragment) return renderSlotFragments(child.children);
return [child];
});
}
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/ConfigProvider/ConfigProvider.js
var [injectConfigProviderContext, provideConfigProviderContext] = /*#__PURE__*/ createContext("ConfigProvider");
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/shared/useDirection.js
/**
* The `useDirection` function provides a way to access the current direction in your application.
* @param {Ref<Direction | undefined>} [dir] - An optional ref containing the direction (ltr or rtl).
* @returns computed value that combines with the resolved direction.
*/
function useDirection(dir) {
const context = injectConfigProviderContext({ dir: ref("ltr") });
return computed(() => dir?.value || context.dir?.value || "ltr");
}
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/Primitive/Slot.js
var Slot = /*#__PURE__*/ defineComponent({
name: "PrimitiveSlot",
inheritAttrs: false,
setup(_, { attrs, slots }) {
return () => {
if (!slots.default) return null;
const children = renderSlotFragments(slots.default());
const firstNonCommentChildrenIndex = children.findIndex((child) => child.type !== Comment);
if (firstNonCommentChildrenIndex === -1) return children;
const firstNonCommentChildren = children[firstNonCommentChildrenIndex];
delete firstNonCommentChildren.props?.ref;
const mergedProps = firstNonCommentChildren.props ? mergeProps(attrs, firstNonCommentChildren.props) : attrs;
const cloned = cloneVNode({
...firstNonCommentChildren,
props: {}
}, mergedProps);
if (children.length === 1) return cloned;
children[firstNonCommentChildrenIndex] = cloned;
return children;
};
}
});
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/Primitive/Primitive.js
var SELF_CLOSING_TAGS = [
"area",
"img",
"input"
];
var Primitive = /*#__PURE__*/ defineComponent({
name: "Primitive",
inheritAttrs: false,
props: {
asChild: {
type: Boolean,
default: false
},
as: {
type: [String, Object],
default: "div"
}
},
setup(props, { attrs, slots }) {
const asTag = props.asChild ? "template" : props.as;
if (typeof asTag === "string" && SELF_CLOSING_TAGS.includes(asTag)) return () => h(asTag, attrs);
if (asTag !== "template") return () => h(props.as, attrs, { default: slots.default });
return () => h(Slot, attrs, { default: slots.default });
}
});
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/Primitive/usePrimitiveElement.js
function usePrimitiveElement() {
const primitiveElement = ref();
return {
primitiveElement,
currentElement: computed(() => ["#text", "#comment"].includes(primitiveElement.value?.$el.nodeName) ? primitiveElement.value?.$el.nextElementSibling : unrefElement(primitiveElement))
};
}
//#endregion
//#region ../../node_modules/.pnpm/reka-ui@2.10.3_vue@3.5.41_typescript@5.9.3_/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHidden.js
var VisuallyHidden_default = /* @__PURE__ */ defineComponent({
__name: "VisuallyHidden",
props: {
feature: {
type: String,
required: false,
default: "focusable"
},
asChild: {
type: Boolean,
required: false
},
as: {
type: null,
required: false,
default: "span"
}
},
setup(__props) {
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(Primitive), {
as: _ctx.as,
"as-child": _ctx.asChild,
"aria-hidden": _ctx.feature === "focusable" || _ctx.feature === "fully-hidden" ? "true" : void 0,
"data-hidden": _ctx.feature === "fully-hidden" ? "" : void 0,
tabindex: _ctx.feature === "fully-hidden" ? "-1" : void 0,
style: {
position: "absolute",
border: 0,
width: "1px",
height: "1px",
padding: 0,
margin: "-1px",
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
clipPath: "inset(50%)",
whiteSpace: "nowrap",
wordWrap: "normal",
top: "-1px",
left: "-1px"
}
}, {
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
_: 3
}, 8, [
"as",
"as-child",
"aria-hidden",
"data-hidden",
"tabindex"
]);
};
}
});
//#endregion
export { useDirection as a, getActiveElement as c, Slot as i, createContext as l, usePrimitiveElement as n, injectConfigProviderContext as o, Primitive as r, renderSlotFragments as s, VisuallyHidden_default as t };
//# sourceMappingURL=VisuallyHidden-BYzyjJiY.js.map