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.
Files changed (200) hide show
  1. package/README.md +42 -0
  2. package/dist/_virtual/_plugin-vue_export-helper.cjs +1 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  4. package/dist/components/st-button/index.d.ts +162 -0
  5. package/dist/components/st-button/st-button.vue.cjs +1 -0
  6. package/dist/components/st-button/st-button.vue.d.ts +29 -0
  7. package/dist/components/st-button/st-button.vue.js +5 -0
  8. package/dist/components/st-button/st-button.vue_vue_type_script_setup_true_lang.cjs +1 -0
  9. package/dist/components/st-button/st-button.vue_vue_type_script_setup_true_lang.js +81 -0
  10. package/dist/components/st-button/types.d.ts +49 -0
  11. package/dist/components/st-button.cjs +1 -0
  12. package/dist/components/st-button.js +6 -0
  13. package/dist/components/st-checkbox/index.d.ts +153 -0
  14. package/dist/components/st-checkbox/st-checkbox.vue.cjs +1 -0
  15. package/dist/components/st-checkbox/st-checkbox.vue.d.ts +27 -0
  16. package/dist/components/st-checkbox/st-checkbox.vue.js +5 -0
  17. package/dist/components/st-checkbox/st-checkbox.vue_vue_type_script_setup_true_lang.cjs +1 -0
  18. package/dist/components/st-checkbox/st-checkbox.vue_vue_type_script_setup_true_lang.js +109 -0
  19. package/dist/components/st-checkbox/types.d.ts +20 -0
  20. package/dist/components/st-checkbox-group/index.d.ts +171 -0
  21. package/dist/components/st-checkbox-group/st-checkbox-group.vue.cjs +1 -0
  22. package/dist/components/st-checkbox-group/st-checkbox-group.vue.d.ts +29 -0
  23. package/dist/components/st-checkbox-group/st-checkbox-group.vue.js +5 -0
  24. package/dist/components/st-checkbox-group/st-checkbox-group.vue_vue_type_script_setup_true_lang.cjs +1 -0
  25. package/dist/components/st-checkbox-group/st-checkbox-group.vue_vue_type_script_setup_true_lang.js +63 -0
  26. package/dist/components/st-checkbox-group/types.d.ts +43 -0
  27. package/dist/components/st-checkbox-group.cjs +1 -0
  28. package/dist/components/st-checkbox-group.js +6 -0
  29. package/dist/components/st-checkbox.cjs +1 -0
  30. package/dist/components/st-checkbox.js +6 -0
  31. package/dist/components/st-dialog/index.d.ts +243 -0
  32. package/dist/components/st-dialog/st-dialog.vue.cjs +1 -0
  33. package/dist/components/st-dialog/st-dialog.vue.d.ts +41 -0
  34. package/dist/components/st-dialog/st-dialog.vue.js +5 -0
  35. package/dist/components/st-dialog/st-dialog.vue_vue_type_script_setup_true_lang.cjs +1 -0
  36. package/dist/components/st-dialog/st-dialog.vue_vue_type_script_setup_true_lang.js +175 -0
  37. package/dist/components/st-dialog/types.d.ts +29 -0
  38. package/dist/components/st-dialog.cjs +1 -0
  39. package/dist/components/st-dialog.js +6 -0
  40. package/dist/components/st-input/index.d.ts +315 -0
  41. package/dist/components/st-input/st-input.vue.cjs +1 -0
  42. package/dist/components/st-input/st-input.vue.d.ts +48 -0
  43. package/dist/components/st-input/st-input.vue.js +7 -0
  44. package/dist/components/st-input/st-input.vue_vue_type_script_setup_true_lang.cjs +1 -0
  45. package/dist/components/st-input/st-input.vue_vue_type_script_setup_true_lang.js +146 -0
  46. package/dist/components/st-input/types.d.ts +68 -0
  47. package/dist/components/st-input.cjs +1 -0
  48. package/dist/components/st-input.js +6 -0
  49. package/dist/components/st-menu/index.d.ts +217 -0
  50. package/dist/components/st-menu/st-menu-node.vue.cjs +1 -0
  51. package/dist/components/st-menu/st-menu-node.vue.d.ts +14 -0
  52. package/dist/components/st-menu/st-menu-node.vue.js +5 -0
  53. package/dist/components/st-menu/st-menu-node.vue_vue_type_script_setup_true_lang.cjs +1 -0
  54. package/dist/components/st-menu/st-menu-node.vue_vue_type_script_setup_true_lang.js +107 -0
  55. package/dist/components/st-menu/st-menu.vue.cjs +1 -0
  56. package/dist/components/st-menu/st-menu.vue.d.ts +26 -0
  57. package/dist/components/st-menu/st-menu.vue.js +5 -0
  58. package/dist/components/st-menu/st-menu.vue_vue_type_script_setup_true_lang.cjs +1 -0
  59. package/dist/components/st-menu/st-menu.vue_vue_type_script_setup_true_lang.js +86 -0
  60. package/dist/components/st-menu/types.d.ts +82 -0
  61. package/dist/components/st-menu.cjs +1 -0
  62. package/dist/components/st-menu.js +7 -0
  63. package/dist/components/st-popover/index.d.ts +243 -0
  64. package/dist/components/st-popover/st-popover.vue.cjs +1 -0
  65. package/dist/components/st-popover/st-popover.vue.d.ts +37 -0
  66. package/dist/components/st-popover/st-popover.vue.js +5 -0
  67. package/dist/components/st-popover/st-popover.vue_vue_type_script_setup_true_lang.cjs +1 -0
  68. package/dist/components/st-popover/st-popover.vue_vue_type_script_setup_true_lang.js +355 -0
  69. package/dist/components/st-popover/types.d.ts +103 -0
  70. package/dist/components/st-popover.cjs +1 -0
  71. package/dist/components/st-popover.js +6 -0
  72. package/dist/components/st-radio/index.d.ts +135 -0
  73. package/dist/components/st-radio/st-radio.vue.cjs +1 -0
  74. package/dist/components/st-radio/st-radio.vue.d.ts +28 -0
  75. package/dist/components/st-radio/st-radio.vue.js +5 -0
  76. package/dist/components/st-radio/st-radio.vue_vue_type_script_setup_true_lang.cjs +1 -0
  77. package/dist/components/st-radio/st-radio.vue_vue_type_script_setup_true_lang.js +88 -0
  78. package/dist/components/st-radio/types.d.ts +15 -0
  79. package/dist/components/st-radio-group/index.d.ts +180 -0
  80. package/dist/components/st-radio-group/st-radio-group.vue.cjs +1 -0
  81. package/dist/components/st-radio-group/st-radio-group.vue.d.ts +35 -0
  82. package/dist/components/st-radio-group/st-radio-group.vue.js +5 -0
  83. package/dist/components/st-radio-group/st-radio-group.vue_vue_type_script_setup_true_lang.cjs +1 -0
  84. package/dist/components/st-radio-group/st-radio-group.vue_vue_type_script_setup_true_lang.js +66 -0
  85. package/dist/components/st-radio-group/types.d.ts +43 -0
  86. package/dist/components/st-radio-group.cjs +1 -0
  87. package/dist/components/st-radio-group.js +6 -0
  88. package/dist/components/st-radio.cjs +1 -0
  89. package/dist/components/st-radio.js +6 -0
  90. package/dist/components/st-select/index.d.ts +306 -0
  91. package/dist/components/st-select/st-select.vue.cjs +1 -0
  92. package/dist/components/st-select/st-select.vue.d.ts +47 -0
  93. package/dist/components/st-select/st-select.vue.js +5 -0
  94. package/dist/components/st-select/st-select.vue_vue_type_script_setup_true_lang.cjs +1 -0
  95. package/dist/components/st-select/st-select.vue_vue_type_script_setup_true_lang.js +200 -0
  96. package/dist/components/st-select/types.d.ts +85 -0
  97. package/dist/components/st-select.cjs +1 -0
  98. package/dist/components/st-select.js +6 -0
  99. package/dist/components/st-sidebar/index.d.ts +63 -0
  100. package/dist/components/st-sidebar/st-sidebar.vue.cjs +1 -0
  101. package/dist/components/st-sidebar/st-sidebar.vue.d.ts +11 -0
  102. package/dist/components/st-sidebar/st-sidebar.vue.js +5 -0
  103. package/dist/components/st-sidebar/st-sidebar.vue_vue_type_script_setup_true_lang.cjs +1 -0
  104. package/dist/components/st-sidebar/st-sidebar.vue_vue_type_script_setup_true_lang.js +108 -0
  105. package/dist/components/st-sidebar/types.d.ts +56 -0
  106. package/dist/components/st-sidebar-item/index.d.ts +63 -0
  107. package/dist/components/st-sidebar-item/st-sidebar-item.vue.cjs +1 -0
  108. package/dist/components/st-sidebar-item/st-sidebar-item.vue.d.ts +11 -0
  109. package/dist/components/st-sidebar-item/st-sidebar-item.vue.js +5 -0
  110. package/dist/components/st-sidebar-item/st-sidebar-item.vue_vue_type_script_setup_true_lang.cjs +1 -0
  111. package/dist/components/st-sidebar-item/st-sidebar-item.vue_vue_type_script_setup_true_lang.js +38 -0
  112. package/dist/components/st-sidebar-item/types.d.ts +19 -0
  113. package/dist/components/st-sidebar-item.cjs +1 -0
  114. package/dist/components/st-sidebar-item.js +6 -0
  115. package/dist/components/st-sidebar.cjs +1 -0
  116. package/dist/components/st-sidebar.js +6 -0
  117. package/dist/components/st-splitter/index.d.ts +88 -0
  118. package/dist/components/st-splitter/st-splitter.vue.cjs +1 -0
  119. package/dist/components/st-splitter/st-splitter.vue.d.ts +16 -0
  120. package/dist/components/st-splitter/st-splitter.vue.js +5 -0
  121. package/dist/components/st-splitter/st-splitter.vue_vue_type_script_setup_true_lang.cjs +1 -0
  122. package/dist/components/st-splitter/st-splitter.vue_vue_type_script_setup_true_lang.js +29 -0
  123. package/dist/components/st-splitter/types.d.ts +192 -0
  124. package/dist/components/st-splitter/useSplitter.cjs +1 -0
  125. package/dist/components/st-splitter/useSplitter.d.ts +24 -0
  126. package/dist/components/st-splitter/useSplitter.js +129 -0
  127. package/dist/components/st-splitter-panel/index.d.ts +180 -0
  128. package/dist/components/st-splitter-panel/st-splitter-panel.vue.cjs +1 -0
  129. package/dist/components/st-splitter-panel/st-splitter-panel.vue.d.ts +33 -0
  130. package/dist/components/st-splitter-panel/st-splitter-panel.vue.js +5 -0
  131. package/dist/components/st-splitter-panel/st-splitter-panel.vue_vue_type_script_setup_true_lang.cjs +1 -0
  132. package/dist/components/st-splitter-panel/st-splitter-panel.vue_vue_type_script_setup_true_lang.js +164 -0
  133. package/dist/components/st-splitter-panel/types.d.ts +27 -0
  134. package/dist/components/st-splitter-panel.cjs +1 -0
  135. package/dist/components/st-splitter-panel.js +6 -0
  136. package/dist/components/st-splitter.cjs +1 -0
  137. package/dist/components/st-splitter.js +7 -0
  138. package/dist/components/st-toggle/index.d.ts +159 -0
  139. package/dist/components/st-toggle/st-toggle.vue.cjs +1 -0
  140. package/dist/components/st-toggle/st-toggle.vue.d.ts +25 -0
  141. package/dist/components/st-toggle/st-toggle.vue.js +5 -0
  142. package/dist/components/st-toggle/st-toggle.vue_vue_type_script_setup_true_lang.cjs +1 -0
  143. package/dist/components/st-toggle/st-toggle.vue_vue_type_script_setup_true_lang.js +62 -0
  144. package/dist/components/st-toggle/types.d.ts +38 -0
  145. package/dist/components/st-toggle.cjs +1 -0
  146. package/dist/components/st-toggle.js +6 -0
  147. package/dist/components/st-tooltip/index.d.ts +183 -0
  148. package/dist/components/st-tooltip/st-tooltip.vue.cjs +1 -0
  149. package/dist/components/st-tooltip/st-tooltip.vue.d.ts +29 -0
  150. package/dist/components/st-tooltip/st-tooltip.vue.js +5 -0
  151. package/dist/components/st-tooltip/st-tooltip.vue_vue_type_script_setup_true_lang.cjs +1 -0
  152. package/dist/components/st-tooltip/st-tooltip.vue_vue_type_script_setup_true_lang.js +71 -0
  153. package/dist/components/st-tooltip/types.d.ts +79 -0
  154. package/dist/components/st-tooltip.cjs +1 -0
  155. package/dist/components/st-tooltip.js +6 -0
  156. package/dist/components/st-tree/index.d.ts +114 -0
  157. package/dist/components/st-tree/st-tree-node.vue.cjs +1 -0
  158. package/dist/components/st-tree/st-tree-node.vue.d.ts +4 -0
  159. package/dist/components/st-tree/st-tree-node.vue.js +5 -0
  160. package/dist/components/st-tree/st-tree-node.vue_vue_type_script_setup_true_lang.cjs +1 -0
  161. package/dist/components/st-tree/st-tree-node.vue_vue_type_script_setup_true_lang.js +87 -0
  162. package/dist/components/st-tree/st-tree.vue.cjs +1 -0
  163. package/dist/components/st-tree/st-tree.vue.d.ts +50 -0
  164. package/dist/components/st-tree/st-tree.vue.js +5 -0
  165. package/dist/components/st-tree/st-tree.vue_vue_type_script_setup_true_lang.cjs +1 -0
  166. package/dist/components/st-tree/st-tree.vue_vue_type_script_setup_true_lang.js +59 -0
  167. package/dist/components/st-tree/types.d.ts +87 -0
  168. package/dist/components/st-tree.cjs +1 -0
  169. package/dist/components/st-tree.js +6 -0
  170. package/dist/components/types.d.ts +41 -0
  171. package/dist/index.cjs +1 -0
  172. package/dist/index.css +2 -0
  173. package/dist/index.d.ts +3005 -0
  174. package/dist/index.js +47 -0
  175. package/dist/utils/cn.cjs +1 -0
  176. package/dist/utils/cn.d.ts +11 -0
  177. package/dist/utils/cn.js +8 -0
  178. package/dist/utils/cva/index.cjs +1 -0
  179. package/dist/utils/cva/index.d.ts +9 -0
  180. package/dist/utils/cva/index.js +25 -0
  181. package/dist/utils/cva/types.d.ts +45 -0
  182. package/dist/utils/directive/index.cjs +1 -0
  183. package/dist/utils/directive/index.d.ts +4 -0
  184. package/dist/utils/directive/index.js +10 -0
  185. package/dist/utils/directive/intersection.cjs +1 -0
  186. package/dist/utils/directive/intersection.d.ts +6 -0
  187. package/dist/utils/directive/intersection.js +20 -0
  188. package/dist/utils/directive/interval.cjs +1 -0
  189. package/dist/utils/directive/interval.d.ts +6 -0
  190. package/dist/utils/directive/interval.js +14 -0
  191. package/dist/utils/directive/move.cjs +1 -0
  192. package/dist/utils/directive/move.d.ts +6 -0
  193. package/dist/utils/directive/move.js +42 -0
  194. package/dist/utils/directive/resize.cjs +1 -0
  195. package/dist/utils/directive/resize.d.ts +6 -0
  196. package/dist/utils/directive/resize.js +17 -0
  197. package/dist/utils/with-install.cjs +1 -0
  198. package/dist/utils/with-install.d.ts +4 -0
  199. package/dist/utils/with-install.js +10 -0
  200. package/package.json +87 -0
@@ -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,6 @@
1
+ import { withInstall as e } from "../utils/with-install.js";
2
+ import t from "./st-sidebar-item/st-sidebar-item.vue.js";
3
+ //#region src/components/st-sidebar-item/index.ts
4
+ var n = e(t);
5
+ //#endregion
6
+ export { n as StSidebarItem, n as default };
@@ -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,6 @@
1
+ import { withInstall as e } from "../utils/with-install.js";
2
+ import t from "./st-sidebar/st-sidebar.vue.js";
3
+ //#region src/components/st-sidebar/index.ts
4
+ var n = e(t);
5
+ //#endregion
6
+ export { n as StSidebar, n as default };
@@ -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,5 @@
1
+ import e from "./st-splitter.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/st-splitter/st-splitter.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -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 };