This commit is contained in:
2025-09-19 14:25:20 +08:00
parent 269893a435
commit fbf3f77229
24949 changed files with 2839404 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
export { OnlyChild as ElOnlyChild } from './src/only-child';
export * from './src/only-child';

11
node_modules/element-plus/lib/components/slot/index.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var onlyChild = require('./src/only-child.js');
exports.ElOnlyChild = onlyChild.OnlyChild;
exports.OnlyChild = onlyChild.OnlyChild;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}

View File

@@ -0,0 +1,7 @@
import type { Ref, VNode } from 'vue';
export declare const OnlyChild: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
export type OnlyChildExpose = {
forwardRef: Ref<HTMLElement>;
};

View File

@@ -0,0 +1,64 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var index = require('../../../hooks/use-forward-ref/index.js');
var shared = require('@vue/shared');
var index$1 = require('../../../hooks/use-namespace/index.js');
const NAME = "ElOnlyChild";
const OnlyChild = vue.defineComponent({
name: NAME,
setup(_, {
slots,
attrs
}) {
var _a;
const forwardRefInjection = vue.inject(index.FORWARD_REF_INJECTION_KEY);
const forwardRefDirective = index.useForwardRefDirective((_a = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a : shared.NOOP);
return () => {
var _a2;
const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots, attrs);
if (!defaultSlot)
return null;
const [firstLegitNode, length] = findFirstLegitChild(defaultSlot);
if (!firstLegitNode) {
return null;
}
return vue.withDirectives(vue.cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]);
};
}
});
function findFirstLegitChild(node) {
if (!node)
return [null, 0];
const children = node;
const len = children.filter((c) => c.type !== vue.Comment).length;
for (const child of children) {
if (shared.isObject(child)) {
switch (child.type) {
case vue.Comment:
continue;
case vue.Text:
case "svg":
return [wrapTextContent(child), len];
case vue.Fragment:
return findFirstLegitChild(child.children);
default:
return [child, len];
}
}
return [wrapTextContent(child), len];
}
return [null, 0];
}
function wrapTextContent(s) {
const ns = index$1.useNamespace("only-child");
return vue.createVNode("span", {
"class": ns.e("content")
}, [s]);
}
exports.OnlyChild = OnlyChild;
//# sourceMappingURL=only-child.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"only-child.js","sources":["../../../../../../packages/components/slot/src/only-child.tsx"],"sourcesContent":["import {\n Comment,\n Fragment,\n Text,\n cloneVNode,\n defineComponent,\n inject,\n withDirectives,\n} from 'vue'\nimport { NOOP, debugWarn, isObject } from '@element-plus/utils'\nimport {\n FORWARD_REF_INJECTION_KEY,\n useForwardRefDirective,\n useNamespace,\n} from '@element-plus/hooks'\n\nimport type { Ref, VNode } from 'vue'\n\nconst NAME = 'ElOnlyChild'\n\nexport const OnlyChild = defineComponent({\n name: NAME,\n setup(_, { slots, attrs }) {\n const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY)\n const forwardRefDirective = useForwardRefDirective(\n forwardRefInjection?.setForwardRef ?? NOOP\n )\n return () => {\n const defaultSlot = slots.default?.(attrs)\n if (!defaultSlot) return null\n const [firstLegitNode, length] = findFirstLegitChild(defaultSlot)\n\n if (!firstLegitNode) {\n debugWarn(NAME, 'no valid child node found')\n return null\n }\n if (length > 1) {\n debugWarn(NAME, 'requires exact only one valid child.')\n }\n\n return withDirectives(cloneVNode(firstLegitNode!, attrs), [\n [forwardRefDirective],\n ])\n }\n },\n})\n\nfunction findFirstLegitChild(\n node: VNode[] | undefined\n): [VNode | null, number] {\n if (!node) return [null, 0]\n const children = node as VNode[]\n const len = children.filter((c) => c.type !== Comment).length\n\n for (const child of children) {\n /**\n * when user uses h(Fragment, [text]) to render plain string,\n * this switch case just cannot handle, when the value is primitives\n * we should just return the wrapped string\n */\n if (isObject(child)) {\n switch (child.type) {\n case Comment:\n continue\n case Text:\n case 'svg':\n return [wrapTextContent(child), len]\n case Fragment:\n return findFirstLegitChild(child.children as VNode[])\n default:\n return [child, len]\n }\n }\n return [wrapTextContent(child), len]\n }\n return [null, 0]\n}\n\nfunction wrapTextContent(s: string | VNode) {\n const ns = useNamespace('only-child')\n return <span class={ns.e('content')}>{s}</span>\n}\n\nexport type OnlyChildExpose = {\n forwardRef: Ref<HTMLElement>\n}\n"],"names":["NAME","OnlyChild","defineComponent","name","slots","attrs","forwardRefInjection","inject","FORWARD_REF_INJECTION_KEY","forwardRefDirective","useForwardRefDirective","setForwardRef","NOOP","defaultSlot","debugWarn","findFirstLegitChild","Comment","children","len","filter","child","Text","Fragment","wrapTextContent","useNamespace"],"mappings":";;;;;;;;;AAkBA,MAAMA,IAAI,GAAG,aAAb,CAAA;AAEaC,MAAAA,SAAS,GAAGC,mBAAe,CAAC;AACvCC,EAAAA,IAAI,EAAEH,IADiC;;IAElC,KAAA;IAAMI,KAAF;AAASC,GAAAA,EAAAA;AAAT,IAAkB,IAAA,EAAA,CAAA;AACzB,IAAA,MAAMC,mBAAmB,GAAGC,UAAM,CAACC,+BAAD,CAAlC,CAAA;IACA,MAAMC,mBAAmB,GAAGC,4BAAsB,CAChDJ,yBAAqBK,IAAAA,IAAAA,GAAiBC,KAAAA,CADU,GAAlD,mBAAA,CAAA,aAAA,KAAA,IAAA,GAAA,EAAA,GAAAA,WAAA,CAAA,CAAA;AAGA,IAAA,OAAO,MAAM;AACX,MAAA,IAAA;AACA,MAAA,MAAKC,WAAa,GAAA,CAAA,GAAA,GAAA,KAAA,CAAA,OAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;MAClB,IAAM,CAAA;;MAEN,qBAAqB,EAAA,MAAA,CAAA,GAAA,mBAAA,CAAA,WAAA,CAAA,CAAA;AACnBC,MAAAA,IAAAA,CAAAA,cAAgB,EAAA;AAEjB,QAAA,OAAA,IAAA,CAAA;;;AAKD,KAAA,CAAA;;AAIH,CAAA,EAAA;;AAxBsC,EAAlC,IAAA,CAAA,IAAA;;AA2BP,EAASC,MAAAA,QAAAA,GAAAA,IAAAA,CAAAA;EAGP,SAAA,GAAW,QAAO,CAAA,MAAP,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,KAAAC,WAAA,CAAA,CAAA,MAAA,CAAA;EACX,KAAMC,MAAAA,SAAN,QAAA,EAAA;AACA,IAAA,IAAMC,eAAc,CAAA,KAAA,CAACC;;AAErB,QAAWC,KAAAA,WAASH;AAClB,UAAA,SAAA;AACJ,QAAA,KAAAI,QAAA,CAAA;AACA,QAAA,KAAA,KAAA;AACA,UAAA,OAAA,CAAA,eAAA,CAAA,KAAA,CAAA,EAAA,GAAA,CAAA,CAAA;AACA,QAAA,KAAAC,YAAA;AACI,UAAY,OAACF,mBAAQ,CAAA,KAAA,CAAA,QAAA,CAAA,CAAA;QACXA;AACN,UAAA,OAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;AACE,OAAA;;AACF,IAAA,OAAA,CAAA,eAAA,CAAA,KAAA,CAAA,EAAA,GAAA,CAAA,CAAA;AACA,GAAA;AACE,EAAA,OAAA,CAAA,IAAA,EAAA,CAAO,CAACG,CAAe;;AACzB,SAAA,eAAA,CAAA,CAAA,EAAA;AACE,EAAA,MAAA,EAAA,GAAAC,oBAA0B,CAAA,YAAM,CAAA,CAAA;;AAClC,IAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAAA,SAAA,CAAA;AACE,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AATJ;;;;"}