hys-ui 0.3.0 → 0.4.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 (93) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +68 -73
  3. package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +5 -41
  4. package/dist/components/HysAnimatedNumber/HysAnimatedNumber2.vue.js +146 -2
  5. package/dist/components/HysButton/HysButton.vue.js +2 -2
  6. package/dist/components/HysButton/HysButton2.vue.js +227 -60
  7. package/dist/components/HysButtonGroup/HysButtonGroup.vue.js +7 -0
  8. package/dist/components/HysButtonGroup/HysButtonGroup2.vue.js +51 -0
  9. package/dist/components/HysMention/HysMention.vue.js +1 -1
  10. package/dist/components/HysMention/HysMention2.vue.js +1092 -154
  11. package/dist/components/HysModal/HysModal.vue.js +3 -3
  12. package/dist/components/HysModal/HysModal2.vue.js +81 -80
  13. package/dist/components/HysPagination/HysPagination.vue.js +2 -2
  14. package/dist/components/HysPagination/HysPagination2.vue.js +243 -180
  15. package/dist/components/HysSearch/HysSearch.vue.js +5 -82
  16. package/dist/components/HysSearch/HysSearch2.vue.js +176 -2
  17. package/dist/components/HysSelect/HysSelect.vue.js +2 -2
  18. package/dist/components/HysSelect/HysSelect2.vue.js +472 -443
  19. package/dist/components/HysSplitPane/HysSplitPane.vue.js +315 -58
  20. package/dist/components/HysSplitPane/HysSplitPane3.vue.js +5 -0
  21. package/dist/components/HysTable/HysTable.vue.js +2 -2
  22. package/dist/components/HysTable/HysTable2.vue.js +1418 -1150
  23. package/dist/components/HysTour/HysTour.vue.js +291 -67
  24. package/dist/components/HysTour/HysTour3.vue.js +5 -0
  25. package/dist/composables/buttonGroup.js +12 -0
  26. package/dist/composables/floatingPosition.js +18 -0
  27. package/dist/composables/mentionDocument.js +79 -0
  28. package/dist/composables/mentionEditor.js +58 -0
  29. package/dist/composables/selectOptions.js +44 -38
  30. package/dist/composables/splitPaneSizes.js +58 -0
  31. package/dist/composables/table.js +128 -105
  32. package/dist/composables/useDialog.js +50 -50
  33. package/dist/composables/useFloating.js +107 -103
  34. package/dist/composables/useMentionCaret.js +81 -0
  35. package/dist/composables/useMentionList.js +81 -0
  36. package/dist/composables/useMentionModel.js +90 -0
  37. package/dist/composables/useMentionOptions.js +421 -0
  38. package/dist/composables/useSplitPaneDrag.js +52 -0
  39. package/dist/composables/useSplitPaneStorage.js +38 -0
  40. package/dist/composables/useTable.js +344 -312
  41. package/dist/composables/useTableSticky.js +79 -0
  42. package/dist/composables/useTourLayout.js +129 -0
  43. package/dist/config.js +11 -11
  44. package/dist/index.js +175 -156
  45. package/dist/internal/MultiSplitPane.vue.js +305 -0
  46. package/dist/internal/MultiSplitPane2.vue.js +4 -0
  47. package/dist/style.css +1 -1
  48. package/dist/types/components/HysAnimatedNumber/HysAnimatedNumber.vue.d.ts +61 -7
  49. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +1 -1
  50. package/dist/types/components/HysButton/HysButton.vue.d.ts +82 -22
  51. package/dist/types/components/HysButtonGroup/HysButtonGroup.vue.d.ts +30 -0
  52. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +2 -2
  53. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +2 -2
  54. package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +2 -2
  55. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +2 -2
  56. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +1 -1
  57. package/dist/types/components/HysMention/HysMention.vue.d.ts +91 -40
  58. package/dist/types/components/HysModal/HysModal.vue.d.ts +1 -1
  59. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +2 -2
  60. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +55 -4
  61. package/dist/types/components/HysRating/HysRating.vue.d.ts +1 -1
  62. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +45 -7
  63. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +6 -1
  64. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +125 -14
  65. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +1 -1
  66. package/dist/types/components/HysTable/HysTable.vue.d.ts +1740 -3
  67. package/dist/types/components/HysTour/HysTour.vue.d.ts +46 -9
  68. package/dist/types/composables/buttonGroup.d.ts +9 -0
  69. package/dist/types/composables/floatingPosition.d.ts +14 -0
  70. package/dist/types/composables/mention.d.ts +284 -0
  71. package/dist/types/composables/mentionDocument.d.ts +15 -0
  72. package/dist/types/composables/mentionEditor.d.ts +7 -0
  73. package/dist/types/composables/modal.d.ts +2 -0
  74. package/dist/types/composables/selectOptions.d.ts +5 -0
  75. package/dist/types/composables/splitPaneSizes.d.ts +11 -0
  76. package/dist/types/composables/table.d.ts +116 -6
  77. package/dist/types/composables/tour.d.ts +68 -0
  78. package/dist/types/composables/useFloating.d.ts +1 -1
  79. package/dist/types/composables/useMentionCaret.d.ts +6 -0
  80. package/dist/types/composables/useMentionList.d.ts +23 -0
  81. package/dist/types/composables/useMentionModel.d.ts +14 -0
  82. package/dist/types/composables/useMentionOptions.d.ts +26 -0
  83. package/dist/types/composables/useSplitPaneDrag.d.ts +14 -0
  84. package/dist/types/composables/useSplitPaneStorage.d.ts +4 -0
  85. package/dist/types/composables/useTable.d.ts +7 -3
  86. package/dist/types/composables/useTableSticky.d.ts +22 -0
  87. package/dist/types/composables/useTourLayout.d.ts +33 -0
  88. package/dist/types/config.d.ts +1 -0
  89. package/dist/types/index.d.ts +36 -1
  90. package/dist/types/internal/MultiSplitPane.vue.d.ts +54 -0
  91. package/package.json +3 -2
  92. package/dist/components/HysSplitPane/HysSplitPane2.vue.js +0 -4
  93. package/dist/components/HysTour/HysTour2.vue.js +0 -4
