@cck-ui/hooks 0.29.0 → 0.31.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/cjs/index.cjs CHANGED
@@ -6,6 +6,7 @@ const require_use_disclosure = require("./use-disclosure/use-disclosure.cjs");
6
6
  const require_use_id = require("./use-id/use-id.cjs");
7
7
  const require_use_isomorphic_effect = require("./use-isomorphic-effect/use-isomorphic-effect.cjs");
8
8
  const require_use_splitter = require("./use-splitter/use-splitter.cjs");
9
+ const require_use_window_scroll = require("./use-window-scroll/use-window-scroll.cjs");
9
10
  exports.useClipboard = require_use_clipboard.useClipboard;
10
11
  exports.useDisclosure = require_use_disclosure.useDisclosure;
11
12
  exports.useFocusTrap = require_use_focus_trap.useFocusTrap;
@@ -13,3 +14,4 @@ exports.useId = require_use_id.useId;
13
14
  exports.useIsomorphicEffect = require_use_isomorphic_effect.useIsomorphicEffect;
14
15
  exports.useSplitter = require_use_splitter.useSplitter;
15
16
  exports.useTimeoutFn = require_use_timeout_fn.useTimeoutFn;
17
+ exports.useWindowScroll = require_use_window_scroll.useWindowScroll;
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ let vue = require("vue");
3
+ //#region packages/@cck-ui/hooks/src/use-window-scroll/use-window-scroll.ts
4
+ function useWindowScroll() {
5
+ const x = (0, vue.ref)(0);
6
+ const y = (0, vue.ref)(0);
7
+ const updatePosition = () => {
8
+ if (typeof window !== "undefined") {
9
+ x.value = window.scrollX;
10
+ y.value = window.scrollY;
11
+ }
12
+ };
13
+ const scrollTo = ({ x: left, y: top }) => {
14
+ if (typeof window !== "undefined") {
15
+ const options = { behavior: "smooth" };
16
+ if (typeof left === "number") options.left = left;
17
+ if (typeof top === "number") options.top = top;
18
+ window.scrollTo(options);
19
+ }
20
+ };
21
+ (0, vue.onMounted)(() => {
22
+ updatePosition();
23
+ window.addEventListener("scroll", updatePosition, { passive: true });
24
+ window.addEventListener("resize", updatePosition, { passive: true });
25
+ });
26
+ (0, vue.onUnmounted)(() => {
27
+ window.removeEventListener("scroll", updatePosition);
28
+ window.removeEventListener("resize", updatePosition);
29
+ });
30
+ return {
31
+ x,
32
+ y,
33
+ scrollTo
34
+ };
35
+ }
36
+ //#endregion
37
+ exports.useWindowScroll = useWindowScroll;
38
+
39
+ //# sourceMappingURL=use-window-scroll.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-window-scroll.cjs","names":[],"sources":["../../src/use-window-scroll/use-window-scroll.ts"],"sourcesContent":["import { onMounted, onUnmounted, Ref, ref } from 'vue'\n\nexport interface UseWindowScrollPosition {\n x: number\n y: number\n}\n\nexport type UseWindowScrollTo = (position: Partial<UseWindowScrollPosition>) => void\n\nexport type UseWindowScrollReturnValue = {\n x: Ref<number>\n y: Ref<number>\n scrollTo: UseWindowScrollTo\n}\n\nexport function useWindowScroll(): UseWindowScrollReturnValue {\n const x = ref(0)\n const y = ref(0)\n\n const updatePosition = () => {\n if (typeof window !== 'undefined') {\n x.value = window.scrollX\n y.value = window.scrollY\n }\n }\n\n const scrollTo: UseWindowScrollTo = ({ x: left, y: top }) => {\n if (typeof window !== 'undefined') {\n const options: ScrollToOptions = { behavior: 'smooth' }\n if (typeof left === 'number') {\n options.left = left\n }\n if (typeof top === 'number') {\n options.top = top\n }\n window.scrollTo(options)\n }\n }\n\n onMounted(() => {\n updatePosition()\n window.addEventListener('scroll', updatePosition, { passive: true })\n window.addEventListener('resize', updatePosition, { passive: true })\n })\n\n onUnmounted(() => {\n window.removeEventListener('scroll', updatePosition)\n window.removeEventListener('resize', updatePosition)\n })\n\n return { x, y, scrollTo }\n}\n"],"mappings":";;;AAeA,SAAgB,kBAA8C;CAC5D,MAAM,KAAA,GAAA,IAAA,IAAA,CAAQ,CAAC;CACf,MAAM,KAAA,GAAA,IAAA,IAAA,CAAQ,CAAC;CAEf,MAAM,uBAAuB;EAC3B,IAAI,OAAO,WAAW,aAAa;GACjC,EAAE,QAAQ,OAAO;GACjB,EAAE,QAAQ,OAAO;EACnB;CACF;CAEA,MAAM,YAA+B,EAAE,GAAG,MAAM,GAAG,UAAU;EAC3D,IAAI,OAAO,WAAW,aAAa;GACjC,MAAM,UAA2B,EAAE,UAAU,SAAS;GACtD,IAAI,OAAO,SAAS,UAClB,QAAQ,OAAO;GAEjB,IAAI,OAAO,QAAQ,UACjB,QAAQ,MAAM;GAEhB,OAAO,SAAS,OAAO;EACzB;CACF;CAEA,CAAA,GAAA,IAAA,UAAA,OAAgB;EACd,eAAe;EACf,OAAO,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;EACnE,OAAO,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;CACrE,CAAC;CAED,CAAA,GAAA,IAAA,YAAA,OAAkB;EAChB,OAAO,oBAAoB,UAAU,cAAc;EACnD,OAAO,oBAAoB,UAAU,cAAc;CACrD,CAAC;CAED,OAAO;EAAE;EAAG;EAAG;CAAS;AAC1B"}
package/esm/index.mjs CHANGED
@@ -5,4 +5,5 @@ import { useDisclosure } from "./use-disclosure/use-disclosure.mjs";
5
5
  import { useId } from "./use-id/use-id.mjs";
