straw-ui-vue 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/_virtual/_plugin-vue_export-helper.cjs +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/st-button/index.d.ts +162 -0
- package/dist/components/st-button/st-button.vue.cjs +1 -0
- package/dist/components/st-button/st-button.vue.d.ts +29 -0
- package/dist/components/st-button/st-button.vue.js +5 -0
- package/dist/components/st-button/st-button.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-button/st-button.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/st-button/types.d.ts +49 -0
- package/dist/components/st-button.cjs +1 -0
- package/dist/components/st-button.js +6 -0
- package/dist/components/st-checkbox/index.d.ts +153 -0
- package/dist/components/st-checkbox/st-checkbox.vue.cjs +1 -0
- package/dist/components/st-checkbox/st-checkbox.vue.d.ts +27 -0
- package/dist/components/st-checkbox/st-checkbox.vue.js +5 -0
- package/dist/components/st-checkbox/st-checkbox.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-checkbox/st-checkbox.vue_vue_type_script_setup_true_lang.js +109 -0
- package/dist/components/st-checkbox/types.d.ts +20 -0
- package/dist/components/st-checkbox-group/index.d.ts +171 -0
- package/dist/components/st-checkbox-group/st-checkbox-group.vue.cjs +1 -0
- package/dist/components/st-checkbox-group/st-checkbox-group.vue.d.ts +29 -0
- package/dist/components/st-checkbox-group/st-checkbox-group.vue.js +5 -0
- package/dist/components/st-checkbox-group/st-checkbox-group.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-checkbox-group/st-checkbox-group.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/st-checkbox-group/types.d.ts +43 -0
- package/dist/components/st-checkbox-group.cjs +1 -0
- package/dist/components/st-checkbox-group.js +6 -0
- package/dist/components/st-checkbox.cjs +1 -0
- package/dist/components/st-checkbox.js +6 -0
- package/dist/components/st-dialog/index.d.ts +243 -0
- package/dist/components/st-dialog/st-dialog.vue.cjs +1 -0
- package/dist/components/st-dialog/st-dialog.vue.d.ts +41 -0
- package/dist/components/st-dialog/st-dialog.vue.js +5 -0
- package/dist/components/st-dialog/st-dialog.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-dialog/st-dialog.vue_vue_type_script_setup_true_lang.js +175 -0
- package/dist/components/st-dialog/types.d.ts +29 -0
- package/dist/components/st-dialog.cjs +1 -0
- package/dist/components/st-dialog.js +6 -0
- package/dist/components/st-input/index.d.ts +315 -0
- package/dist/components/st-input/st-input.vue.cjs +1 -0
- package/dist/components/st-input/st-input.vue.d.ts +48 -0
- package/dist/components/st-input/st-input.vue.js +7 -0
- package/dist/components/st-input/st-input.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-input/st-input.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/st-input/types.d.ts +68 -0
- package/dist/components/st-input.cjs +1 -0
- package/dist/components/st-input.js +6 -0
- package/dist/components/st-menu/index.d.ts +217 -0
- package/dist/components/st-menu/st-menu-node.vue.cjs +1 -0
- package/dist/components/st-menu/st-menu-node.vue.d.ts +14 -0
- package/dist/components/st-menu/st-menu-node.vue.js +5 -0
- package/dist/components/st-menu/st-menu-node.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-menu/st-menu-node.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/components/st-menu/st-menu.vue.cjs +1 -0
- package/dist/components/st-menu/st-menu.vue.d.ts +26 -0
- package/dist/components/st-menu/st-menu.vue.js +5 -0
- package/dist/components/st-menu/st-menu.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-menu/st-menu.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/st-menu/types.d.ts +82 -0
- package/dist/components/st-menu.cjs +1 -0
- package/dist/components/st-menu.js +7 -0
- package/dist/components/st-popover/index.d.ts +243 -0
- package/dist/components/st-popover/st-popover.vue.cjs +1 -0
- package/dist/components/st-popover/st-popover.vue.d.ts +37 -0
- package/dist/components/st-popover/st-popover.vue.js +5 -0
- package/dist/components/st-popover/st-popover.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-popover/st-popover.vue_vue_type_script_setup_true_lang.js +355 -0
- package/dist/components/st-popover/types.d.ts +103 -0
- package/dist/components/st-popover.cjs +1 -0
- package/dist/components/st-popover.js +6 -0
- package/dist/components/st-radio/index.d.ts +135 -0
- package/dist/components/st-radio/st-radio.vue.cjs +1 -0
- package/dist/components/st-radio/st-radio.vue.d.ts +28 -0
- package/dist/components/st-radio/st-radio.vue.js +5 -0
- package/dist/components/st-radio/st-radio.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-radio/st-radio.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/components/st-radio/types.d.ts +15 -0
- package/dist/components/st-radio-group/index.d.ts +180 -0
- package/dist/components/st-radio-group/st-radio-group.vue.cjs +1 -0
- package/dist/components/st-radio-group/st-radio-group.vue.d.ts +35 -0
- package/dist/components/st-radio-group/st-radio-group.vue.js +5 -0
- package/dist/components/st-radio-group/st-radio-group.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-radio-group/st-radio-group.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/components/st-radio-group/types.d.ts +43 -0
- package/dist/components/st-radio-group.cjs +1 -0
- package/dist/components/st-radio-group.js +6 -0
- package/dist/components/st-radio.cjs +1 -0
- package/dist/components/st-radio.js +6 -0
- package/dist/components/st-select/index.d.ts +306 -0
- package/dist/components/st-select/st-select.vue.cjs +1 -0
- package/dist/components/st-select/st-select.vue.d.ts +47 -0
- package/dist/components/st-select/st-select.vue.js +5 -0
- package/dist/components/st-select/st-select.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-select/st-select.vue_vue_type_script_setup_true_lang.js +200 -0
- package/dist/components/st-select/types.d.ts +85 -0
- package/dist/components/st-select.cjs +1 -0
- package/dist/components/st-select.js +6 -0
- package/dist/components/st-sidebar/index.d.ts +63 -0
- package/dist/components/st-sidebar/st-sidebar.vue.cjs +1 -0
- package/dist/components/st-sidebar/st-sidebar.vue.d.ts +11 -0
- package/dist/components/st-sidebar/st-sidebar.vue.js +5 -0
- package/dist/components/st-sidebar/st-sidebar.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-sidebar/st-sidebar.vue_vue_type_script_setup_true_lang.js +108 -0
- package/dist/components/st-sidebar/types.d.ts +56 -0
- package/dist/components/st-sidebar-item/index.d.ts +63 -0
- package/dist/components/st-sidebar-item/st-sidebar-item.vue.cjs +1 -0
- package/dist/components/st-sidebar-item/st-sidebar-item.vue.d.ts +11 -0
- package/dist/components/st-sidebar-item/st-sidebar-item.vue.js +5 -0
- package/dist/components/st-sidebar-item/st-sidebar-item.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-sidebar-item/st-sidebar-item.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/st-sidebar-item/types.d.ts +19 -0
- package/dist/components/st-sidebar-item.cjs +1 -0
- package/dist/components/st-sidebar-item.js +6 -0
- package/dist/components/st-sidebar.cjs +1 -0
- package/dist/components/st-sidebar.js +6 -0
- package/dist/components/st-splitter/index.d.ts +88 -0
- package/dist/components/st-splitter/st-splitter.vue.cjs +1 -0
- package/dist/components/st-splitter/st-splitter.vue.d.ts +16 -0
- package/dist/components/st-splitter/st-splitter.vue.js +5 -0
- package/dist/components/st-splitter/st-splitter.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-splitter/st-splitter.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/st-splitter/types.d.ts +192 -0
- package/dist/components/st-splitter/useSplitter.cjs +1 -0
- package/dist/components/st-splitter/useSplitter.d.ts +24 -0
- package/dist/components/st-splitter/useSplitter.js +129 -0
- package/dist/components/st-splitter-panel/index.d.ts +180 -0
- package/dist/components/st-splitter-panel/st-splitter-panel.vue.cjs +1 -0
- package/dist/components/st-splitter-panel/st-splitter-panel.vue.d.ts +33 -0
- package/dist/components/st-splitter-panel/st-splitter-panel.vue.js +5 -0
- package/dist/components/st-splitter-panel/st-splitter-panel.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-splitter-panel/st-splitter-panel.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/components/st-splitter-panel/types.d.ts +27 -0
- package/dist/components/st-splitter-panel.cjs +1 -0
- package/dist/components/st-splitter-panel.js +6 -0
- package/dist/components/st-splitter.cjs +1 -0
- package/dist/components/st-splitter.js +7 -0
- package/dist/components/st-toggle/index.d.ts +159 -0
- package/dist/components/st-toggle/st-toggle.vue.cjs +1 -0
- package/dist/components/st-toggle/st-toggle.vue.d.ts +25 -0
- package/dist/components/st-toggle/st-toggle.vue.js +5 -0
- package/dist/components/st-toggle/st-toggle.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-toggle/st-toggle.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/components/st-toggle/types.d.ts +38 -0
- package/dist/components/st-toggle.cjs +1 -0
- package/dist/components/st-toggle.js +6 -0
- package/dist/components/st-tooltip/index.d.ts +183 -0
- package/dist/components/st-tooltip/st-tooltip.vue.cjs +1 -0
- package/dist/components/st-tooltip/st-tooltip.vue.d.ts +29 -0
- package/dist/components/st-tooltip/st-tooltip.vue.js +5 -0
- package/dist/components/st-tooltip/st-tooltip.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-tooltip/st-tooltip.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/components/st-tooltip/types.d.ts +79 -0
- package/dist/components/st-tooltip.cjs +1 -0
- package/dist/components/st-tooltip.js +6 -0
- package/dist/components/st-tree/index.d.ts +114 -0
- package/dist/components/st-tree/st-tree-node.vue.cjs +1 -0
- package/dist/components/st-tree/st-tree-node.vue.d.ts +4 -0
- package/dist/components/st-tree/st-tree-node.vue.js +5 -0
- package/dist/components/st-tree/st-tree-node.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-tree/st-tree-node.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/components/st-tree/st-tree.vue.cjs +1 -0
- package/dist/components/st-tree/st-tree.vue.d.ts +50 -0
- package/dist/components/st-tree/st-tree.vue.js +5 -0
- package/dist/components/st-tree/st-tree.vue_vue_type_script_setup_true_lang.cjs +1 -0
- package/dist/components/st-tree/st-tree.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/st-tree/types.d.ts +87 -0
- package/dist/components/st-tree.cjs +1 -0
- package/dist/components/st-tree.js +6 -0
- package/dist/components/types.d.ts +41 -0
- package/dist/index.cjs +1 -0
- package/dist/index.css +2 -0
- package/dist/index.d.ts +3005 -0
- package/dist/index.js +47 -0
- package/dist/utils/cn.cjs +1 -0
- package/dist/utils/cn.d.ts +11 -0
- package/dist/utils/cn.js +8 -0
- package/dist/utils/cva/index.cjs +1 -0
- package/dist/utils/cva/index.d.ts +9 -0
- package/dist/utils/cva/index.js +25 -0
- package/dist/utils/cva/types.d.ts +45 -0
- package/dist/utils/directive/index.cjs +1 -0
- package/dist/utils/directive/index.d.ts +4 -0
- package/dist/utils/directive/index.js +10 -0
- package/dist/utils/directive/intersection.cjs +1 -0
- package/dist/utils/directive/intersection.d.ts +6 -0
- package/dist/utils/directive/intersection.js +20 -0
- package/dist/utils/directive/interval.cjs +1 -0
- package/dist/utils/directive/interval.d.ts +6 -0
- package/dist/utils/directive/interval.js +14 -0
- package/dist/utils/directive/move.cjs +1 -0
- package/dist/utils/directive/move.d.ts +6 -0
- package/dist/utils/directive/move.js +42 -0
- package/dist/utils/directive/resize.cjs +1 -0
- package/dist/utils/directive/resize.d.ts +6 -0
- package/dist/utils/directive/resize.js +17 -0
- package/dist/utils/with-install.cjs +1 -0
- package/dist/utils/with-install.d.ts +4 -0
- package/dist/utils/with-install.js +10 -0
- package/package.json +87 -0
package/dist/components/st-sidebar-item/st-sidebar-item.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { createElementBlock as t, createElementVNode as n, defineComponent as r, inject as i, nextTick as a, normalizeClass as o, normalizeStyle as s, onMounted as c, onUnmounted as l, openBlock as u, renderSlot as d, unref as f, useAttrs as p, useTemplateRef as m } from "vue";
|
|
3
|
+
//#region src/components/st-sidebar-item/st-sidebar-item.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var h = /*@__PURE__*/ r({
|
|
5
|
+
inheritAttrs: !1,
|
|
6
|
+
__name: "st-sidebar-item",
|
|
7
|
+
props: { label: {} },
|
|
8
|
+
setup(r) {
|
|
9
|
+
let h = r, g = p(), _ = `sidebar-item-${Math.random().toString(36).slice(2, 9)}`, v = m("labelExtractRef"), y = m("contentRef"), b = i("sidebarContext", null), x = e("st-sidebar-item", "scroll-mt-0"), S = e("st-sidebar-item__content");
|
|
10
|
+
return c(async () => {
|
|
11
|
+
if (await a(), !b || !y.value) return;
|
|
12
|
+
let e = h.label ?? "", t = v.value?.innerHTML ?? "";
|
|
13
|
+
b.registerItem({
|
|
14
|
+
id: _,
|
|
15
|
+
label: e,
|
|
16
|
+
labelHtml: t,
|
|
17
|
+
el: y.value
|
|
18
|
+
});
|
|
19
|
+
}), l(() => {
|
|
20
|
+
b?.unregisterItem(_);
|
|
21
|
+
}), (r, i) => (u(), t("div", {
|
|
22
|
+
id: _,
|
|
23
|
+
class: o(f(e)(f(x), f(g).class)),
|
|
24
|
+
style: s(f(g).style)
|
|
25
|
+
}, [n("div", {
|
|
26
|
+
ref_key: "labelExtractRef",
|
|
27
|
+
ref: v,
|
|
28
|
+
"aria-hidden": "true",
|
|
29
|
+
class: "hidden"
|
|
30
|
+
}, [d(r.$slots, "label")], 512), n("div", {
|
|
31
|
+
ref_key: "contentRef",
|
|
32
|
+
ref: y,
|
|
33
|
+
class: o(f(S))
|
|
34
|
+
}, [d(r.$slots, "default")], 2)], 6));
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { h as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 侧边栏项组件属性
|
|
3
|
+
*/
|
|
4
|
+
export interface StSidebarItemProps {
|
|
5
|
+
/** 项标签文本 */
|
|
6
|
+
label?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 侧边栏项组件插槽类型
|
|
11
|
+
*/
|
|
12
|
+
export interface StSidebarItemSlots {
|
|
13
|
+
/** 标签插槽 */
|
|
14
|
+
label?: () => unknown;
|
|
15
|
+
/** 默认插槽 */
|
|
16
|
+
default?: () => unknown;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../utils/with-install.cjs"),t=require("./st-sidebar-item/st-sidebar-item.vue.cjs");var n=e.withInstall(t.default);exports.StSidebarItem=n,exports.default=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../utils/with-install.cjs"),t=require("./st-sidebar/st-sidebar.vue.cjs");var n=e.withInstall(t.default);exports.StSidebar=n,exports.default=n;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export declare const StSplitter: {
|
|
2
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
|
|
3
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
|
|
4
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
5
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
6
|
+
P: {};
|
|
7
|
+
B: {};
|
|
8
|
+
D: {};
|
|
9
|
+
C: {};
|
|
10
|
+
M: {};
|
|
11
|
+
Defaults: {};
|
|
12
|
+
}, Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, {
|
|
13
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
14
|
+
}>;
|
|
15
|
+
__isFragment?: never;
|
|
16
|
+
__isTeleport?: never;
|
|
17
|
+
__isSuspense?: never;
|
|
18
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
19
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
20
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
21
|
+
$slots: {
|
|
22
|
+
default?: (props: {}) => any;
|
|
23
|
+
};
|
|
24
|
+
})>>, {}, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
|
|
25
|
+
[x: string]: any;
|
|
26
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
27
|
+
P: {};
|
|
28
|
+
B: {};
|
|
29
|
+
D: {};
|
|
30
|
+
C: {};
|
|
31
|
+
M: {};
|
|
32
|
+
Defaults: {};
|
|
33
|
+
}, Readonly<import("vue").ExtractPropTypes<{
|
|
34
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
|
|
35
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
36
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
37
|
+
P: {};
|
|
38
|
+
B: {};
|
|
39
|
+
D: {};
|
|
40
|
+
C: {};
|
|
41
|
+
M: {};
|
|
42
|
+
Defaults: {};
|
|
43
|
+
}, Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, {
|
|
44
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
45
|
+
}>;
|
|
46
|
+
__isFragment?: never;
|
|
47
|
+
__isTeleport?: never;
|
|
48
|
+
__isSuspense?: never;
|
|
49
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
50
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
51
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
52
|
+
$slots: {
|
|
53
|
+
default?: (props: {}) => any;
|
|
54
|
+
};
|
|
55
|
+
})>>, {}, {}, import("vue").ComputedOptions, import("vue").MethodOptions, {
|
|
56
|
+
[x: string]: any;
|
|
57
|
+
}>;
|
|
58
|
+
__isFragment?: never;
|
|
59
|
+
__isTeleport?: never;
|
|
60
|
+
__isSuspense?: never;
|
|
61
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
62
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
|
|
63
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
64
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
65
|
+
P: {};
|
|
66
|
+
B: {};
|
|
67
|
+
D: {};
|
|
68
|
+
C: {};
|
|
69
|
+
M: {};
|
|
70
|
+
Defaults: {};
|
|
71
|
+
}, Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, {
|
|
72
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
73
|
+
}>;
|
|
74
|
+
__isFragment?: never;
|
|
75
|
+
__isTeleport?: never;
|
|
76
|
+
__isSuspense?: never;
|
|
77
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("./types.d.ts").SplitterProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
78
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
79
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
80
|
+
$slots: {
|
|
81
|
+
default?: (props: {}) => any;
|
|
82
|
+
};
|
|
83
|
+
})>>, {}, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
84
|
+
[x: string]: any;
|
|
85
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & (import("vue").VNodeProps & (import("vue").AllowedComponentProps & (import("vue").ComponentCustomProps & import("vue").Plugin)));
|
|
86
|
+
export default StSplitter;
|
|
87
|
+
export type * from './types.d.ts';
|
|
88
|
+
export { useSplitter } from './useSplitter.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=require("./st-splitter.vue_vue_type_script_setup_true_lang.cjs").default;exports.default=e;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SplitterProps } from './types.d.ts';
|
|
2
|
+
declare var __VLS_1: {};
|
|
3
|
+
type __VLS_Slots = {} & {
|
|
4
|
+
default?: (props: typeof __VLS_1) => any;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_base: import("vue").DefineComponent<SplitterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SplitterProps> & Readonly<{}>, {
|
|
7
|
+
direction: import("./types.d.ts").SplitterDirection;
|
|
8
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
9
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
10
|
+
declare const _default: typeof __VLS_export;
|
|
11
|
+
export default _default;
|
|
12
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
13
|
+
new (): {
|
|
14
|
+
$slots: S;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("../../utils/cn.cjs"),t=require("./useSplitter.cjs");let n=require("vue");var r=(0,n.defineComponent)({name:`StSplitter`,inheritAttrs:!1,__name:`st-splitter`,props:{direction:{default:`horizontal`}},setup(r){let i=r,a=(0,n.useAttrs)(),o=(0,n.useTemplateRef)(`containerRef`),s=t.useSplitter((0,n.toRef)(i,`direction`));return(0,n.provide)(`splitterContext`,s),(0,n.onMounted)(()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{s.initializePanelSizes(o.value)})}),window.addEventListener(`resize`,s.updateFlexPanelSize)}),(0,n.onUnmounted)(()=>{window.removeEventListener(`resize`,s.updateFlexPanelSize)}),(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{ref_key:`containerRef`,ref:o,class:(0,n.normalizeClass)((0,n.unref)(e.cn)(`flex w-full h-full overflow-hidden box-border gap-0`,(0,n.unref)(s).direction.value===`horizontal`?`flex-row`:`flex-col`,(0,n.unref)(a).class)),style:(0,n.normalizeStyle)((0,n.unref)(a).style)},[(0,n.renderSlot)(t.$slots,`default`)],6))}});exports.default=r;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { useSplitter as t } from "./useSplitter.js";
|
|
3
|
+
import { createElementBlock as n, defineComponent as r, normalizeClass as i, normalizeStyle as a, onMounted as o, onUnmounted as s, openBlock as c, provide as l, renderSlot as u, toRef as d, unref as f, useAttrs as p, useTemplateRef as m } from "vue";
|
|
4
|
+
//#region src/components/st-splitter/st-splitter.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var h = /*@__PURE__*/ r({
|
|
6
|
+
name: "StSplitter",
|
|
7
|
+
inheritAttrs: !1,
|
|
8
|
+
__name: "st-splitter",
|
|
9
|
+
props: { direction: { default: "horizontal" } },
|
|
10
|
+
setup(r) {
|
|
11
|
+
let h = r, g = p(), _ = m("containerRef"), v = t(d(h, "direction"));
|
|
12
|
+
return l("splitterContext", v), o(() => {
|
|
13
|
+
requestAnimationFrame(() => {
|
|
14
|
+
requestAnimationFrame(() => {
|
|
15
|
+
v.initializePanelSizes(_.value);
|
|
16
|
+
});
|
|
17
|
+
}), window.addEventListener("resize", v.updateFlexPanelSize);
|
|
18
|
+
}), s(() => {
|
|
19
|
+
window.removeEventListener("resize", v.updateFlexPanelSize);
|
|
20
|
+
}), (t, r) => (c(), n("div", {
|
|
21
|
+
ref_key: "containerRef",
|
|
22
|
+
ref: _,
|
|
23
|
+
class: i(f(e)("flex w-full h-full overflow-hidden box-border gap-0", f(v).direction.value === "horizontal" ? "flex-row" : "flex-col", f(g).class)),
|
|
24
|
+
style: a(f(g).style)
|
|
25
|
+
}, [u(t.$slots, "default")], 6));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { h as default };
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 分屏方向类型
|
|
5
|
+
* */
|
|
6
|
+
export type SplitterDirection = 'horizontal' | 'vertical';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 面板配置接口
|
|
10
|
+
* */
|
|
11
|
+
export interface SplitterPanelConfig {
|
|
12
|
+
/**
|
|
13
|
+
* 面板唯一标识
|
|
14
|
+
* */
|
|
15
|
+
id: string;
|
|
16
|
+
/**
|
|
17
|
+
* 当前尺寸
|
|
18
|
+
* */
|
|
19
|
+
size: number;
|
|
20
|
+
/**
|
|
21
|
+
* 最小尺寸
|
|
22
|
+
* */
|
|
23
|
+
minSize?: number;
|
|
24
|
+
/**
|
|
25
|
+
* 最大尺寸
|
|
26
|
+
* */
|
|
27
|
+
maxSize?: number;
|
|
28
|
+
/**
|
|
29
|
+
* 期望尺寸,用于恢复时使用
|
|
30
|
+
* */
|
|
31
|
+
desiredSize?: number;
|
|
32
|
+
/**
|
|
33
|
+
* 是否为弹性面板
|
|
34
|
+
* */
|
|
35
|
+
flex?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 是否可见
|
|
38
|
+
* */
|
|
39
|
+
visible: boolean;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 分屏组件属性接口
|
|
44
|
+
* */
|
|
45
|
+
export interface SplitterProps {
|
|
46
|
+
/**
|
|
47
|
+
* 分屏方向
|
|
48
|
+
* */
|
|
49
|
+
direction?: SplitterDirection;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 分屏内部上下文接口 - 包含响应式状态
|
|
54
|
+
* */
|
|
55
|
+
export interface SplitterInternalContext {
|
|
56
|
+
/**
|
|
57
|
+
* 分屏方向
|
|
58
|
+
* */
|
|
59
|
+
direction: Ref<SplitterDirection>;
|
|
60
|
+
/**
|
|
61
|
+
* 面板列表
|
|
62
|
+
* */
|
|
63
|
+
panels: Ref<SplitterPanelConfig[]>;
|
|
64
|
+
/**
|
|
65
|
+
* 当前激活的分隔条索引
|
|
66
|
+
* */
|
|
67
|
+
activeGutter: Ref<number | null>;
|
|
68
|
+
/**
|
|
69
|
+
* 分隔条尺寸
|
|
70
|
+
* */
|
|
71
|
+
gutterSize: number;
|
|
72
|
+
/**
|
|
73
|
+
* 鼠标位置响应式引用
|
|
74
|
+
* */
|
|
75
|
+
mousePosition: Ref<{ x: number; y: number } | null>;
|
|
76
|
+
/**
|
|
77
|
+
* 当前悬浮的gutter索引
|
|
78
|
+
* */
|
|
79
|
+
isHoveringGutter: Ref<number | null>;
|
|
80
|
+
/**
|
|
81
|
+
* 注册面板
|
|
82
|
+
* */
|
|
83
|
+
registerPanel: (panel: SplitterPanelConfig) => void;
|
|
84
|
+
/**
|
|
85
|
+
* 注销面板
|
|
86
|
+
* */
|
|
87
|
+
unregisterPanel: (id: string) => void;
|
|
88
|
+
/**
|
|
89
|
+
* 更新面板可见性
|
|
90
|
+
* */
|
|
91
|
+
updatePanelVisible: (id: string, visible: boolean) => void;
|
|
92
|
+
/**
|
|
93
|
+
* 开始拖拽调整尺寸
|
|
94
|
+
* */
|
|
95
|
+
startResize: (gutterIndex: number, event: MouseEvent) => void;
|
|
96
|
+
/**
|
|
97
|
+
* 更新弹性面板尺寸
|
|
98
|
+
* */
|
|
99
|
+
updateFlexPanelSize: () => void;
|
|
100
|
+
/**
|
|
101
|
+
* 初始化面板尺寸
|
|
102
|
+
* */
|
|
103
|
+
initializePanelSizes: (containerEl: HTMLElement | null) => void;
|
|
104
|
+
/**
|
|
105
|
+
* 获取容器尺寸
|
|
106
|
+
* */
|
|
107
|
+
getContainerSize: (containerEl?: HTMLElement | null) => number;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* 拖拽状态接口
|
|
112
|
+
* */
|
|
113
|
+
export interface DragState {
|
|
114
|
+
/**
|
|
115
|
+
* 是否正在拖拽
|
|
116
|
+
* */
|
|
117
|
+
isDragging: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* 拖拽的分隔条索引
|
|
120
|
+
* */
|
|
121
|
+
gutterIndex: number;
|
|
122
|
+
/**
|
|
123
|
+
* 起始X坐标
|
|
124
|
+
* */
|
|
125
|
+
startX: number;
|
|
126
|
+
/**
|
|
127
|
+
* 起始Y坐标
|
|
128
|
+
* */
|
|
129
|
+
startY: number;
|
|
130
|
+
/**
|
|
131
|
+
* 起始时各面板尺寸
|
|
132
|
+
* */
|
|
133
|
+
startSizes: number[];
|
|
134
|
+
/**
|
|
135
|
+
* 当前鼠标X坐标
|
|
136
|
+
* */
|
|
137
|
+
currentX?: number;
|
|
138
|
+
/**
|
|
139
|
+
* 当前鼠标Y坐标
|
|
140
|
+
* */
|
|
141
|
+
currentY?: number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 尺寸约束计算参数接口
|
|
146
|
+
* */
|
|
147
|
+
export interface ConstrainedSizesOptions {
|
|
148
|
+
/**
|
|
149
|
+
* 左面板期望尺寸
|
|
150
|
+
* */
|
|
151
|
+
leftSize: number;
|
|
152
|
+
/**
|
|
153
|
+
* 右面板期望尺寸
|
|
154
|
+
* */
|
|
155
|
+
rightSize: number;
|
|
156
|
+
/**
|
|
157
|
+
* 左面板最小尺寸
|
|
158
|
+
* */
|
|
159
|
+
leftMin: number;
|
|
160
|
+
/**
|
|
161
|
+
* 左面板最大尺寸
|
|
162
|
+
* */
|
|
163
|
+
leftMax: number;
|
|
164
|
+
/**
|
|
165
|
+
* 右面板最小尺寸
|
|
166
|
+
* */
|
|
167
|
+
rightMin: number;
|
|
168
|
+
/**
|
|
169
|
+
* 右面板最大尺寸
|
|
170
|
+
* */
|
|
171
|
+
rightMax: number;
|
|
172
|
+
/**
|
|
173
|
+
* 两面板总尺寸
|
|
174
|
+
* */
|
|
175
|
+
totalSize: number;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* 尺寸约束计算结果接口
|
|
180
|
+
* */
|
|
181
|
+
export interface ConstrainedSizesResult {
|
|
182
|
+
/**
|
|
183
|
+
* 约束后的左面板尺寸
|
|
184
|
+
* */
|
|
185
|
+
leftSize: number;
|
|
186
|
+
/**
|
|
187
|
+
* 约束后的右面板尺寸
|
|
188
|
+
* */
|
|
189
|
+
rightSize: number;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("vue");function t(e){let{leftSize:t,rightSize:n,leftMin:r,leftMax:i,rightMin:a,rightMax:o,totalSize:s}=e;return t<r&&(t=r,n=s-r),t>i&&(t=i,n=s-i),n<a&&(n=a,t=s-a),n>o&&(n=o,t=s-o),{leftSize:t,rightSize:n}}function n(n){let r=(0,e.ref)([]),i=(0,e.ref)(null),a=(0,e.ref)(null),o=(0,e.ref)(null),s=(0,e.ref)(null),c=(0,e.ref)({isDragging:!1,gutterIndex:-1,startX:0,startY:0,startSizes:[]}),l=(0,e.computed)(()=>r.value.filter(e=>e.visible)),u=(0,e.computed)(()=>{let e=l.value,t=e.findIndex(e=>e.flex);return t>=0?t:e.length-1}),d=e=>{let t=e??s.value;if(!t)return 0;let r=getComputedStyle(t);if(n.value===`horizontal`){let e=parseFloat(r.paddingLeft)||0,n=parseFloat(r.paddingRight)||0;return t.clientWidth-e-n}else{let e=parseFloat(r.paddingTop)||0,n=parseFloat(r.paddingBottom)||0;return t.clientHeight-e-n}},f=()=>{let e=l.value.length;return e<=1?0:(e-1)*8},p=e=>{e&&(s.value=e);let t=l.value;if(t.length===0)return;let n=d();if(n<=0)return;let r=n-f();if(r<=0)return;let i=u.value,a=0;if(t.forEach((e,t)=>{t!==i&&(a+=e.desiredSize??200)}),a<=r){t.forEach((e,t)=>{t!==i&&(e.size=e.desiredSize??200)});let e=t.reduce((e,t,n)=>n===i?e:e+t.size,0),n=t[i];n&&(n.size=Math.max(n.minSize??0,r-e))}else{let e=r/(a+(t[i]?.desiredSize??200));t.forEach(t=>{t.size=(t.desiredSize??200)*e})}},m=()=>{let e=l.value;if(e.length===0)return;let t=d();if(t<=0)return;let n=f(),r=u.value,i=0;for(let t=0;t<e.length;t++)t!==r&&(i+=e[t].size);let a=e[r];if(a){let e=t-n-i,r=a.minSize??0;a.size=Math.max(r,e)}},h=e=>{r.value.push({...e,size:e.visible?e.size:0,desiredSize:e.size})},g=e=>{let t=r.value.findIndex(t=>t.id===e);t>-1&&r.value.splice(t,1)},_=(e,t)=>{let n=r.value.find(t=>t.id===e);n&&(n.visible=t,m())},v=(e,t)=>{t.preventDefault();let r=l.value;c.value={isDragging:!0,gutterIndex:e,startX:t.clientX,startY:t.clientY,startSizes:r.map(e=>e.size)},i.value=e,document.body.style.cursor=n.value===`horizontal`?`ew-resize`:`ns-resize`,document.addEventListener(`mousemove`,y),document.addEventListener(`mouseup`,b)},y=e=>{if(!c.value.isDragging)return;a.value={x:e.clientX,y:e.clientY};let r=n.value===`horizontal`?e.clientX-c.value.startX:e.clientY-c.value.startY,i=c.value.gutterIndex,o=l.value,s=o[i],u=o[i+1];if(!s||!u)return;let d=c.value.startSizes[i]+c.value.startSizes[i+1],{leftSize:f,rightSize:p}=t({leftSize:c.value.startSizes[i]+r,rightSize:c.value.startSizes[i+1]-r,leftMin:s.minSize??0,leftMax:s.maxSize??1/0,rightMin:u.minSize??0,rightMax:u.maxSize??1/0,totalSize:d});s.size=f,u.size=p},b=()=>{c.value.isDragging=!1,i.value=null,document.body.style.cursor=``,document.removeEventListener(`mousemove`,y),document.removeEventListener(`mouseup`,b)};return{direction:n,panels:r,activeGutter:i,gutterSize:8,mousePosition:a,isHoveringGutter:o,registerPanel:h,unregisterPanel:g,updatePanelVisible:_,startResize:v,updateFlexPanelSize:m,initializePanelSizes:p,getContainerSize:d}}exports.useSplitter=n;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import type { ConstrainedSizesOptions, ConstrainedSizesResult, SplitterDirection, SplitterInternalContext } from './types.d.ts';
|
|
3
|
+
/**
|
|
4
|
+
* 限制数值在指定范围内
|
|
5
|
+
* @param value - 待限制的值
|
|
6
|
+
* @param min - 最小值
|
|
7
|
+
* @param max - 最大值
|
|
8
|
+
* @returns 限制后的值
|
|
9
|
+
* */
|
|
10
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
11
|
+
/**
|
|
12
|
+
* 计算调整后的尺寸,考虑边界约束
|
|
13
|
+
* 确保左右面板尺寸都在各自的 min/max 范围内
|
|
14
|
+
* @param options - 尺寸约束计算参数
|
|
15
|
+
* @returns 约束后的左右面板尺寸
|
|
16
|
+
* */
|
|
17
|
+
export declare function calculateConstrainedSizes(options: ConstrainedSizesOptions): ConstrainedSizesResult;
|
|
18
|
+
/**
|
|
19
|
+
* 分屏组件 composable
|
|
20
|
+
* 每次调用都会创建独立的状态实例,支持多个分屏组件并存
|
|
21
|
+
* @param direction - 分屏方向的响应式引用
|
|
22
|
+
* @returns 分屏上下文对象
|
|
23
|
+
* */
|
|
24
|
+
export declare function useSplitter(direction: Ref<SplitterDirection>): SplitterInternalContext;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { computed as e, ref as t } from "vue";
|
|
2
|
+
//#region src/components/st-splitter/useSplitter.ts
|
|
3
|
+
function n(e) {
|
|
4
|
+
let { leftSize: t, rightSize: n, leftMin: r, leftMax: i, rightMin: a, rightMax: o, totalSize: s } = e;
|
|
5
|
+
return t < r && (t = r, n = s - r), t > i && (t = i, n = s - i), n < a && (n = a, t = s - a), n > o && (n = o, t = s - o), {
|
|
6
|
+
leftSize: t,
|
|
7
|
+
rightSize: n
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function r(r) {
|
|
11
|
+
let i = t([]), a = t(null), o = t(null), s = t(null), c = t(null), l = t({
|
|
12
|
+
isDragging: !1,
|
|
13
|
+
gutterIndex: -1,
|
|
14
|
+
startX: 0,
|
|
15
|
+
startY: 0,
|
|
16
|
+
startSizes: []
|
|
17
|
+
}), u = e(() => i.value.filter((e) => e.visible)), d = e(() => {
|
|
18
|
+
let e = u.value, t = e.findIndex((e) => e.flex);
|
|
19
|
+
return t >= 0 ? t : e.length - 1;
|
|
20
|
+
}), f = (e) => {
|
|
21
|
+
let t = e ?? c.value;
|
|
22
|
+
if (!t) return 0;
|
|
23
|
+
let n = getComputedStyle(t);
|
|
24
|
+
if (r.value === "horizontal") {
|
|
25
|
+
let e = parseFloat(n.paddingLeft) || 0, r = parseFloat(n.paddingRight) || 0;
|
|
26
|
+
return t.clientWidth - e - r;
|
|
27
|
+
} else {
|
|
28
|
+
let e = parseFloat(n.paddingTop) || 0, r = parseFloat(n.paddingBottom) || 0;
|
|
29
|
+
return t.clientHeight - e - r;
|
|
30
|
+
}
|
|
31
|
+
}, p = () => {
|
|
32
|
+
let e = u.value.length;
|
|
33
|
+
return e <= 1 ? 0 : (e - 1) * 8;
|
|
34
|
+
}, m = (e) => {
|
|
35
|
+
e && (c.value = e);
|
|
36
|
+
let t = u.value;
|
|
37
|
+
if (t.length === 0) return;
|
|
38
|
+
let n = f();
|
|
39
|
+
if (n <= 0) return;
|
|
40
|
+
let r = n - p();
|
|
41
|
+
if (r <= 0) return;
|
|
42
|
+
let i = d.value, a = 0;
|
|
43
|
+
if (t.forEach((e, t) => {
|
|
44
|
+
t !== i && (a += e.desiredSize ?? 200);
|
|
45
|
+
}), a <= r) {
|
|
46
|
+
t.forEach((e, t) => {
|
|
47
|
+
t !== i && (e.size = e.desiredSize ?? 200);
|
|
48
|
+
});
|
|
49
|
+
let e = t.reduce((e, t, n) => n === i ? e : e + t.size, 0), n = t[i];
|
|
50
|
+
n && (n.size = Math.max(n.minSize ?? 0, r - e));
|
|
51
|
+
} else {
|
|
52
|
+
let e = r / (a + (t[i]?.desiredSize ?? 200));
|
|
53
|
+
t.forEach((t) => {
|
|
54
|
+
t.size = (t.desiredSize ?? 200) * e;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}, h = () => {
|
|
58
|
+
let e = u.value;
|
|
59
|
+
if (e.length === 0) return;
|
|
60
|
+
let t = f();
|
|
61
|
+
if (t <= 0) return;
|
|
62
|
+
let n = p(), r = d.value, i = 0;
|
|
63
|
+
for (let t = 0; t < e.length; t++) t !== r && (i += e[t].size);
|
|
64
|
+
let a = e[r];
|
|
65
|
+
if (a) {
|
|
66
|
+
let e = t - n - i, r = a.minSize ?? 0;
|
|
67
|
+
a.size = Math.max(r, e);
|
|
68
|
+
}
|
|
69
|
+
}, g = (e) => {
|
|
70
|
+
i.value.push({
|
|
71
|
+
...e,
|
|
72
|
+
size: e.visible ? e.size : 0,
|
|
73
|
+
desiredSize: e.size
|
|
74
|
+
});
|
|
75
|
+
}, _ = (e) => {
|
|
76
|
+
let t = i.value.findIndex((t) => t.id === e);
|
|
77
|
+
t > -1 && i.value.splice(t, 1);
|
|
78
|
+
}, v = (e, t) => {
|
|
79
|
+
let n = i.value.find((t) => t.id === e);
|
|
80
|
+
n && (n.visible = t, h());
|
|
81
|
+
}, y = (e, t) => {
|
|
82
|
+
t.preventDefault();
|
|
83
|
+
let n = u.value;
|
|
84
|
+
l.value = {
|
|
85
|
+
isDragging: !0,
|
|
86
|
+
gutterIndex: e,
|
|
87
|
+
startX: t.clientX,
|
|
88
|
+
startY: t.clientY,
|
|
89
|
+
startSizes: n.map((e) => e.size)
|
|
90
|
+
}, a.value = e, document.body.style.cursor = r.value === "horizontal" ? "ew-resize" : "ns-resize", document.addEventListener("mousemove", b), document.addEventListener("mouseup", x);
|
|
91
|
+
}, b = (e) => {
|
|
92
|
+
if (!l.value.isDragging) return;
|
|
93
|
+
o.value = {
|
|
94
|
+
x: e.clientX,
|
|
95
|
+
y: e.clientY
|
|
96
|
+
};
|
|
97
|
+
let t = r.value === "horizontal" ? e.clientX - l.value.startX : e.clientY - l.value.startY, i = l.value.gutterIndex, a = u.value, s = a[i], c = a[i + 1];
|
|
98
|
+
if (!s || !c) return;
|
|
99
|
+
let d = l.value.startSizes[i] + l.value.startSizes[i + 1], { leftSize: f, rightSize: p } = n({
|
|
100
|
+
leftSize: l.value.startSizes[i] + t,
|
|
101
|
+
rightSize: l.value.startSizes[i + 1] - t,
|
|
102
|
+
leftMin: s.minSize ?? 0,
|
|
103
|
+
leftMax: s.maxSize ?? Infinity,
|
|
104
|
+
rightMin: c.minSize ?? 0,
|
|
105
|
+
rightMax: c.maxSize ?? Infinity,
|
|
106
|
+
totalSize: d
|
|
107
|
+
});
|
|
108
|
+
s.size = f, c.size = p;
|
|
109
|
+
}, x = () => {
|
|
110
|
+
l.value.isDragging = !1, a.value = null, document.body.style.cursor = "", document.removeEventListener("mousemove", b), document.removeEventListener("mouseup", x);
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
direction: r,
|
|
114
|
+
panels: i,
|
|
115
|
+
activeGutter: a,
|
|
116
|
+
gutterSize: 8,
|
|
117
|
+
mousePosition: o,
|
|
118
|
+
isHoveringGutter: s,
|
|
119
|
+
registerPanel: g,
|
|
120
|
+
unregisterPanel: _,
|
|
121
|
+
updatePanelVisible: v,
|
|
122
|
+
startResize: y,
|
|
123
|
+
updateFlexPanelSize: h,
|
|
124
|
+
initializePanelSizes: m,
|
|
125
|
+
getContainerSize: f
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { r as useSplitter };
|