v-float 0.1.0 → 0.2.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 CHANGED
@@ -1,6 +1,7 @@
1
1
  # V-Float
2
2
 
3
- A Vue 3 library for positioning floating UI elements like tooltips, popovers, dropdowns, and modals. Built on top of [VFloat](https://vfloat.pages.com/) with Vue 3 Composition API.
3
+ A Vue 3 library for positioning floating UI elements like tooltips, popovers, dropdowns, and modals. Built on top
4
+ of [VFloat](https://vfloat.pages.com/) with Vue 3 Composition API.
4
5
 
5
6
  ## Features
6
7
 
@@ -31,19 +32,20 @@ yarn add v-float
31
32
  ### Basic Tooltip
32
33
 
33
34
  ```vue
35
+
34
36
  <script setup lang="ts">
35
- import { useTemplateRef } from "vue"
36
- import { useFloating, useHover, offset } from "v-float"
37
+ import { useTemplateRef } from "vue"
38
+ import { useFloating, useHover, offset } from "v-float"
37
39
 
38
- const anchorEl = useTemplateRef("anchorEl")
39
- const floatingEl = useTemplateRef("floatingEl")
40
+ const anchorEl = useTemplateRef("anchorEl")
41
+ const floatingEl = useTemplateRef("floatingEl")
40
42
 
41
- const context = useFloating(anchorEl, floatingEl, {
42
- placement: "top",
43
- middlewares: [offset(8)],
44
- })
43
+ const context = useFloating(anchorEl, floatingEl, {
44
+ placement: "top",
45
+ middlewares: [offset(8)],
46
+ })
45
47
 
46
- useHover(context)
48
+ useHover(context)
47
49
  </script>
48
50
 
49
51
  <template>
@@ -58,20 +60,21 @@ useHover(context)
58
60
  ### Dropdown Menu
59
61
 
60
62
  ```vue
63
+
61
64
  <script setup lang="ts">
62
- import { useTemplateRef } from "vue"
63
- import { useFloating, useClick, useDismiss, offset, flip, shift } from "v-float"
65
+ import { useTemplateRef } from "vue"
66
+ import { useFloating, useClick, useDismiss, offset, flip, shift } from "v-float"
64
67
 
65
- const triggerEl = useTemplateRef("triggerEl")
66
- const menuEl = useTemplateRef("menuEl")
68
+ const triggerEl = useTemplateRef("triggerEl")
69
+ const menuEl = useTemplateRef("menuEl")
67
70
 
68
- const context = useFloating(triggerEl, menuEl, {
69
- placement: "bottom-start",
70
- middlewares: [offset(4), flip(), shift({ padding: 8 })],
71
- })
71
+ const context = useFloating(triggerEl, menuEl, {
72
+ placement: "bottom-start",
73
+ middlewares: [offset(4), flip(), shift({ padding: 8 })],
74
+ })
72
75
 
73
- useClick(context)
74
- useDismiss(context)
76
+ useClick(context)
77
+ useDismiss(context)
75
78
  </script>
76
79
 
77
80
  <template>
@@ -118,12 +121,13 @@ All [Floating UI middleware](https://floating-ui.com/docs/middleware) are suppor
118
121
  Pre-built SVG arrow component with automatic positioning:
119
122
 
120
123
  ```vue
124
+
121
125
  <script setup lang="ts">
122
- import { FloatingArrow, useFloating, useArrow } from "v-float"
126
+ import { FloatingArrow, useFloating, useArrow } from "v-float"
123
127
 
124
- const context = useFloating(anchorEl, floatingEl, {
125
- middlewares: [arrow({ element: arrowEl })],
126
- })
128
+ const context = useFloating(anchorEl, floatingEl, {
129
+ middlewares: [arrow({ element: arrowEl })],
130
+ })
127
131
  </script>
128
132
 
129
133
  <template>
@@ -138,59 +142,90 @@ const context = useFloating(anchorEl, floatingEl, {
138
142
 
139
143
  ### Floating Trees
140
144
 
141
- For nested floating elements like submenus:
142
-
143
- ```vue
144
- <script setup lang="ts">
145
- import { useFloatingTree, useFloating } from "v-float"
146
-
147
- // Parent menu
148
- const parentTree = useFloatingTree()
149
- const parentContext = useFloating(triggerEl, menuEl, {
150
- tree: parentTree,
151
- })
152
-
153
- // Submenu
154
- const submenuContext = useFloating(submenuTriggerEl, submenuEl, {
155
- tree: parentTree,
156
- })
157
- </script>
158
- ```
159
-
160
- ### Virtual Elements
145
+ For nested floating elements like submenus, you need to manage the tree structure explicitly. `useFloating` creates
146
+ contexts for individual floating elements, and `useFloatingTree` manages their hierarchical relationship.
161
147
 
162
- Position relative to virtual coordinates:
148
+ Here's how you can set up a parent menu with a submenu:
163
149
 
164
150
  ```vue
151
+
165
152
  <script setup lang="ts">
166
- import { useFloating, useClientPoint } from "v-float"
167
-
168
- const virtualEl = ref({
169
- getBoundingClientRect: () => ({
170
- x: 100,
171
- y: 100,
172
- width: 0,
173
- height: 0,
174
- top: 100,
175
- left: 100,
176
- right: 100,
177
- bottom: 100,
178
- }),
179
- })
180
-
181
- const context = useFloating(virtualEl, floatingEl)
182
- useClientPoint(context) // Follow mouse cursor
153
+ import { useTemplateRef } from "vue";
154
+ import { useFloating, useFloatingTree, offset } from "v-float";
155
+
156
+ const parentTriggerEl = useTemplateRef("parentTriggerRef");
157
+ const parentMenuEl = useTemplateRef("parentMenuRef");
158
+
159
+ const submenuTriggerEl = useTemplateRef("submenuTriggerRef");
160
+ const submenuEl = useTemplateRef("submenuRef");
161
+
162
+ // 1. Create the floating context for the parent menu.
163
+ const parentContext = useFloating(parentTriggerEl, parentMenuEl, {
164
+ placement: "bottom-start",
165
+ middlewares: [offset(4)],
166
+ });
167
+
168
+ // 2. Create the floating tree, using the parent's context as the data for the root node.
169
+ // useFloatingTree will create a root TreeNode whose `data` is parentContext.
170
+ const tree = useFloatingTree(parentContext);
171
+
172
+ // 3. Create the floating context for the submenu.
173
+ const submenuContext = useFloating(submenuTriggerEl, submenuEl, {
174
+ placement: "right-start",
175
+ middlewares: [offset(4)],
176
+ });
177
+
178
+ // 4. Add the submenu to the tree as a child of the parent menu.
179
+ // tree.root refers to the TreeNode associated with parentContext.
180
+ const submenuNode = tree.addNode(submenuContext, tree.root.id);
181
+ // submenuNode is the TreeNode for the submenu. You can store it if needed.
183
182
  </script>
183
+
184
+ <template>
185
+ <!-- Parent Menu Trigger -->
186
+ <button ref="parentTriggerRef">Open Menu</button>
187
+
188
+ <!-- Parent Menu Floating Element -->
189
+ <div
190
+ v-if="parentContext.open.value"
191
+ ref="parentMenuRef"
192
+ :style="parentContext.floatingStyles.value"
193
+ style="background-color: #f0f0f0; border: 1px solid #ccc; padding: 5px; z-index: 1000;"
194
+ >
195
+ <div>Parent Menu Item 1</div>
196
+
197
+ <!-- Submenu Trigger (an item within the parent menu) -->
198
+ <div
199
+ ref="submenuTriggerRef"
200
+ style="padding: 5px; cursor: pointer; hover: background-color: #e0e0e0;"
201
+ @mouseenter="() => submenuContext?.setOpen(true)" @mouseleave="() => submenuContext?.setOpen(false)"
202
+ <!-- Basic hover for example -->
203
+ >
204
+ Parent Menu Item 2 (Hover for Submenu)
205
+
206
+ <!-- Submenu Floating Element -->
207
+ <div
208
+ v-if="submenuContext.open.value"
209
+ ref="submenuRef"
210
+ :style="submenuContext.floatingStyles.value"
211
+ style="background-color: #e0e0e0; border: 1px solid #bbb; padding: 5px; margin-left: 10px; z-index: 1010;"
212
+ >
213
+ <div>Submenu Item A</div>
214
+ <div>Submenu Item B</div>
215
+ </div>
216
+ </div>
217
+ </template>
184
218
  ```
185
219
 
220
+ This example demonstrates the manual process of creating contexts and then linking them within the tree. For more
221
+ complex scenarios, you would integrate interaction composables (`useClick`, `useHover`, `useDismiss`) to manage the
222
+ `open` state of each context, potentially using tree methods like `tree.isTopmost()` or `tree.forEach()` to coordinate
223
+ behavior (e.g., closing child menus when a parent closes).
224
+
186
225
  ## TypeScript Support
187
226
 
188
227
  V-Float is built with TypeScript and provides comprehensive type definitions:
189
228
 
190
- ```typescript
191
- import type { FloatingContext, UseFloatingOptions, AnchorElement, FloatingElement } from "v-float"
192
- ```
193
-
194
229
  ## Browser Support
195
230
 
196
231
  - **Modern browsers**: Chrome, Firefox, Safari, Edge
@@ -199,11 +234,12 @@ import type { FloatingContext, UseFloatingOptions, AnchorElement, FloatingElemen
199
234
 
200
235
  ## Documentation
201
236
 
202
- For complete documentation with interactive examples, visit the [V-Float Documentation](https://v-float.com).
237
+ For complete documentation with interactive examples, visit the [V-Float Documentation](https://vfloat.pages.dev/).
203
238
 
204
239
  ## Contributing
205
240
 
206
- Contributions are welcome! Please read our contributing guidelines and submit pull requests to our [GitHub repository](https://github.com/v-float/v-float).
241
+ Contributions are welcome! Please read our contributing guidelines and submit pull requests to
242
+ our [GitHub repository](https://github.com/sherif414/VFloat).
207
243
 
208
244
  ## License
209
245
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-dismiss.d.ts","sourceRoot":"","sources":["../../../src/composables/interactions/use-dismiss.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAkD,MAAM,KAAK,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAQtD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAAA;AAE/F,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEnC;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAErC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAA;IAE3E;;;OAGG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAEnE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAA;IAExD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAA;CAC1D;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAqIxF"}
1
+ {"version":3,"file":"use-dismiss.d.ts","sourceRoot":"","sources":["../../../src/composables/interactions/use-dismiss.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAuD,MAAM,KAAK,CAAA;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAMtD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAAA;AAE/F,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEnC;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAErC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAA;IAE3E;;;OAGG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAEnE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAA;IAExD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAA;CAC1D;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAqIxF"}
@@ -22,8 +22,15 @@ export interface UseArrowReturn {
22
22
  */
23
23
  export interface UseArrowOptions {
24
24
  /**
25
- * The offset for the arrow positioning.
26
- * Defaults to "-12px" if not provided.
25
+ * Controls the offset of the arrow from the edge of the floating element.
26
+ *
27
+ * A positive value moves the arrow further into the floating element,
28
+ * while a negative value creates a gap between the arrow and the element.
29
+ * This is useful for preventing the arrow from overlapping borders or shadows.
30
+ *
31
+ * The value must be a valid CSS length (e.g., '5px', '-0.5rem').
32
+ *
33
+ * @default '-4px'
27
34
  */
28
35
  offset?: string;
29
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-arrow.d.ts","sourceRoot":"","sources":["../../src/composables/use-arrow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAMrD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAE3B;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAE3B;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CA8BhG"}
1
+ {"version":3,"file":"use-arrow.d.ts","sourceRoot":"","sources":["../../src/composables/use-arrow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAMrD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAE3B;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAE3B;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CA8ChG"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-floating.d.ts","sourceRoot":"","sources":["../../src/composables/use-floating.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-floating.d.ts","sourceRoot":"","sources":["../../src/composables/use-floating.ts"],"names":[],"mappings":"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"}
@@ -42,13 +42,6 @@ export declare class TreeNode<T> {
42
42
  * @returns True if the child was found and removed, false otherwise.
43
43
  */
44
44
  _removeChildInstance(childNode: TreeNode<T>): boolean;
45
- /**
46
- * Updates the node's data.
47
- * If T is an object, performs a shallow merge using Object.assign.
48
- * If T is a primitive, replaces the value.
49
- * @param newData Partial data for objects, or the new value for primitives.
50
- */
51
- updateData(newData: Partial<T> | T): void;
52
45
  /**
53
46
  * Finds the first direct child matching the predicate.
54
47
  * @param predicate Function to test each child node.
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["../../src/composables/use-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["../../src/composables/use-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA+B,MAAM,KAAK,CAAA;AAO3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;CACxC;AAQD;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC;;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBAI1B,IAAI,EAAE,CAAC,EACP,MAAM,GAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAW,EACjC,OAAO,GAAE,eAAoB,EAC7B,MAAM,UAAQ;IAShB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAKtC;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;IAQrD;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxE;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAgB7E;;;;OAIG;IACH,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;IAWvD;;;OAGG;IACH,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;IAUxB,uFAAuF;IACvF,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,2DAA2D;IAC3D,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF;AAMD;;;;;;;;GAQG;AACH,qBAAa,IAAI,CAAC,CAAC;;IACjB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAIpD;;;;;;;;;;OAUG;gBACS,eAAe,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAQrD;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5C;;;;;;OAMG;IACH,OAAO,CACL,IAAI,EAAE,CAAC,EACP,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,WAAW,GAAE,eAAoB,GAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAqBrB;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO;IAiC5E;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAqD7D;;;;;OAKG;IACH,QAAQ,CACN,QAAQ,GAAE,KAAK,GAAG,KAAa,EAC/B,SAAS,GAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAgB,GACxC,QAAQ,CAAC,CAAC,CAAC,EAAE;IAgChB;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
@@ -0,0 +1,14 @@
1
+ import { AnyFn } from './types';
2
+ /**
3
+ * Generates a unique ID.
4
+ * The ID is incremented with each call.
5
+ * @returns A unique string ID.
6
+ */
7
+ export declare function useId(): string;
8
+ /**
9
+ * Checks if a value is a function
10
+ * @param value - The value to check
11
+ * @returns True if the value is a function, false otherwise
12
+ */
13
+ export declare function isFunction(value: unknown): value is AnyFn;
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEzD"}