完全跑通1.0版本

This commit is contained in:
2026-05-26 12:56:03 +08:00
parent 2ece5174a7
commit 93c714a93b
11557 changed files with 1648225 additions and 36 deletions

View File

@@ -0,0 +1,138 @@
import { Ref, ToRefs } from "vue";
import * as _$_floating_ui_dom0 from "@floating-ui/dom";
import { Middleware, Placement, SideObject, Strategy, VirtualElement } from "@floating-ui/dom";
//#region ../../packages/hooks/use-floating/index.d.ts
declare const useFloatingProps: {};
type UseFloatingProps = ToRefs<{
middleware: Array<Middleware>;
placement: Placement;
strategy: Strategy;
}>;
declare const getPositionDataWithUnit: <T extends Record<string, number>>(record: T | undefined, key: keyof T) => string;
declare const useFloating: ({
middleware,
placement,
strategy
}: UseFloatingProps) => {
update: () => Promise<void>;
referenceRef: Ref<HTMLElement | VirtualElement | undefined, HTMLElement | VirtualElement | undefined>;
contentRef: Ref<HTMLElement | undefined, HTMLElement | undefined>;
x: Ref<number | undefined, number | undefined>;
y: Ref<number | undefined, number | undefined>;
placement: Ref<Placement, Placement>;
strategy: Ref<Strategy, Strategy>;
middlewareData: Ref<{
[x: string]: any;
arrow?: {
x?: number | undefined;
y?: number | undefined;
centerOffset: number;
alignmentOffset?: number | undefined;
} | undefined;
autoPlacement?: {
index?: number | undefined;
overflows: {
placement: Placement;
overflows: Array<number>;
}[];
} | undefined;
flip?: {
index?: number | undefined;
overflows: {
placement: Placement;
overflows: Array<number>;
}[];
} | undefined;
hide?: {
referenceHidden?: boolean | undefined;
escaped?: boolean | undefined;
referenceHiddenOffsets?: {
top: number;
bottom: number;
left: number;
right: number;
} | undefined;
escapedOffsets?: {
top: number;
bottom: number;
left: number;
right: number;
} | undefined;
} | undefined;
offset?: {
x: number;
y: number;
placement: Placement;
} | undefined;
shift?: {
x: number;
y: number;
enabled: {
x: boolean;
y: boolean;
};
} | undefined;
}, _$_floating_ui_dom0.MiddlewareData | {
[x: string]: any;
arrow?: {
x?: number | undefined;
y?: number | undefined;
centerOffset: number;
alignmentOffset?: number | undefined;
} | undefined;
autoPlacement?: {
index?: number | undefined;
overflows: {
placement: Placement;
overflows: Array<number>;
}[];
} | undefined;
flip?: {
index?: number | undefined;
overflows: {
placement: Placement;
overflows: Array<number>;
}[];
} | undefined;
hide?: {
referenceHidden?: boolean | undefined;
escaped?: boolean | undefined;
referenceHiddenOffsets?: {
top: number;
bottom: number;
left: number;
right: number;
} | undefined;
escapedOffsets?: {
top: number;
bottom: number;
left: number;
right: number;
} | undefined;
} | undefined;
offset?: {
x: number;
y: number;
placement: Placement;
} | undefined;
shift?: {
x: number;
y: number;
enabled: {
x: boolean;
y: boolean;
};
} | undefined;
}>;
};
type ArrowMiddlewareProps = {
arrowRef: Ref<HTMLElement | null | undefined>;
padding?: number | SideObject;
};
declare const arrowMiddleware: ({
arrowRef,
padding
}: ArrowMiddlewareProps) => Middleware;
//#endregion
export { ArrowMiddlewareProps, UseFloatingProps, arrowMiddleware, getPositionDataWithUnit, useFloating, useFloatingProps };

View File

