@destyler/popper 0.0.1-beta.7

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.
@@ -0,0 +1,427 @@
1
+ import * as vue from 'vue';
2
+ import { Ref, PropType, ComponentPublicInstance, Component } from 'vue';
3
+ import * as _destyler_primitive from '@destyler/primitive';
4
+ import { AsTag } from '@destyler/primitive';
5
+ import * as _floating_ui_vue from '@floating-ui/vue';
6
+ import { Middleware, Placement } from '@floating-ui/vue';
7
+ import { ComponentResolver } from 'unplugin-vue-components';
8
+
9
+ interface Measurable {
10
+ getBoundingClientRect(): DOMRect;
11
+ }
12
+ interface PopperRootContext {
13
+ anchor: Ref<Measurable | HTMLElement | undefined>;
14
+ onAnchorChange(element: Measurable | HTMLElement | undefined): void;
15
+ }
16
+ declare const injectPopperRootContext: <T extends PopperRootContext | null | undefined = PopperRootContext>(fallback?: T | undefined) => T extends null ? PopperRootContext | null : PopperRootContext;
17
+ declare const providePopperRootContext: (contextValue: PopperRootContext) => PopperRootContext;
18
+ declare const DestylerPopperRoot: vue.DefineComponent<{}, void, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;
19
+
20
+ declare const destylerPopperAnchorProps: {
21
+ element: {
22
+ type: PropType<Measurable>;
23
+ };
24
+ as: {
25
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
26
+ required: boolean;
27
+ default: string;
28
+ };
29
+ asChild: {
30
+ type: PropType<boolean>;
31
+ required: boolean;
32
+ default: boolean;
33
+ };
34
+ };
35
+ declare const DestylerPopperAnchor: vue.DefineComponent<{
36
+ element: {
37
+ type: PropType<Measurable>;
38
+ };
39
+ as: {
40
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
41
+ required: boolean;
42
+ default: string;
43
+ };
44
+ asChild: {
45
+ type: PropType<boolean>;
46
+ required: boolean;
47
+ default: boolean;
48
+ };
49
+ }, {
50
+ customElement: vue.Ref<vue.ComponentPublicInstance | undefined>;
51
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
52
+ element: {
53
+ type: PropType<Measurable>;
54
+ };
55
+ as: {
56
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
57
+ required: boolean;
58
+ default: string;
59
+ };
60
+ asChild: {
61
+ type: PropType<boolean>;
62
+ required: boolean;
63
+ default: boolean;
64
+ };
65
+ }>>, {
66
+ as: _destyler_primitive.AsTag | vue.Component;
67
+ asChild: boolean;
68
+ }, {}>;
69
+
70
+ declare const SIDE_OPTIONS: readonly ["top", "right", "bottom", "left"];
71
+ declare const ALIGN_OPTIONS: readonly ["start", "center", "end"];
72
+ type Side = (typeof SIDE_OPTIONS)[number];
73
+ type Align = (typeof ALIGN_OPTIONS)[number];
74
+ declare function isNotNull<T>(value: T | null): value is T;
75
+ declare function transformOrigin(options: {
76
+ arrowWidth: number;
77
+ arrowHeight: number;
78
+ }): Middleware;
79
+ declare function getSideAndAlignFromPlacement(placement: Placement): readonly ["top" | "right" | "bottom" | "left", "start" | "center" | "end"];
80
+
81
+ interface PopperContentContext {
82
+ placedSide: Ref<Side>;
83
+ onArrowChange(arrow: HTMLElement | undefined): void;
84
+ arrowX?: Ref<number>;
85
+ arrowY?: Ref<number>;
86
+ shouldHideArrow: Ref<boolean>;
87
+ }
88
+ declare const injectPopperContentContext: <T extends PopperContentContext | null | undefined = PopperContentContext>(fallback?: T | undefined) => T extends null ? PopperContentContext | null : PopperContentContext;
89
+ declare const providePopperContentContext: (contextValue: PopperContentContext) => PopperContentContext;
90
+ declare const destylerPopperContentProps: {
91
+ side: {
92
+ type: PropType<"top" | "right" | "bottom" | "left">;
93
+ required: boolean;
94
+ default: string;
95
+ };
96
+ sideOffset: {
97
+ type: PropType<number>;
98
+ required: boolean;
99
+ default: number;
100
+ };
101
+ align: {
102
+ type: PropType<"start" | "center" | "end">;
103
+ required: boolean;
104
+ default: string;
105
+ };
106
+ alignOffset: {
107
+ type: PropType<number>;
108
+ required: boolean;
109
+ default: number;
110
+ };
111
+ avoidCollisions: {
112
+ type: PropType<boolean>;
113
+ required: boolean;
114
+ default: boolean;
115
+ };
116
+ collisionBoundary: {
117
+ type: PropType<Element | (Element | null)[] | null>;
118
+ required: boolean;
119
+ default: () => never[];
120
+ };
121
+ collisionPadding: {
122
+ type: PropType<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
123
+ required: boolean;
124
+ default: number;
125
+ };
126
+ arrowPadding: {
127
+ type: PropType<number>;
128
+ required: boolean;
129
+ default: number;
130
+ };
131
+ sticky: {
132
+ type: PropType<"partial" | "always">;
133
+ required: boolean;
134
+ default: string;
135
+ };
136
+ hideWhenDetached: {
137
+ type: PropType<boolean>;
138
+ required: boolean;
139
+ default: boolean;
140
+ };
141
+ updatePositionStrategy: {
142
+ type: PropType<"always" | "optimized">;
143
+ required: boolean;
144
+ default: string;
145
+ };
146
+ onPlaced: {
147
+ type: PropType<() => void>;
148
+ required: boolean;
149
+ };
150
+ prioritizePosition: {
151
+ type: PropType<boolean>;
152
+ required: boolean;
153
+ default: boolean;
154
+ };
155
+ as: {
156
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
157
+ required: boolean;
158
+ default: string;
159
+ };
160
+ asChild: {
161
+ type: PropType<boolean>;
162
+ required: boolean;
163
+ default: boolean;
164
+ };
165
+ };
166
+ declare const DestylerPopperContent: vue.DefineComponent<{
167
+ side: {
168
+ type: PropType<"top" | "right" | "bottom" | "left">;
169
+ required: boolean;
170
+ default: string;
171
+ };
172
+ sideOffset: {
173
+ type: PropType<number>;
174
+ required: boolean;
175
+ default: number;
176
+ };
177
+ align: {
178
+ type: PropType<"start" | "center" | "end">;
179
+ required: boolean;
180
+ default: string;
181
+ };
182
+ alignOffset: {
183
+ type: PropType<number>;
184
+ required: boolean;
185
+ default: number;
186
+ };
187
+ avoidCollisions: {
188
+ type: PropType<boolean>;
189
+ required: boolean;
190
+ default: boolean;
191
+ };
192
+ collisionBoundary: {
193
+ type: PropType<Element | (Element | null)[] | null>;
194
+ required: boolean;
195
+ default: () => never[];
196
+ };
197
+ collisionPadding: {
198
+ type: PropType<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
199
+ required: boolean;
200
+ default: number;
201
+ };
202
+ arrowPadding: {
203
+ type: PropType<number>;
204
+ required: boolean;
205
+ default: number;
206
+ };
207
+ sticky: {
208
+ type: PropType<"partial" | "always">;
209
+ required: boolean;
210
+ default: string;
211
+ };
212
+ hideWhenDetached: {
213
+ type: PropType<boolean>;
214
+ required: boolean;
215
+ default: boolean;
216
+ };
217
+ updatePositionStrategy: {
218
+ type: PropType<"always" | "optimized">;
219
+ required: boolean;
220
+ default: string;
221
+ };
222
+ onPlaced: {
223
+ type: PropType<() => void>;
224
+ required: boolean;
225
+ };
226
+ prioritizePosition: {
227
+ type: PropType<boolean>;
228
+ required: boolean;
229
+ default: boolean;
230
+ };
231
+ as: {
232
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
233
+ required: boolean;
234
+ default: string;
235
+ };
236
+ asChild: {
237
+ type: PropType<boolean>;
238
+ required: boolean;
239
+ default: boolean;
240
+ };
241
+ }, {
242
+ floatingRef: Ref<HTMLElement | undefined>;
243
+ floatingStyles: Readonly<Ref<{
244
+ position: _floating_ui_vue.Strategy;
245
+ top: string;
246
+ left: string;
247
+ transform?: string | undefined;
248
+ willChange?: string | undefined;
249
+ }>>;
250
+ isPositioned: Readonly<Ref<boolean>>;
251
+ contentZIndex: Ref<string>;
252
+ middlewareData: Readonly<Ref<_floating_ui_vue.MiddlewareData>>;
253
+ forwardRef: (ref: any) => void;
254
+ customElement: Ref<ComponentPublicInstance | undefined>;
255
+ placedSide: vue.ComputedRef<"top" | "right" | "bottom" | "left">;
256
+ placedAlign: vue.ComputedRef<"start" | "center" | "end">;
257
+ attrStyle: any;
258
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
259
+ side: {
260
+ type: PropType<"top" | "right" | "bottom" | "left">;
261
+ required: boolean;
262
+ default: string;
263
+ };
264
+ sideOffset: {
265
+ type: PropType<number>;
266
+ required: boolean;
267
+ default: number;
268
+ };
269
+ align: {
270
+ type: PropType<"start" | "center" | "end">;
271
+ required: boolean;
272
+ default: string;
273
+ };
274
+ alignOffset: {
275
+ type: PropType<number>;
276
+ required: boolean;
277
+ default: number;
278
+ };
279
+ avoidCollisions: {
280
+ type: PropType<boolean>;
281
+ required: boolean;
282
+ default: boolean;
283
+ };
284
+ collisionBoundary: {
285
+ type: PropType<Element | (Element | null)[] | null>;
286
+ required: boolean;
287
+ default: () => never[];
288
+ };
289
+ collisionPadding: {
290
+ type: PropType<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
291
+ required: boolean;
292
+ default: number;
293
+ };
294
+ arrowPadding: {
295
+ type: PropType<number>;
296
+ required: boolean;
297
+ default: number;
298
+ };
299
+ sticky: {
300
+ type: PropType<"partial" | "always">;
301
+ required: boolean;
302
+ default: string;
303
+ };
304
+ hideWhenDetached: {
305
+ type: PropType<boolean>;
306
+ required: boolean;
307
+ default: boolean;
308
+ };
309
+ updatePositionStrategy: {
310
+ type: PropType<"always" | "optimized">;
311
+ required: boolean;
312
+ default: string;
313
+ };
314
+ onPlaced: {
315
+ type: PropType<() => void>;
316
+ required: boolean;
317
+ };
318
+ prioritizePosition: {
319
+ type: PropType<boolean>;
320
+ required: boolean;
321
+ default: boolean;
322
+ };
323
+ as: {
324
+ type: PropType<_destyler_primitive.AsTag | vue.Component>;
325
+ required: boolean;
326
+ default: string;
327
+ };
328
+ asChild: {
329
+ type: PropType<boolean>;
330
+ required: boolean;
331
+ default: boolean;
332
+ };
333
+ }>>, {
334
+ as: _destyler_primitive.AsTag | vue.Component;
335
+ asChild: boolean;
336
+ side: "top" | "right" | "bottom" | "left";
337
+ align: "start" | "center" | "end";
338
+ sideOffset: number;
339
+ alignOffset: number;
340
+ avoidCollisions: boolean;
341
+ collisionBoundary: Element | (Element | null)[] | null;
342
+ collisionPadding: number | Partial<Record<"top" | "right" | "bottom" | "left", number>>;
343
+ arrowPadding: number;
344
+ sticky: "partial" | "always";
345
+ hideWhenDetached: boolean;
346
+ updatePositionStrategy: "always" | "optimized";
347
+ prioritizePosition: boolean;
348
+ }, {}>;
349
+
350
+ declare const OPPOSITE_SIDE: Record<Side, Side>;
351
+ declare const destylerPopperArrowProps: {
352
+ as: {
353
+ type: PropType<AsTag | Component>;
354
+ required: boolean;
355
+ default: string;
356
+ };
357
+ width: {
358
+ type: PropType<number>;
359
+ required: boolean;
360
+ default: number;
361
+ };
362
+ height: {
363
+ type: PropType<number>;
364
+ required: boolean;
365
+ default: number;
366
+ };
367
+ asChild: {
368
+ type: PropType<boolean>;
369
+ required: boolean;
370
+ default: boolean;
371
+ };
372
+ };
373
+ declare const DestylerPopperArrow: vue.DefineComponent<{
374
+ as: {
375
+ type: PropType<AsTag | Component>;
376
+ required: boolean;
377
+ default: string;
378
+ };
379
+ width: {
380
+ type: PropType<number>;
381
+ required: boolean;
382
+ default: number;
383
+ };
384
+ height: {
385
+ type: PropType<number>;
386
+ required: boolean;
387
+ default: number;
388
+ };
389
+ asChild: {
390
+ type: PropType<boolean>;
391
+ required: boolean;
392
+ default: boolean;
393
+ };
394
+ }, {
395
+ contentContext: PopperContentContext;
396
+ baseSide: vue.ComputedRef<"top" | "right" | "bottom" | "left">;
397
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
398
+ as: {
399
+ type: PropType<AsTag | Component>;
400
+ required: boolean;
401
+ default: string;
402
+ };
403
+ width: {
404
+ type: PropType<number>;
405
+ required: boolean;
406
+ default: number;
407
+ };
408
+ height: {
409
+ type: PropType<number>;
410
+ required: boolean;
411
+ default: number;
412
+ };
413
+ asChild: {
414
+ type: PropType<boolean>;
415
+ required: boolean;
416
+ default: boolean;
417
+ };
418
+ }>>, {
419
+ as: AsTag | Component;
420
+ asChild: boolean;
421
+ width: number;
422
+ height: number;
423
+ }, {}>;
424
+
425
+ declare function DestylerPopperResolver(): ComponentResolver;
426
+
427
+ export { type Align, DestylerPopperAnchor, DestylerPopperArrow, DestylerPopperContent, DestylerPopperResolver, DestylerPopperRoot, type Measurable, OPPOSITE_SIDE, type PopperContentContext, type Side, destylerPopperAnchorProps, destylerPopperArrowProps, destylerPopperContentProps, getSideAndAlignFromPlacement, injectPopperContentContext, injectPopperRootContext, isNotNull, providePopperContentContext, providePopperRootContext, transformOrigin };