6
6
  import { useIsomorphicEffect } from "./use-isomorphic-effect/use-isomorphic-effect.mjs";
7
7
  import { useSplitter } from "./use-splitter/use-splitter.mjs";
8
- export { useClipboard, useDisclosure, useFocusTrap, useId, useIsomorphicEffect, useSplitter, useTimeoutFn };
8
+ import { useWindowScroll } from "./use-window-scroll/use-window-scroll.mjs";
9
+ export { useClipboard, useDisclosure, useFocusTrap, useId, useIsomorphicEffect, useSplitter, useTimeoutFn, useWindowScroll };
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { onMounted, onUnmounted, ref } from "vue";
3
+ //#region packages/@cck-ui/hooks/src/use-window-scroll/use-window-scroll.ts
4
+ function useWindowScroll() {
5
+ const x = ref(0);
6
+ const y = ref(0);
7
+ const updatePosition = () => {
8
+ if (typeof window !== "undefined") {
9
+ x.value = window.scrollX;
10
+ y.value = window.scrollY;
11
+ }
12
+ };
13
+ const scrollTo = ({ x: left, y: top }) => {
14
+ if (typeof window !== "undefined") {
15
+ const options = { behavior: "smooth" };
16
+ if (typeof left === "number") options.left = left;
17
+ if (typeof top === "number") options.top = top;
18
+ window.scrollTo(options);
19
+ }
20
+ };
21
+ onMounted(() => {
22
+ updatePosition();
23
+ window.addEventListener("scroll", updatePosition, { passive: true });
24
+ window.addEventListener("resize", updatePosition, { passive: true });
25
+ });
26
+ onUnmounted(() => {
27
+ window.removeEventListener("scroll", updatePosition);
28
+ window.removeEventListener("resize", updatePosition);
29
+ });
30
+ return {
31
+ x,
32
+ y,
33
+ scrollTo
34
+ };
35
+ }
36
+ //#endregion
37
+ export { useWindowScroll };
38
+
39
+ //# sourceMappingURL=use-window-scroll.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-window-scroll.mjs","names":[],"sources":["../../src/use-window-scroll/use-window-scroll.ts"],"sourcesContent":["import { onMounted, onUnmounted, Ref, ref } from 'vue'\n\nexport interface UseWindowScrollPosition {\n x: number\n y: number\n}\n\nexport type UseWindowScrollTo = (position: Partial<UseWindowScrollPosition>) => void\n\nexport type UseWindowScrollReturnValue = {\n x: Ref<number>\n y: Ref<number>\n scrollTo: UseWindowScrollTo\n}\n\nexport function useWindowScroll(): UseWindowScrollReturnValue {\n const x = ref(0)\n const y = ref(0)\n\n const updatePosition = () => {\n if (typeof window !== 'undefined') {\n x.value = window.scrollX\n y.value = window.scrollY\n }\n }\n\n const scrollTo: UseWindowScrollTo = ({ x: left, y: top }) => {\n if (typeof window !== 'undefined') {\n const options: ScrollToOptions = { behavior: 'smooth' }\n if (typeof left === 'number') {\n options.left = left\n }\n if (typeof top === 'number') {\n options.top = top\n }\n window.scrollTo(options)\n }\n }\n\n onMounted(() => {\n updatePosition()\n window.addEventListener('scroll', updatePosition, { passive: true })\n window.addEventListener('resize', updatePosition, { passive: true })\n })\n\n onUnmounted(() => {\n window.removeEventListener('scroll', updatePosition)\n window.removeEventListener('resize', updatePosition)\n })\n\n return { x, y, scrollTo }\n}\n"],"mappings":";;;AAeA,SAAgB,kBAA8C;CAC5D,MAAM,IAAI,IAAI,CAAC;CACf,MAAM,IAAI,IAAI,CAAC;CAEf,MAAM,uBAAuB;EAC3B,IAAI,OAAO,WAAW,aAAa;GACjC,EAAE,QAAQ,OAAO;GACjB,EAAE,QAAQ,OAAO;EACnB;CACF;CAEA,MAAM,YAA+B,EAAE,GAAG,MAAM,GAAG,UAAU;EAC3D,IAAI,OAAO,WAAW,aAAa;GACjC,MAAM,UAA2B,EAAE,UAAU,SAAS;GACtD,IAAI,OAAO,SAAS,UAClB,QAAQ,OAAO;GAEjB,IAAI,OAAO,QAAQ,UACjB,QAAQ,MAAM;GAEhB,OAAO,SAAS,OAAO;EACzB;CACF;CAEA,gBAAgB;EACd,eAAe;EACf,OAAO,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;EACnE,OAAO,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;CACrE,CAAC;CAED,kBAAkB;EAChB,OAAO,oBAAoB,UAAU,cAAc;EACnD,OAAO,oBAAoB,UAAU,cAAc;CACrD,CAAC;CAED,OAAO;EAAE;EAAG;EAAG;CAAS;AAC1B"}
package/lib/index.d.mts CHANGED
@@ -5,5 +5,7 @@ export { useId } from './use-id/use-id';
5
5
  export { useIsomorphicEffect } from './use-isomorphic-effect/use-isomorphic-effect';