@@ -0,0 +1,81 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
require("../../_virtual/_rolldown/runtime.js");
const require_objects = require("../../utils/objects.js");
const require_runtime$1 = require("../../utils/vue/props/runtime.js");
let _vueuse_core = require("@vueuse/core");
let lodash_unified = require("lodash-unified");
let vue = require("vue");
let _floating_ui_dom = require("@floating-ui/dom");
//#region ../../packages/hooks/use-floating/index.ts
const useFloatingProps = require_runtime$1.buildProps({});
const unrefReference = (elRef) => {
if (!_vueuse_core.isClient) return;
if (!elRef) return elRef;
const unrefEl = (0, _vueuse_core.unrefElement)(elRef);
if (unrefEl) return unrefEl;
return (0, vue.isRef)(elRef) ? unrefEl : elRef;
};
const getPositionDataWithUnit = (record, key) => {
const value = record?.[key];
return (0, lodash_unified.isNil)(value) ? "" : `${value}px`;
};
const useFloating = ({ middleware, placement, strategy }) => {
const referenceRef = (0, vue.ref)();
const contentRef = (0, vue.ref)();
const states = {
x: (0, vue.ref)(),
y: (0, vue.ref)(),
placement,
strategy,
middlewareData: (0, vue.ref)({})
};
const update = async () => {
if (!_vueuse_core.isClient) return;
const referenceEl = unrefReference(referenceRef);
const contentEl = (0, _vueuse_core.unrefElement)(contentRef);
if (!referenceEl || !contentEl) return;
const data = await (0, _floating_ui_dom.computePosition)(referenceEl, contentEl, {
placement: (0, vue.unref)(placement),
strategy: (0, vue.unref)(strategy),
middleware: (0, vue.unref)(middleware)
});
require_objects.keysOf(states).forEach((key) => {
states[key].value = data[key];
});
};
(0, vue.onMounted)(() => {
(0, vue.watchEffect)(() => {
update();
});
});
return {
...states,
update,
referenceRef,
contentRef
};
};
const arrowMiddleware = ({ arrowRef, padding }) => {
return {
name: "arrow",
options: {
element: arrowRef,
padding
},
fn(args) {
const arrowEl = (0, vue.unref)(arrowRef);
if (!arrowEl) return {};
return (0, _floating_ui_dom.arrow)({
element: arrowEl,
padding
}).fn(args);
}
};
};
//#endregion
exports.arrowMiddleware = arrowMiddleware;
exports.getPositionDataWithUnit = getPositionDataWithUnit;
exports.useFloating = useFloating;
exports.useFloatingProps = useFloatingProps;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["buildProps","isClient"],"sources":["../../../../../packages/hooks/use-floating/index.ts"],"sourcesContent":["import { isRef, onMounted, ref, unref, watchEffect } from 'vue'\nimport { unrefElement } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { arrow as arrowCore, computePosition } from '@floating-ui/dom'\nimport { buildProps, isClient, keysOf } from '@element-plus/utils'\n\nimport type { Ref, ToRefs } from 'vue'\nimport type {\n ComputePositionReturn,\n Middleware,\n Placement,\n SideObject,\n Strategy,\n VirtualElement,\n} from '@floating-ui/dom'\n\nexport const useFloatingProps = buildProps({} as const)\n\nexport type UseFloatingProps = ToRefs<{\n middleware: Array<Middleware>\n placement: Placement\n strategy: Strategy\n}>\n\ntype ElementRef = Parameters<typeof unrefElement>['0']\n\nconst unrefReference = (\n elRef: ElementRef | Ref<VirtualElement | undefined>\n) => {\n if (!isClient) return\n if (!elRef) return elRef\n const unrefEl = unrefElement(elRef as ElementRef)\n if (unrefEl) return unrefEl\n return isRef(elRef) ? unrefEl : (elRef as VirtualElement)\n}\n\nexport const getPositionDataWithUnit = <T extends Record<string, number>>(\n record: T | undefined,\n key: keyof T\n) => {\n const value = record?.[key]\n return isNil(value) ? '' : `${value}px`\n}\n\nexport const useFloating = ({\n middleware,\n placement,\n strategy,\n}: UseFloatingProps) => {\n const referenceRef = ref<HTMLElement | VirtualElement>()\n const contentRef = ref<HTMLElement>()\n const x = ref<number>()\n const y = ref<number>()\n const middlewareData = ref<ComputePositionReturn['middlewareData']>({})\n\n const states = {\n x,\n y,\n placement,\n strategy,\n middlewareData,\n } as const\n\n const update = async () => {\n if (!isClient) return\n\n const referenceEl = unrefReference(referenceRef)\n const contentEl = unrefElement(contentRef)\n if (!referenceEl || !contentEl) return\n\n const data = await computePosition(referenceEl, contentEl, {\n placement: unref(placement),\n strategy: unref(strategy),\n middleware: unref(middleware),\n })\n\n keysOf(states).forEach((key) => {\n states[key].value = data[key]\n })\n }\n\n onMounted(() => {\n watchEffect(() => {\n update()\n })\n })\n\n return {\n ...states,\n update,\n referenceRef,\n contentRef,\n }\n}\n\nexport type ArrowMiddlewareProps = {\n arrowRef: Ref<HTMLElement | null | undefined>\n padding?: number | SideObject\n}\n\nexport const arrowMiddleware = ({\n arrowRef,\n padding,\n}: ArrowMiddlewareProps): Middleware => {\n return {\n name: 'arrow',\n options: {\n element: arrowRef,\n padding,\n },\n\n fn(args) {\n const arrowEl = unref(arrowRef)\n if (!arrowEl) return {}\n\n return arrowCore({\n element: arrowEl,\n padding,\n }).fn(args)\n },\n }\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,mBAAmBA,kBAAAA,WAAW,EAAE,CAAU;AAUvD,MAAM,kBACJ,UACG;CACH,IAAI,CAACC,aAAAA,UAAU;CACf,IAAI,CAAC,OAAO,OAAO;CACnB,MAAM,WAAA,GAAA,aAAA,cAAuB,MAAoB;CACjD,IAAI,SAAS,OAAO;CACpB,QAAA,GAAA,IAAA,OAAa,MAAM,GAAG,UAAW;;AAGnC,MAAa,2BACX,QACA,QACG;CACH,MAAM,QAAQ,SAAS;CACvB,QAAA,GAAA,eAAA,OAAa,MAAM,GAAG,KAAK,GAAG,MAAM;;AAGtC,MAAa,eAAe,EAC1B,YACA,WACA,eACsB;CACtB,MAAM,gBAAA,GAAA,IAAA,MAAkD;CACxD,MAAM,cAAA,GAAA,IAAA,MAA+B;CAKrC,MAAM,SAAS;EACb,IAAA,GAAA,IAAA,MAAC;EACD,IAAA,GAAA,IAAA,MAAC;EACD;EACA;EACA,iBAAA,GAAA,IAAA,KAPkE,EAAE,CAOtD;EACf;CAED,MAAM,SAAS,YAAY;EACzB,IAAI,CAACA,aAAAA,UAAU;EAEf,MAAM,cAAc,eAAe,aAAa;EAChD,MAAM,aAAA,GAAA,aAAA,cAAyB,WAAW;EAC1C,IAAI,CAAC,eAAe,CAAC,WAAW;EAEhC,MAAM,OAAO,OAAA,GAAA,iBAAA,iBAAsB,aAAa,WAAW;GACzD,YAAA,GAAA,IAAA,OAAiB,UAAU;GAC3B,WAAA,GAAA,IAAA,OAAgB,SAAS;GACzB,aAAA,GAAA,IAAA,OAAkB,WAAW;GAC9B,CAAC;EAEF,gBAAA,OAAO,OAAO,CAAC,SAAS,QAAQ;GAC9B,OAAO,KAAK,QAAQ,KAAK;IACzB;;CAGJ,CAAA,GAAA,IAAA,iBAAgB;EACd,CAAA,GAAA,IAAA,mBAAkB;GAChB,QAAQ;IACR;GACF;CAEF,OAAO;EACL,GAAG;EACH;EACA;EACA;EACD;;AAQH,MAAa,mBAAmB,EAC9B,UACA,cACsC;CACtC,OAAO;EACL,MAAM;EACN,SAAS;GACP,SAAS;GACT;GACD;EAED,GAAG,MAAM;GACP,MAAM,WAAA,GAAA,IAAA,OAAgB,SAAS;GAC/B,IAAI,CAAC,SAAS,OAAO,EAAE;GAEvB,QAAA,GAAA,iBAAA,OAAiB;IACf,SAAS;IACT;IACD,CAAC,CAAC,GAAG,KAAK;;EAEd"}