@@ -1,30 +1,67 @@
1
- import type { HysPopupMotionProps } from '../../motion/popup';
2
- type __VLS_Props = HysPopupMotionProps & {
3
- steps: {
4
- title: string;
5
- description: string;
6
- }[];
7
- current?: number;
8
- closeOnEscape?: boolean;
1
+ import type { HysTourContext, HysTourProps } from "../../composables/tour";
2
+ type __VLS_Props = HysTourProps;
3
+ type __VLS_Slots = {
4
+ /** 自定义引导说明,接收当前步骤与导航方法。 */
5
+ default?: (context: HysTourContext) => unknown;
6
+ header?: (context: HysTourContext) => unknown;
7
+ cover?: (context: HysTourContext) => unknown;
8
+ indicators?: (context: HysTourContext) => unknown;
9
+ footer?: (context: HysTourContext) => unknown;
10
+ "close-icon"?: (context: HysTourContext) => unknown;
9
11
  };
12
+ declare function goTo(value: number): void;
13
+ declare function start(value?: number): void;
14
+ declare function close(): void;
15
+ declare function previous(): void;
16
+ declare function next(): void;
10
17
  type __VLS_ModelProps = {
11
18
  modelValue?: boolean;
12
19
  };
13
20
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
14
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
22
+ start: typeof start;
23
+ close: typeof close;
24
+ goTo: typeof goTo;
25
+ previous: typeof previous;
26
+ next: typeof next;
27
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
28
  change: (index: number) => any;
16
29
  "update:modelValue": (value: boolean) => any;
17
30
  close: () => any;
18
31
  finish: () => any;
32
+ "update:open": (open: boolean) => any;
19
33
  "update:current": (index: number) => any;
20
34
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
35
  onChange?: ((index: number) => any) | undefined;
22
36
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
23
37
  onClose?: (() => any) | undefined;
24
38
  onFinish?: (() => any) | undefined;
39
+ "onUpdate:open"?: ((open: boolean) => any) | undefined;
25
40
  "onUpdate:current"?: ((index: number) => any) | undefined;
26
41
  }>, {
42
+ showArrow: boolean;
43
+ mask: import("../../index.js").HysTourMask;
44
+ type: "default" | "primary";
45
+ placement: import("../../index.js").Placement;
46
+ open: boolean;
47
+ appendTo: string | false | HTMLElement;
48
+ arrow: boolean | {
49
+ pointAtCenter?: boolean;
50
+ };
27
51
  closeOnEscape: boolean;
52
+ showClose: boolean;
53
+ skipText: string;
54
+ prevText: string;
55
+ nextText: string;
56
+ finishText: string;
57
+ scrollIntoViewOptions: boolean | ScrollIntoViewOptions;
58
+ targetAreaClickable: boolean;
28
59
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
60
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
61
  declare const _default: typeof __VLS_export;
30
62
  export default _default;
63
+ type __VLS_WithSlots<T, S> = T & {
64
+ new (): {
65
+ $slots: S;
66
+ };
67
+ };
@@ -0,0 +1,9 @@
1
+ import type { InjectionKey, Ref } from "vue";
2
+ import type { HysButtonAppearance, HysButtonSize, HysButtonVariant } from "../components/HysButton/HysButton.vue";
3
+ export declare function buttonSize(size: HysButtonSize | undefined): "sm" | "md" | "lg" | undefined;
4
+ export declare function buttonVariant(type: HysButtonAppearance | "button" | "submit" | "reset" | undefined): HysButtonVariant | undefined;
5
+ export declare const buttonGroupKey: InjectionKey<{
6
+ variant: Readonly<Ref<HysButtonVariant | undefined>>;
7
+ size: Readonly<Ref<"sm" | "md" | "lg" | undefined>>;
8
+ disabled: Readonly<Ref<boolean>>;
9
+ }>;
@@ -0,0 +1,14 @@
1
+ import type { Placement } from "./useFloating";
2
+ export declare function positionFloating(anchor: DOMRect, size: {
3
+ width: number;
4
+ height: number;
5
+ }, viewport: {
6
+ width: number;
7
+ height: number;
8
+ }, placement: Placement, gap: number, padding: number, flip: boolean): {
9
+ width: number;
10
+ height: number;
11
+ x: number;
12
+ y: number;
13
+ placement: Placement;
14
+ };
@@ -0,0 +1,284 @@
1
+ import type { StyleValue, VNodeChild } from "vue";
2
+ import type { Placement } from "./useFloating";
3
+ import type { HysPopupMotionProps } from "../motion/popup";
4
+ export interface HysMentionUser {
5
+ id: string;
6
+ name: string;
7
+ disabled?: boolean;
8
+ }
9
+ export interface HysMentionOption {
10
+ id?: string | number;
11
+ value: string | number;
12
+ label?: string | ((option: HysMentionOption) => VNodeChild);
13
+ disabled?: boolean;
14
+ prefix?: string;
15
+ type?: string;
16
+ avatar?: string;
17
+ description?: string;
18
+ group?: string;
19
+ keywords?: readonly string[];
20
+ recommended?: boolean;
21
+ class?: string;
22
+ style?: StyleValue;
23
+ payload?: unknown;
24
+ }
25
+ export interface HysMentionContext {
26
+ prefix: string;
27
+ query: string;
28
+ start: number;
29
+ end: number;
30
+ manual?: boolean;
31
+ }
32
+ export interface HysMentionFieldNames {
33
+ value?: string;
34
+ label?: string;
35
+ disabled?: string;
36
+ id?: string;
37
+ group?: string;
38
+ avatar?: string;
39
+ description?: string;
40
+ type?: string;
41
+ }
42
+ export type HysMentionDataOption = HysMentionOption | Record<string, unknown>;
43
+ export interface HysMentionLoadContext extends HysMentionContext {
44
+ signal: AbortSignal;
45
+ text: string;
46
+ page: number;
47
+ pageSize: number;
48
+ cursor?: string | number;
49
+ }
50
+ export interface HysMentionPage {
51
+ items: readonly HysMentionDataOption[];
52
+ hasMore?: boolean;
53
+ nextCursor?: string | number | null;
54
+ total?: number;
55
+ }
56
+ export type HysMentionLoader = (context: HysMentionLoadContext) => readonly HysMentionDataOption[] | HysMentionPage | Promise<readonly HysMentionDataOption[] | HysMentionPage>;
57
+ export type HysMentionFilter = boolean | ((query: string, option: HysMentionOption, prefix: string) => boolean);
58
+ export type HysMentionSearchField = string | ((option: HysMentionOption) => unknown);
59
+ export type HysMentionSearchMode = "includes" | "fuzzy" | "pinyin" | "initials";
60
+ export type HysMentionMatch = (context: {
61
+ text: string;
62
+ caret: number;
63
+ prefix: string;
64
+ }) => {
65
+ start: number;
66
+ query: string;
67
+ } | null | undefined;
68
+ export interface HysMentionTrigger {
69
+ prefix: string;
70
+ minQueryLength?: number;
71
+ boundary?: "any" | "word" | ((text: string, index: number) => boolean);
72
+ allowSpaces?: boolean;
73
+ match?: HysMentionMatch;
74
+ split?: string;
75
+ type?: string;
76
+ options?: readonly HysMentionDataOption[];
77
+ loadOptions?: HysMentionLoader;
78
+ filterOption?: HysMentionFilter;
79
+ searchMode?: HysMentionSearchMode | readonly HysMentionSearchMode[];
80
+ formatMention?: HysMentionProps["formatMention"];
81
+ allowCreate?: boolean;
82
+ }
83
+ export interface HysMentionSource {
84
+ key: string;
85
+ prefixes?: readonly string[];
86
+ group?: string;
87
+ options?: readonly HysMentionDataOption[];
88
+ loadOptions?: HysMentionLoader;
89
+ fieldNames?: HysMentionFieldNames;
90
+ }
91
+ export interface HysMentionEntity {
92
+ id: string | number;
93
+ value: string | number;
94
+ label: string;
95
+ type: string;
96
+ prefix: string;
97
+ text: string;
98
+ start: number;
99
+ end: number;
100
+ payload?: unknown;
101
+ }
102
+ export interface HysMentionDocument {
103
+ text: string;
104
+ entities: HysMentionEntity[];
105
+ }
106
+ export interface HysMentionOpenOptions {
107
+ prefix?: string;
108
+ query?: string;
109
+ position?: number;
110
+ }
111
+ export interface HysMentionInsertOptions {
112
+ prefix?: string;
113
+ start?: number;
114
+ end?: number;
115
+ focus?: boolean;
116
+ }
117
+ export interface HysMentionAutosize {
118
+ minRows?: number;
119
+ maxRows?: number;
120
+ }
121
+ export interface HysMentionLocale {
122
+ input: string;
123
+ list: string;
124
+ placeholder: string;
125
+ loading: string;
126
+ empty: string;
127
+ error: string;
128
+ retry: string;
129
+ more: string;
130
+ recent: string;
131
+ recommended: string;
132
+ clear: string;
133
+ create: string;
134
+ }
135
+ export interface HysMentionSlots {
136
+ prefix?: () => VNodeChild;
137
+ suffix?: () => VNodeChild;
138
+ "clear-icon"?: () => VNodeChild;
139
+ count?: (props: {
140
+ count: number;
141
+ max?: number;
142
+ }) => VNodeChild;
143
+ option?: (props: {
144
+ user: HysMentionUser;
145
+ option: HysMentionOption;
146
+ context?: HysMentionContext;
147
+ created: boolean;
148
+ }) => VNodeChild;
149
+ avatar?: (props: {
150
+ option: HysMentionOption;
151
+ }) => VNodeChild;
152
+ group?: (props: {
153
+ label: string;
154
+ context?: HysMentionContext;
155
+ }) => VNodeChild;
156
+ header?: (props: {
157
+ context?: HysMentionContext;
158
+ }) => VNodeChild;
159
+ footer?: (props: {
160
+ context?: HysMentionContext;
161
+ hasMore: boolean;
162
+ loadMore: () => Promise<boolean>;
163
+ }) => VNodeChild;
164
+ loading?: () => VNodeChild;
165
+ empty?: () => VNodeChild;
166
+ error?: (props: {
167
+ error: unknown;
168
+ retry: () => void;
169
+ context?: HysMentionContext;
170
+ }) => VNodeChild;
171
+ }
172
+ export type HysMentionAction = "next" | "previous" | "first" | "last" | "select" | "close" | "open" | "retry";
173
+ export interface HysMentionInstance {
174
+ readonly input: HTMLElement | undefined;
175
+ readonly dropdownVisible: boolean;
176
+ focus: () => void;
177
+ blur: () => void;
178
+ open: (options?: HysMentionOpenOptions) => boolean;
179
+ close: () => void;
180
+ update: () => void;
181
+ retry: () => void;
182
+ loadMore: () => Promise<boolean>;
183
+ insertMention: (option: HysMentionOption, options?: HysMentionInsertOptions) => Promise<boolean>;
184
+ removeMention: (target: HysMentionEntity | string | number) => Promise<boolean>;
185
+ getEntities: () => HysMentionEntity[];
186
+ getDocument: () => HysMentionDocument;
187
+ setDocument: (document: HysMentionDocument | string) => Promise<boolean>;
188
+ serialize: () => string;
189
+ clear: () => Promise<boolean>;
190
+ undo: () => Promise<boolean>;
191
+ redo: () => Promise<boolean>;
192
+ }
193
+ export interface HysMentionProps extends HysPopupMotionProps {
194
+ modelValue?: string;
195
+ users?: readonly HysMentionUser[];
196
+ /** 候选选项。提供时优先于 users。 */
197
+ options?: readonly HysMentionDataOption[];
198
+ fieldNames?: HysMentionFieldNames;
199
+ /** 输入触发词后按当前关键字加载候选。过期请求会被取消。 */
200
+ loadOptions?: HysMentionLoader;
201
+ sources?: readonly HysMentionSource[];
202
+ debounce?: number;
203
+ throttle?: number;
204
+ pageSize?: number;
205
+ cache?: boolean | {
206
+ ttl?: number;
207
+ maxEntries?: number;
208
+ };
209
+ historyKey?: string;
210
+ recentLimit?: number;
211
+ recommendations?: readonly HysMentionOption[];
212
+ recommendOnFocus?: boolean;
213
+ minQueryLength?: number;
214
+ defaultValue?: string;
215
+ /** 提及触发词,可传多个前缀。 */
216
+ prefix?: string | readonly string[];
217
+ triggers?: readonly HysMentionTrigger[];
218
+ boundary?: HysMentionTrigger["boundary"];
219
+ allowSpaces?: boolean;
220
+ matchTrigger?: HysMentionMatch;
221
+ /** 选择候选后插入的分隔符。 */
222
+ split?: string;
223
+ filterOption?: HysMentionFilter;
224
+ searchMode?: HysMentionTrigger["searchMode"];
225
+ searchFields?: readonly HysMentionSearchField[];
226
+ sortOptions?: boolean | ((a: HysMentionOption, b: HysMentionOption, context: HysMentionContext) => number);
227
+ groupBy?: (option: HysMentionOption, context: HysMentionContext) => string | undefined;
228
+ validateSearch?: (query: string, context: HysMentionContext) => boolean;
229
+ whole?: boolean;
230
+ checkIsWhole?: (value: string, prefix: string) => boolean;
231
+ validateEntity?: (entity: HysMentionEntity) => boolean;
232
+ invalidEntity?: "mark" | "text" | "remove";
233
+ canSelect?: (option: HysMentionOption, context: HysMentionContext) => boolean;
234
+ beforeRemove?: (entity: HysMentionEntity) => boolean;
235
+ parseEntities?: (text: string) => readonly HysMentionEntity[];
236
+ highlightMentions?: boolean;
237
+ entityClass?: string | ((entity: HysMentionEntity) => string);
238
+ allowCreate?: boolean;
239
+ createOption?: (context: HysMentionContext) => HysMentionOption | false;
240
+ /** 自定义写入的提及文本,包含所需前缀。组件会追加 split。 */
241
+ formatMention?: (option: HysMentionOption, context: HysMentionContext) => string;
242
+ /** 替换光标后的同一提及词尾。默认保留光标后的文本。 */
243
+ replaceRest?: boolean;
244
+ selectOnTab?: boolean;
245
+ highlightMatch?: boolean;
246
+ loading?: boolean;
247
+ notFoundText?: string;
248
+ errorText?: string;
249
+ maxOptions?: number;
250
+ placement?: Placement;
251
+ showArrow?: boolean;
252
+ offset?: number;
253
+ autoAdjustOverflow?: boolean;
254
+ popupWidth?: string | number;
255
+ popupMaxHeight?: string | number;
256
+ zIndex?: number;
257
+ virtual?: boolean;
258
+ itemHeight?: number;
259
+ overscan?: number;
260
+ appendTo?: string | HTMLElement | false;
261
+ popupClass?: string;
262
+ popupStyle?: StyleValue;
263
+ type?: "text" | "textarea" | "rich";
264
+ rows?: number;
265
+ name?: string;
266
+ autofocus?: boolean;
267
+ placeholder?: string;
268
+ disabled?: boolean;
269
+ readonly?: boolean;
270
+ maxlength?: number;
271
+ minlength?: number;
272
+ required?: boolean;
273
+ clearable?: boolean;
274
+ showCount?: boolean;
275
+ autosize?: boolean | HysMentionAutosize;
276
+ restoreFocus?: boolean;
277
+ shortcuts?: Partial<Record<string, HysMentionAction>>;
278
+ locale?: Partial<HysMentionLocale>;
279
+ defaultEntities?: readonly HysMentionEntity[];
280
+ entities?: readonly HysMentionEntity[];
281
+ ariaLabel?: string;
282
+ status?: "error" | "warning";
283
+ size?: "sm" | "md" | "lg";
284
+ }
@@ -0,0 +1,15 @@
1
+ import type { HysMentionContext, HysMentionDocument, HysMentionEntity, HysMentionProps, HysMentionTrigger } from "./mention";
2
+ export declare function mentionTriggers(props: HysMentionProps): HysMentionTrigger[];
3
+ export declare function matchMention(text: string, caret: number, rules: readonly HysMentionTrigger[], defaults: Pick<HysMentionProps, "boundary" | "allowSpaces" | "matchTrigger" | "split">): HysMentionContext | undefined;
4
+ export declare function normalizeMentionEntities(text: string, input: readonly HysMentionEntity[]): HysMentionEntity[];
5
+ export declare function serializeMentionDocument(document: HysMentionDocument): string;
6
+ export declare function deserializeMentionDocument(source: string): HysMentionDocument;
7
+ export declare function rebaseMentionEntities(before: HysMentionDocument, text: string, range?: {
8
+ start: number;
9
+ end: number;
10
+ }): HysMentionEntity[];
11
+ export declare function mentionSegments(text: string, entities: readonly HysMentionEntity[]): {
12
+ text: string;
13
+ start: number;
14
+ entity?: HysMentionEntity;
15
+ }[];
@@ -0,0 +1,7 @@
1
+ export interface MentionSelection {
2
+ start: number;
3
+ end: number;
4
+ }
5
+ export declare function isNativeMentionInput(element: HTMLElement): element is HTMLInputElement | HTMLTextAreaElement;
6
+ export declare function readMentionSelection(element: HTMLElement, fallback: number): MentionSelection;
7
+ export declare function writeMentionSelection(element: HTMLElement, selection: MentionSelection): void;
@@ -150,6 +150,8 @@ export interface HysModalSlotContext {
150
150
  }
151
151
  export interface HysModalSlots {
152
152
  default?: (context: HysModalSlotContext) => VNodeChild;
153
+ /** Content placed between the overlay and the dialog panel. */
154
+ backdrop?: (context: HysModalSlotContext) => VNodeChild;
153
155
  header?: (context: HysModalSlotContext) => VNodeChild;
154
156
  footer?: (context: HysModalSlotContext) => VNodeChild;
155
157
  icon?: (context: HysModalSlotContext) => VNodeChild;
@@ -1,5 +1,10 @@
1
1
  export type HysSelectValue = string | number | boolean | Record<string, unknown>;
2
2
  export type HysSelectModelValue = HysSelectValue | HysSelectValue[] | null;
3
+ export type HysSelectLabeledValue = {
4
+ value: HysSelectValue;
5
+ label: string;
6
+ };
7
+ export declare function isSelectLabeledValue(value: HysSelectValue): value is HysSelectLabeledValue;
3
8
  export interface HysSelectOption {
4
9
  label: string;
5
10
  value: HysSelectValue;
@@ -0,0 +1,11 @@
1
+ import type { HysSplitPaneLength } from "../components/HysSplitPane/HysSplitPane.vue";
2
+ export declare const paneEpsilon = 1e-7;
3
+ export declare function paneRatio(value: HysSplitPaneLength | undefined, available: number): number | undefined;
4
+ interface PanePreference {
5
+ min: number;
6
+ max: number;
7
+ preferred?: number;
8
+ relative?: boolean;
9
+ }
10
+ export declare function fitPaneSizes(panes: readonly PanePreference[]): number[];
11
+ export {};