6
6
  export { useSplitter } from './use-splitter/use-splitter';
7
7
  export { useTimeoutFn } from './use-timeout-fn/use-timeout-fn';
8
+ export { useWindowScroll } from './use-window-scroll/use-window-scroll';
8
9
  export type { UseDisclosureHandlers, UseDisclosureOptions, UseDisclosureReturnValue, } from './use-disclosure/use-disclosure';
9
10
  export type { UseSplitterPanel, UseSplitterOptions, UseSplitterReturnValue, UseSplitterRedistributeInput, UseSplitterRedistributeFn, UseSplitterResolvedPanel, SplitterPaneSize, SplitterStep, } from './use-splitter/use-splitter';
11
+ export type { UseWindowScrollPosition, UseWindowScrollReturnValue, UseWindowScrollTo, } from './use-window-scroll/use-window-scroll';
package/lib/index.d.ts CHANGED
@@ -5,5 +5,7 @@ export { useId } from './use-id/use-id';
5
5
  export { useIsomorphicEffect } from './use-isomorphic-effect/use-isomorphic-effect';
6
6
  export { useSplitter } from './use-splitter/use-splitter';
7
7
  export { useTimeoutFn } from './use-timeout-fn/use-timeout-fn';
8
+ export { useWindowScroll } from './use-window-scroll/use-window-scroll';
8
9
  export type { UseDisclosureHandlers, UseDisclosureOptions, UseDisclosureReturnValue, } from './use-disclosure/use-disclosure';
9
10
  export type { UseSplitterPanel, UseSplitterOptions, UseSplitterReturnValue, UseSplitterRedistributeInput, UseSplitterRedistributeFn, UseSplitterResolvedPanel, SplitterPaneSize, SplitterStep, } from './use-splitter/use-splitter';
11
+ export type { UseWindowScrollPosition, UseWindowScrollReturnValue, UseWindowScrollTo, } from './use-window-scroll/use-window-scroll';
@@ -0,0 +1,12 @@
1
+ import { Ref } from 'vue';
2
+ export interface UseWindowScrollPosition {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export type UseWindowScrollTo = (position: Partial<UseWindowScrollPosition>) => void;
7
+ export type UseWindowScrollReturnValue = {
8
+ x: Ref<number>;
9
+ y: Ref<number>;
10
+ scrollTo: UseWindowScrollTo;
11
+ };
12
+ export declare function useWindowScroll(): UseWindowScrollReturnValue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cck-ui/hooks",
3
- "version": "0.29.0",
3
+ "version": "0.31.0",
4
4
  "description": "A collection of hooks for state and UI management",
5
5
  "homepage": "https://cck-ui.jackatlas.xyz",
6
6
  "license": "ISC",