@usels/core 0.0.1
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 +21 -0
- package/dist/browser/useEventListener/index.d.mts +56 -0
- package/dist/browser/useEventListener/index.d.ts +56 -0
- package/dist/browser/useEventListener/index.js +112 -0
- package/dist/browser/useEventListener/index.js.map +1 -0
- package/dist/browser/useEventListener/index.mjs +88 -0
- package/dist/browser/useEventListener/index.mjs.map +1 -0
- package/dist/browser/useMediaQuery/demo.d.mts +5 -0
- package/dist/browser/useMediaQuery/demo.d.ts +5 -0
- package/dist/browser/useMediaQuery/demo.js +83 -0
- package/dist/browser/useMediaQuery/demo.js.map +1 -0
- package/dist/browser/useMediaQuery/demo.mjs +63 -0
- package/dist/browser/useMediaQuery/demo.mjs.map +1 -0
- package/dist/browser/useMediaQuery/index.d.mts +11 -0
- package/dist/browser/useMediaQuery/index.d.ts +11 -0
- package/dist/browser/useMediaQuery/index.js +89 -0
- package/dist/browser/useMediaQuery/index.js.map +1 -0
- package/dist/browser/useMediaQuery/index.mjs +64 -0
- package/dist/browser/useMediaQuery/index.mjs.map +1 -0
- package/dist/components/Auto/index.d.mts +33 -0
- package/dist/components/Auto/index.d.ts +33 -0
- package/dist/components/Auto/index.js +66 -0
- package/dist/components/Auto/index.js.map +1 -0
- package/dist/components/Auto/index.mjs +34 -0
- package/dist/components/Auto/index.mjs.map +1 -0
- package/dist/elements/useDocumentVisibility/demo.d.mts +5 -0
- package/dist/elements/useDocumentVisibility/demo.d.ts +5 -0
- package/dist/elements/useDocumentVisibility/demo.js +130 -0
- package/dist/elements/useDocumentVisibility/demo.js.map +1 -0
- package/dist/elements/useDocumentVisibility/demo.mjs +114 -0
- package/dist/elements/useDocumentVisibility/demo.mjs.map +1 -0
- package/dist/elements/useDocumentVisibility/index.d.mts +5 -0
- package/dist/elements/useDocumentVisibility/index.d.ts +5 -0
- package/dist/elements/useDocumentVisibility/index.js +45 -0
- package/dist/elements/useDocumentVisibility/index.js.map +1 -0
- package/dist/elements/useDocumentVisibility/index.mjs +21 -0
- package/dist/elements/useDocumentVisibility/index.mjs.map +1 -0
- package/dist/elements/useElementBounding/demo.d.mts +5 -0
- package/dist/elements/useElementBounding/demo.d.ts +5 -0
- package/dist/elements/useElementBounding/demo.js +87 -0
- package/dist/elements/useElementBounding/demo.js.map +1 -0
- package/dist/elements/useElementBounding/demo.mjs +67 -0
- package/dist/elements/useElementBounding/demo.mjs.map +1 -0
- package/dist/elements/useElementBounding/index.d.mts +46 -0
- package/dist/elements/useElementBounding/index.d.ts +46 -0
- package/dist/elements/useElementBounding/index.js +122 -0
- package/dist/elements/useElementBounding/index.js.map +1 -0
- package/dist/elements/useElementBounding/index.mjs +98 -0
- package/dist/elements/useElementBounding/index.mjs.map +1 -0
- package/dist/elements/useElementSize/demo.d.mts +5 -0
- package/dist/elements/useElementSize/demo.d.ts +5 -0
- package/dist/elements/useElementSize/demo.js +83 -0
- package/dist/elements/useElementSize/demo.js.map +1 -0
- package/dist/elements/useElementSize/demo.mjs +63 -0
- package/dist/elements/useElementSize/demo.mjs.map +1 -0
- package/dist/elements/useElementSize/index.d.mts +34 -0
- package/dist/elements/useElementSize/index.d.ts +34 -0
- package/dist/elements/useElementSize/index.js +85 -0
- package/dist/elements/useElementSize/index.js.map +1 -0
- package/dist/elements/useElementSize/index.mjs +61 -0
- package/dist/elements/useElementSize/index.mjs.map +1 -0
- package/dist/elements/useElementVisibility/demo.d.mts +5 -0
- package/dist/elements/useElementVisibility/demo.d.ts +5 -0
- package/dist/elements/useElementVisibility/demo.js +110 -0
- package/dist/elements/useElementVisibility/demo.js.map +1 -0
- package/dist/elements/useElementVisibility/demo.mjs +90 -0
- package/dist/elements/useElementVisibility/demo.mjs.map +1 -0
- package/dist/elements/useElementVisibility/index.d.mts +43 -0
- package/dist/elements/useElementVisibility/index.d.ts +43 -0
- package/dist/elements/useElementVisibility/index.js +58 -0
- package/dist/elements/useElementVisibility/index.js.map +1 -0
- package/dist/elements/useElementVisibility/index.mjs +34 -0
- package/dist/elements/useElementVisibility/index.mjs.map +1 -0
- package/dist/elements/useIntersectionObserver/demo.d.mts +5 -0
- package/dist/elements/useIntersectionObserver/demo.d.ts +5 -0
- package/dist/elements/useIntersectionObserver/demo.js +173 -0
- package/dist/elements/useIntersectionObserver/demo.js.map +1 -0
- package/dist/elements/useIntersectionObserver/demo.mjs +153 -0
- package/dist/elements/useIntersectionObserver/demo.mjs.map +1 -0
- package/dist/elements/useIntersectionObserver/index.d.mts +47 -0
- package/dist/elements/useIntersectionObserver/index.d.ts +47 -0
- package/dist/elements/useIntersectionObserver/index.js +111 -0
- package/dist/elements/useIntersectionObserver/index.js.map +1 -0
- package/dist/elements/useIntersectionObserver/index.mjs +87 -0
- package/dist/elements/useIntersectionObserver/index.mjs.map +1 -0
- package/dist/elements/useMouseInElement/demo.d.mts +5 -0
- package/dist/elements/useMouseInElement/demo.d.ts +5 -0
- package/dist/elements/useMouseInElement/demo.js +104 -0
- package/dist/elements/useMouseInElement/demo.js.map +1 -0
- package/dist/elements/useMouseInElement/demo.mjs +84 -0
- package/dist/elements/useMouseInElement/demo.mjs.map +1 -0
- package/dist/elements/useMouseInElement/index.d.mts +56 -0
- package/dist/elements/useMouseInElement/index.d.ts +56 -0
- package/dist/elements/useMouseInElement/index.js +148 -0
- package/dist/elements/useMouseInElement/index.js.map +1 -0
- package/dist/elements/useMouseInElement/index.mjs +124 -0
- package/dist/elements/useMouseInElement/index.mjs.map +1 -0
- package/dist/elements/useMutationObserver/demo.d.mts +5 -0
- package/dist/elements/useMutationObserver/demo.d.ts +5 -0
- package/dist/elements/useMutationObserver/demo.js +240 -0
- package/dist/elements/useMutationObserver/demo.js.map +1 -0
- package/dist/elements/useMutationObserver/demo.mjs +220 -0
- package/dist/elements/useMutationObserver/demo.mjs.map +1 -0
- package/dist/elements/useMutationObserver/index.d.mts +15 -0
- package/dist/elements/useMutationObserver/index.d.ts +15 -0
- package/dist/elements/useMutationObserver/index.js +69 -0
- package/dist/elements/useMutationObserver/index.js.map +1 -0
- package/dist/elements/useMutationObserver/index.mjs +45 -0
- package/dist/elements/useMutationObserver/index.mjs.map +1 -0
- package/dist/elements/useParentElement/demo.d.mts +5 -0
- package/dist/elements/useParentElement/demo.d.ts +5 -0
- package/dist/elements/useParentElement/demo.js +132 -0
- package/dist/elements/useParentElement/demo.js.map +1 -0
- package/dist/elements/useParentElement/demo.mjs +112 -0
- package/dist/elements/useParentElement/demo.mjs.map +1 -0
- package/dist/elements/useParentElement/index.d.mts +7 -0
- package/dist/elements/useParentElement/index.d.ts +7 -0
- package/dist/elements/useParentElement/index.js +47 -0
- package/dist/elements/useParentElement/index.js.map +1 -0
- package/dist/elements/useParentElement/index.mjs +23 -0
- package/dist/elements/useParentElement/index.mjs.map +1 -0
- package/dist/elements/useRef$/index.js +89 -0
- package/dist/elements/useRef$/index.js.map +1 -0
- package/dist/elements/useRef$/index.mjs +62 -0
- package/dist/elements/useRef$/index.mjs.map +1 -0
- package/dist/elements/useRef_/index.d.mts +60 -0
- package/dist/elements/useRef_/index.d.ts +60 -0
- package/dist/elements/useResizeObserver/demo.d.mts +5 -0
- package/dist/elements/useResizeObserver/demo.d.ts +5 -0
- package/dist/elements/useResizeObserver/demo.js +90 -0
- package/dist/elements/useResizeObserver/demo.js.map +1 -0
- package/dist/elements/useResizeObserver/demo.mjs +70 -0
- package/dist/elements/useResizeObserver/demo.mjs.map +1 -0
- package/dist/elements/useResizeObserver/index.d.mts +36 -0
- package/dist/elements/useResizeObserver/index.d.ts +36 -0
- package/dist/elements/useResizeObserver/index.js +74 -0
- package/dist/elements/useResizeObserver/index.js.map +1 -0
- package/dist/elements/useResizeObserver/index.mjs +49 -0
- package/dist/elements/useResizeObserver/index.mjs.map +1 -0
- package/dist/elements/useWindowFocus/demo.d.mts +5 -0
- package/dist/elements/useWindowFocus/demo.d.ts +5 -0
- package/dist/elements/useWindowFocus/demo.js +104 -0
- package/dist/elements/useWindowFocus/demo.js.map +1 -0
- package/dist/elements/useWindowFocus/demo.mjs +84 -0
- package/dist/elements/useWindowFocus/demo.mjs.map +1 -0
- package/dist/elements/useWindowFocus/index.d.mts +5 -0
- package/dist/elements/useWindowFocus/index.d.ts +5 -0
- package/dist/elements/useWindowFocus/index.js +42 -0
- package/dist/elements/useWindowFocus/index.js.map +1 -0
- package/dist/elements/useWindowFocus/index.mjs +18 -0
- package/dist/elements/useWindowFocus/index.mjs.map +1 -0
- package/dist/elements/useWindowSize/demo.d.mts +5 -0
- package/dist/elements/useWindowSize/demo.d.ts +5 -0
- package/dist/elements/useWindowSize/demo.js +79 -0
- package/dist/elements/useWindowSize/demo.js.map +1 -0
- package/dist/elements/useWindowSize/demo.mjs +59 -0
- package/dist/elements/useWindowSize/demo.mjs.map +1 -0
- package/dist/elements/useWindowSize/index.d.mts +17 -0
- package/dist/elements/useWindowSize/index.d.ts +17 -0
- package/dist/elements/useWindowSize/index.js +96 -0
- package/dist/elements/useWindowSize/index.js.map +1 -0
- package/dist/elements/useWindowSize/index.mjs +76 -0
- package/dist/elements/useWindowSize/index.mjs.map +1 -0
- package/dist/function/get/index.d.mts +45 -0
- package/dist/function/get/index.d.ts +45 -0
- package/dist/function/get/index.js +39 -0
- package/dist/function/get/index.js.map +1 -0
- package/dist/function/get/index.mjs +15 -0
- package/dist/function/get/index.mjs.map +1 -0
- package/dist/function/peek/index.d.mts +46 -0
- package/dist/function/peek/index.d.ts +46 -0
- package/dist/function/peek/index.js +39 -0
- package/dist/function/peek/index.js.map +1 -0
- package/dist/function/peek/index.mjs +15 -0
- package/dist/function/peek/index.mjs.map +1 -0
- package/dist/function/useMayObservableOptions/index.d.mts +59 -0
- package/dist/function/useMayObservableOptions/index.d.ts +59 -0
- package/dist/function/useMayObservableOptions/index.js +109 -0
- package/dist/function/useMayObservableOptions/index.js.map +1 -0
- package/dist/function/useMayObservableOptions/index.mjs +88 -0
- package/dist/function/useMayObservableOptions/index.mjs.map +1 -0
- package/dist/function/useSupported/index.d.mts +6 -0
- package/dist/function/useSupported/index.d.ts +6 -0
- package/dist/function/useSupported/index.js +37 -0
- package/dist/function/useSupported/index.js.map +1 -0
- package/dist/function/useSupported/index.mjs +13 -0
- package/dist/function/useSupported/index.mjs.map +1 -0
- package/dist/function/useWhenMounted/index.d.mts +6 -0
- package/dist/function/useWhenMounted/index.d.ts +6 -0
- package/dist/function/useWhenMounted/index.js +37 -0
- package/dist/function/useWhenMounted/index.js.map +1 -0
- package/dist/function/useWhenMounted/index.mjs +13 -0
- package/dist/function/useWhenMounted/index.mjs.map +1 -0
- package/dist/index.d.mts +24 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +22 -0
- package/dist/index.mjs.map +1 -0
- package/dist/sensors/useScroll/demo.d.mts +5 -0
- package/dist/sensors/useScroll/demo.d.ts +5 -0
- package/dist/sensors/useScroll/demo.js +122 -0
- package/dist/sensors/useScroll/demo.js.map +1 -0
- package/dist/sensors/useScroll/demo.mjs +102 -0
- package/dist/sensors/useScroll/demo.mjs.map +1 -0
- package/dist/sensors/useScroll/index.d.mts +42 -0
- package/dist/sensors/useScroll/index.d.ts +42 -0
- package/dist/sensors/useScroll/index.js +149 -0
- package/dist/sensors/useScroll/index.js.map +1 -0
- package/dist/sensors/useScroll/index.mjs +125 -0
- package/dist/sensors/useScroll/index.mjs.map +1 -0
- package/dist/sensors/useWindowScroll/demo.d.mts +5 -0
- package/dist/sensors/useWindowScroll/demo.d.ts +5 -0
- package/dist/sensors/useWindowScroll/demo.js +85 -0
- package/dist/sensors/useWindowScroll/demo.js.map +1 -0
- package/dist/sensors/useWindowScroll/demo.mjs +65 -0
- package/dist/sensors/useWindowScroll/demo.mjs.map +1 -0
- package/dist/sensors/useWindowScroll/index.d.mts +9 -0
- package/dist/sensors/useWindowScroll/index.d.ts +9 -0
- package/dist/sensors/useWindowScroll/index.js +36 -0
- package/dist/sensors/useWindowScroll/index.js.map +1 -0
- package/dist/sensors/useWindowScroll/index.mjs +12 -0
- package/dist/sensors/useWindowScroll/index.mjs.map +1 -0
- package/dist/shared/configurable.d.mts +21 -0
- package/dist/shared/configurable.d.ts +21 -0
- package/dist/shared/configurable.js +39 -0
- package/dist/shared/configurable.js.map +1 -0
- package/dist/shared/configurable.mjs +12 -0
- package/dist/shared/configurable.mjs.map +1 -0
- package/dist/shared/index.d.mts +4 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.js +31 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/index.mjs +7 -0
- package/dist/shared/index.mjs.map +1 -0
- package/dist/shared/normalizeTargets/index.d.mts +21 -0
- package/dist/shared/normalizeTargets/index.d.ts +21 -0
- package/dist/shared/normalizeTargets/index.js +36 -0
- package/dist/shared/normalizeTargets/index.js.map +1 -0
- package/dist/shared/normalizeTargets/index.mjs +12 -0
- package/dist/shared/normalizeTargets/index.mjs.map +1 -0
- package/dist/shared/utils.d.mts +15 -0
- package/dist/shared/utils.d.ts +15 -0
- package/dist/shared/utils.js +87 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/shared/utils.mjs +52 -0
- package/dist/shared/utils.mjs.map +1 -0
- package/dist/types.d.mts +52 -0
- package/dist/types.d.ts +52 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +54 -0
- package/src/browser/useEventListener/index.md +109 -0
- package/src/browser/useEventListener/index.spec.ts +611 -0
- package/src/browser/useEventListener/index.ts +242 -0
- package/src/browser/useMediaQuery/demo.tsx +63 -0
- package/src/browser/useMediaQuery/index.md +43 -0
- package/src/browser/useMediaQuery/index.spec.ts +267 -0
- package/src/browser/useMediaQuery/index.ts +96 -0
- package/src/components/Auto/index.tsx +65 -0
- package/src/elements/useDocumentVisibility/demo.tsx +111 -0
- package/src/elements/useDocumentVisibility/index.md +54 -0
- package/src/elements/useDocumentVisibility/index.spec.ts +114 -0
- package/src/elements/useDocumentVisibility/index.ts +26 -0
- package/src/elements/useElementBounding/demo.tsx +68 -0
- package/src/elements/useElementBounding/index.md +64 -0
- package/src/elements/useElementBounding/index.ts +159 -0
- package/src/elements/useElementSize/demo.tsx +53 -0
- package/src/elements/useElementSize/index.md +65 -0
- package/src/elements/useElementSize/index.spec.ts +295 -0
- package/src/elements/useElementSize/index.ts +100 -0
- package/src/elements/useElementVisibility/deep-observable-pattern.spec.ts +453 -0
- package/src/elements/useElementVisibility/demo.tsx +97 -0
- package/src/elements/useElementVisibility/index.md +98 -0
- package/src/elements/useElementVisibility/index.spec.ts +227 -0
- package/src/elements/useElementVisibility/index.ts +78 -0
- package/src/elements/useIntersectionObserver/demo.tsx +180 -0
- package/src/elements/useIntersectionObserver/index.md +99 -0
- package/src/elements/useIntersectionObserver/index.spec.ts +482 -0
- package/src/elements/useIntersectionObserver/index.ts +149 -0
- package/src/elements/useMouseInElement/demo.tsx +88 -0
- package/src/elements/useMouseInElement/index.md +76 -0
- package/src/elements/useMouseInElement/index.spec.ts +398 -0
- package/src/elements/useMouseInElement/index.ts +209 -0
- package/src/elements/useMutationObserver/demo.tsx +270 -0
- package/src/elements/useMutationObserver/index.md +99 -0
- package/src/elements/useMutationObserver/index.spec.ts +421 -0
- package/src/elements/useMutationObserver/index.ts +66 -0
- package/src/elements/useParentElement/demo.tsx +120 -0
- package/src/elements/useParentElement/index.md +67 -0
- package/src/elements/useParentElement/index.spec.ts +208 -0
- package/src/elements/useParentElement/index.ts +35 -0
- package/src/elements/useRef$/index.md +62 -0
- package/src/elements/useRef$/index.spec.ts +205 -0
- package/src/elements/useRef$/index.ts +137 -0
- package/src/elements/useRef$/useImperativeHandle.spec.ts +339 -0
- package/src/elements/useResizeObserver/demo.tsx +62 -0
- package/src/elements/useResizeObserver/index.md +51 -0
- package/src/elements/useResizeObserver/index.spec.ts +312 -0
- package/src/elements/useResizeObserver/index.ts +106 -0
- package/src/elements/useWindowFocus/demo.tsx +79 -0
- package/src/elements/useWindowFocus/index.md +38 -0
- package/src/elements/useWindowFocus/index.spec.ts +103 -0
- package/src/elements/useWindowFocus/index.ts +21 -0
- package/src/elements/useWindowSize/demo.tsx +51 -0
- package/src/elements/useWindowSize/index.md +55 -0
- package/src/elements/useWindowSize/index.spec.ts +310 -0
- package/src/elements/useWindowSize/index.ts +107 -0
- package/src/function/get/index.md +25 -0
- package/src/function/get/index.spec.ts +87 -0
- package/src/function/get/index.ts +70 -0
- package/src/function/peek/index.spec.ts +97 -0
- package/src/function/peek/index.ts +69 -0
- package/src/function/useMayObservableOptions/index.spec.ts +521 -0
- package/src/function/useMayObservableOptions/index.ts +173 -0
- package/src/function/useSupported/index.md +43 -0
- package/src/function/useSupported/index.spec.ts +116 -0
- package/src/function/useSupported/index.ts +14 -0
- package/src/function/useWhenMounted/index.md +25 -0
- package/src/function/useWhenMounted/index.spec.ts +120 -0
- package/src/function/useWhenMounted/index.ts +16 -0
- package/src/index.ts +25 -0
- package/src/sensors/useScroll/demo.tsx +103 -0
- package/src/sensors/useScroll/index.md +117 -0
- package/src/sensors/useScroll/index.spec.ts +678 -0
- package/src/sensors/useScroll/index.ts +201 -0
- package/src/sensors/useWindowScroll/demo.tsx +78 -0
- package/src/sensors/useWindowScroll/index.md +98 -0
- package/src/sensors/useWindowScroll/index.spec.ts +69 -0
- package/src/sensors/useWindowScroll/index.ts +11 -0
- package/src/shared/configurable.ts +35 -0
- package/src/shared/index.ts +4 -0
- package/src/shared/normalizeTargets/index.spec.ts +76 -0
- package/src/shared/normalizeTargets/index.ts +27 -0
- package/src/shared/utils.ts +67 -0
- package/src/types.ts +56 -0
- package/tsconfig.json +9 -0
- package/tsup.config.ts +10 -0
- package/vitest.config.ts +22 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var peek_exports = {};
|
|
20
|
+
__export(peek_exports, {
|
|
21
|
+
peek: () => peek
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(peek_exports);
|
|
24
|
+
var import_state = require("@legendapp/state");
|
|
25
|
+
function peek(maybeObservable, key) {
|
|
26
|
+
const value = (0, import_state.isObservable)(maybeObservable) ? maybeObservable.peek() : maybeObservable;
|
|
27
|
+
if (key === void 0) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
if (value !== null && value !== void 0 && typeof value === "object") {
|
|
31
|
+
return value[key];
|
|
32
|
+
}
|
|
33
|
+
return void 0;
|
|
34
|
+
}
|
|
35
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
36
|
+
0 && (module.exports = {
|
|
37
|
+
peek
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/peek/index.ts"],"sourcesContent":["import { isObservable } from \"@legendapp/state\";\nimport { MaybeObservable } from \"../../types\";\n\n/**\n * Extracts the value from a MaybeObservable **without** registering a tracking dependency.\n * If the value is an Observable, calls `.peek()` to extract it non-reactively.\n * Otherwise returns the value as-is.\n *\n * Use this for mount-time-only options that should not trigger re-runs when changed.\n * Prefer `get()` inside reactive contexts (`useObserve`, `useObservable`) when reactivity is needed.\n *\n * @param maybeObservable - A value that might be an Observable\n * @returns The extracted value (no tracking dependency registered)\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { peek } from '@usels/core'\n *\n * const value = peek('hello') // 'hello'\n * const obsValue = peek(observable(42)) // 42 — no dep registered\n * ```\n */\nexport function peek<T>(maybeObservable: MaybeObservable<T>): T;\nexport function peek<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;\n\n/**\n * Extracts a property value from a MaybeObservable object **without** registering a tracking dependency.\n *\n * @param maybeObservable - A value that might be an Observable\n * @param key - The property key to extract\n * @returns The property value, or undefined if not found\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { peek } from '@usels/core'\n *\n * const obs$ = observable({ initialValue: true, rootMargin: '0px' })\n *\n * peek(obs$, 'initialValue') // true — no dep registered (mount-time-only read)\n * peek(obs$, 'rootMargin') // '0px' — no dep registered\n * ```\n */\nexport function peek<T, K extends keyof T>(\n maybeObservable: MaybeObservable<T>,\n key: K,\n): T[K] | undefined;\n\n// Implementation\nexport function peek<T>(\n maybeObservable: MaybeObservable<T>,\n key?: keyof T,\n): any {\n // Extract the base value without registering a tracking dependency\n const value = isObservable(maybeObservable)\n ? maybeObservable.peek()\n : maybeObservable;\n\n if (key === undefined) {\n return value;\n }\n\n if (value !== null && value !== undefined && typeof value === \"object\") {\n return (value as any)[key];\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6B;AAkDtB,SAAS,KACd,iBACA,KACK;AAEL,QAAM,YAAQ,2BAAa,eAAe,IACtC,gBAAgB,KAAK,IACrB;AAEJ,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,UAAU;AACtE,WAAQ,MAAc,GAAG;AAAA,EAC3B;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isObservable } from "@legendapp/state";
|
|
2
|
+
function peek(maybeObservable, key) {
|
|
3
|
+
const value = isObservable(maybeObservable) ? maybeObservable.peek() : maybeObservable;
|
|
4
|
+
if (key === void 0) {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
if (value !== null && value !== void 0 && typeof value === "object") {
|
|
8
|
+
return value[key];
|
|
9
|
+
}
|
|
10
|
+
return void 0;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
peek
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/peek/index.ts"],"sourcesContent":["import { isObservable } from \"@legendapp/state\";\nimport { MaybeObservable } from \"../../types\";\n\n/**\n * Extracts the value from a MaybeObservable **without** registering a tracking dependency.\n * If the value is an Observable, calls `.peek()` to extract it non-reactively.\n * Otherwise returns the value as-is.\n *\n * Use this for mount-time-only options that should not trigger re-runs when changed.\n * Prefer `get()` inside reactive contexts (`useObserve`, `useObservable`) when reactivity is needed.\n *\n * @param maybeObservable - A value that might be an Observable\n * @returns The extracted value (no tracking dependency registered)\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { peek } from '@usels/core'\n *\n * const value = peek('hello') // 'hello'\n * const obsValue = peek(observable(42)) // 42 — no dep registered\n * ```\n */\nexport function peek<T>(maybeObservable: MaybeObservable<T>): T;\nexport function peek<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;\n\n/**\n * Extracts a property value from a MaybeObservable object **without** registering a tracking dependency.\n *\n * @param maybeObservable - A value that might be an Observable\n * @param key - The property key to extract\n * @returns The property value, or undefined if not found\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { peek } from '@usels/core'\n *\n * const obs$ = observable({ initialValue: true, rootMargin: '0px' })\n *\n * peek(obs$, 'initialValue') // true — no dep registered (mount-time-only read)\n * peek(obs$, 'rootMargin') // '0px' — no dep registered\n * ```\n */\nexport function peek<T, K extends keyof T>(\n maybeObservable: MaybeObservable<T>,\n key: K,\n): T[K] | undefined;\n\n// Implementation\nexport function peek<T>(\n maybeObservable: MaybeObservable<T>,\n key?: keyof T,\n): any {\n // Extract the base value without registering a tracking dependency\n const value = isObservable(maybeObservable)\n ? maybeObservable.peek()\n : maybeObservable;\n\n if (key === undefined) {\n return value;\n }\n\n if (value !== null && value !== undefined && typeof value === \"object\") {\n return (value as any)[key];\n }\n\n return undefined;\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAkDtB,SAAS,KACd,iBACA,KACK;AAEL,QAAM,QAAQ,aAAa,eAAe,IACtC,gBAAgB,KAAK,IACrB;AAEJ,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,UAAU;AACtE,WAAQ,MAAc,GAAG;AAAA,EAC3B;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Observable } from '@legendapp/state';
|
|
2
|
+
import { MaybeObservable, DeepMaybeObservable } from '../../types.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Per-field resolution hint for the object-form transform.
|
|
6
|
+
*
|
|
7
|
+
* Resolution axis (`get` / `peek`):
|
|
8
|
+
* - `'get'` — no-op; Legend-State auto-derefs the field Observable and registers the dep at the call site. **Default.**
|
|
9
|
+
* - `'peek'` — `peek(fieldValue)` — no dep, mount-time-only snapshot.
|
|
10
|
+
*
|
|
11
|
+
* Legend-State wrapping axis (dot-notation):
|
|
12
|
+
* - `'get.opaque'` — `get()` then `ObservableHint.opaque()`. Null-safe.
|
|
13
|
+
* - `'get.plain'` — `get()` then `ObservableHint.plain()`. Prevents nested auto-deref. Null-safe.
|
|
14
|
+
* - `'get.function'` — `get()` then `ObservableHint.function()`. For callbacks. Null-safe.
|
|
15
|
+
* - `'get.element'` — `getElement(fieldValue)` (reactive) then `ObservableHint.opaque()`. For MaybeElement.
|
|
16
|
+
* - `'peek.element'` — `peekElement(fieldValue)` (non-reactive) then `ObservableHint.opaque()`. For MaybeElement.
|
|
17
|
+
*
|
|
18
|
+
* Escape hatch:
|
|
19
|
+
* - `(value) => R` — custom transform function.
|
|
20
|
+
*/
|
|
21
|
+
type FieldHint<V = any, R = any> = "get" | "peek" | "get.opaque" | "get.plain" | "get.function" | "get.element" | "peek.element" | ((value: MaybeObservable<V>) => R);
|
|
22
|
+
/**
|
|
23
|
+
* Maps each field of `T` to a `FieldHint`.
|
|
24
|
+
* Fields not specified default to `'get'` (reactive resolution via Legend-State auto-deref).
|
|
25
|
+
*/
|
|
26
|
+
type FieldTransformMap<T> = {
|
|
27
|
+
[K in keyof T]?: FieldHint<T[K], any>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The `transform` parameter for `useMayObservableOptions`.
|
|
31
|
+
* - **Object form:** declarative per-field hints — `FieldTransformMap<T>`.
|
|
32
|
+
* - **Function form:** full custom compute — `(current) => T | undefined`.
|
|
33
|
+
*/
|
|
34
|
+
type Transform<T> = FieldTransformMap<T> | ((current: DeepMaybeObservable<T> | undefined) => T | undefined);
|
|
35
|
+
/**
|
|
36
|
+
* Normalizes `DeepMaybeObservable<T>` into a stable computed `Observable<T | undefined>`.
|
|
37
|
+
*
|
|
38
|
+
* Handles three cases without interference:
|
|
39
|
+
* - **Outer `Observable<T>`** — tracked via `.get()` dep inside the compute fn
|
|
40
|
+
* - **Per-field `{ field: Observable<T[K]> }`** — tracked via explicit `get()` per field
|
|
41
|
+
* - **Plain value changing between renders** — tracked via Symbol depKey (React-level)
|
|
42
|
+
*
|
|
43
|
+
* The Symbol depKey prevents Legend-State from auto-deref'ing inner Observables
|
|
44
|
+
* inside `depsObs$`, which would break per-field dep tracking if the raw `options`
|
|
45
|
+
* object were passed directly as the dep array item.
|
|
46
|
+
*
|
|
47
|
+
* @param options - DeepMaybeObservable options to normalize
|
|
48
|
+
* @param transform - Optional transform. Two forms:
|
|
49
|
+
* - **Object form:** `FieldTransformMap<T>` — per-field hints (`'peek'`, `'get.opaque'`, etc.).
|
|
50
|
+
* Defaults to `'get'` for unspecified fields.
|
|
51
|
+
* **Note:** has no effect when `options` is an outer `Observable<T>` — in that case the
|
|
52
|
+
* proxy is returned as-is (same as no transform), preserving Legend-State's
|
|
53
|
+
* reference-equality tracking behavior. Use per-field Observables or plain objects
|
|
54
|
+
* when field-level hints are needed.
|
|
55
|
+
* - **Function form:** `(current) => T | undefined` — full custom compute for complex cases.
|
|
56
|
+
*/
|
|
57
|
+
declare function useMayObservableOptions<T>(options: DeepMaybeObservable<T> | undefined, transform?: Transform<T>): Observable<T | undefined>;
|
|
58
|
+
|
|
59
|
+
export { type FieldHint, type FieldTransformMap, type Transform, useMayObservableOptions };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Observable } from '@legendapp/state';
|
|
2
|
+
import { MaybeObservable, DeepMaybeObservable } from '../../types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Per-field resolution hint for the object-form transform.
|
|
6
|
+
*
|
|
7
|
+
* Resolution axis (`get` / `peek`):
|
|
8
|
+
* - `'get'` — no-op; Legend-State auto-derefs the field Observable and registers the dep at the call site. **Default.**
|
|
9
|
+
* - `'peek'` — `peek(fieldValue)` — no dep, mount-time-only snapshot.
|
|
10
|
+
*
|
|
11
|
+
* Legend-State wrapping axis (dot-notation):
|
|
12
|
+
* - `'get.opaque'` — `get()` then `ObservableHint.opaque()`. Null-safe.
|
|
13
|
+
* - `'get.plain'` — `get()` then `ObservableHint.plain()`. Prevents nested auto-deref. Null-safe.
|
|
14
|
+
* - `'get.function'` — `get()` then `ObservableHint.function()`. For callbacks. Null-safe.
|
|
15
|
+
* - `'get.element'` — `getElement(fieldValue)` (reactive) then `ObservableHint.opaque()`. For MaybeElement.
|
|
16
|
+
* - `'peek.element'` — `peekElement(fieldValue)` (non-reactive) then `ObservableHint.opaque()`. For MaybeElement.
|
|
17
|
+
*
|
|
18
|
+
* Escape hatch:
|
|
19
|
+
* - `(value) => R` — custom transform function.
|
|
20
|
+
*/
|
|
21
|
+
type FieldHint<V = any, R = any> = "get" | "peek" | "get.opaque" | "get.plain" | "get.function" | "get.element" | "peek.element" | ((value: MaybeObservable<V>) => R);
|
|
22
|
+
/**
|
|
23
|
+
* Maps each field of `T` to a `FieldHint`.
|
|
24
|
+
* Fields not specified default to `'get'` (reactive resolution via Legend-State auto-deref).
|
|
25
|
+
*/
|
|
26
|
+
type FieldTransformMap<T> = {
|
|
27
|
+
[K in keyof T]?: FieldHint<T[K], any>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The `transform` parameter for `useMayObservableOptions`.
|
|
31
|
+
* - **Object form:** declarative per-field hints — `FieldTransformMap<T>`.
|
|
32
|
+
* - **Function form:** full custom compute — `(current) => T | undefined`.
|
|
33
|
+
*/
|
|
34
|
+
type Transform<T> = FieldTransformMap<T> | ((current: DeepMaybeObservable<T> | undefined) => T | undefined);
|
|
35
|
+
/**
|
|
36
|
+
* Normalizes `DeepMaybeObservable<T>` into a stable computed `Observable<T | undefined>`.
|
|
37
|
+
*
|
|
38
|
+
* Handles three cases without interference:
|
|
39
|
+
* - **Outer `Observable<T>`** — tracked via `.get()` dep inside the compute fn
|
|
40
|
+
* - **Per-field `{ field: Observable<T[K]> }`** — tracked via explicit `get()` per field
|
|
41
|
+
* - **Plain value changing between renders** — tracked via Symbol depKey (React-level)
|
|
42
|
+
*
|
|
43
|
+
* The Symbol depKey prevents Legend-State from auto-deref'ing inner Observables
|
|
44
|
+
* inside `depsObs$`, which would break per-field dep tracking if the raw `options`
|
|
45
|
+
* object were passed directly as the dep array item.
|
|
46
|
+
*
|
|
47
|
+
* @param options - DeepMaybeObservable options to normalize
|
|
48
|
+
* @param transform - Optional transform. Two forms:
|
|
49
|
+
* - **Object form:** `FieldTransformMap<T>` — per-field hints (`'peek'`, `'get.opaque'`, etc.).
|
|
50
|
+
* Defaults to `'get'` for unspecified fields.
|
|
51
|
+
* **Note:** has no effect when `options` is an outer `Observable<T>` — in that case the
|
|
52
|
+
* proxy is returned as-is (same as no transform), preserving Legend-State's
|
|
53
|
+
* reference-equality tracking behavior. Use per-field Observables or plain objects
|
|
54
|
+
* when field-level hints are needed.
|
|
55
|
+
* - **Function form:** `(current) => T | undefined` — full custom compute for complex cases.
|
|
56
|
+
*/
|
|
57
|
+
declare function useMayObservableOptions<T>(options: DeepMaybeObservable<T> | undefined, transform?: Transform<T>): Observable<T | undefined>;
|
|
58
|
+
|
|
59
|
+
export { type FieldHint, type FieldTransformMap, type Transform, useMayObservableOptions };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var useMayObservableOptions_exports = {};
|
|
20
|
+
__export(useMayObservableOptions_exports, {
|
|
21
|
+
useMayObservableOptions: () => useMayObservableOptions
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(useMayObservableOptions_exports);
|
|
24
|
+
var import_state = require("@legendapp/state");
|
|
25
|
+
var import_react = require("@legendapp/state/react");
|
|
26
|
+
var import_react2 = require("react");
|
|
27
|
+
var import_get = require("../get");
|
|
28
|
+
var import_peek = require("../peek");
|
|
29
|
+
var import_useRef = require("../../elements/useRef$");
|
|
30
|
+
function applyObjectTransform(raw, map) {
|
|
31
|
+
if (raw == null) return void 0;
|
|
32
|
+
const result = { ...raw };
|
|
33
|
+
for (const key of Object.keys(result)) {
|
|
34
|
+
const hint = map[key];
|
|
35
|
+
const fieldValue = result[key];
|
|
36
|
+
switch (hint) {
|
|
37
|
+
case "peek":
|
|
38
|
+
result[key] = (0, import_peek.peek)(fieldValue);
|
|
39
|
+
break;
|
|
40
|
+
case "get.opaque": {
|
|
41
|
+
const v = (0, import_get.get)(fieldValue);
|
|
42
|
+
if (v != null) result[key] = import_state.ObservableHint.opaque(v);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
case "get.plain": {
|
|
46
|
+
const v = (0, import_get.get)(fieldValue);
|
|
47
|
+
if (v != null) result[key] = import_state.ObservableHint.plain(v);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case "get.function": {
|
|
51
|
+
const v = (0, import_get.get)(fieldValue);
|
|
52
|
+
if (v != null)
|
|
53
|
+
result[key] = import_state.ObservableHint.function(
|
|
54
|
+
v
|
|
55
|
+
);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case "get.element": {
|
|
59
|
+
if (fieldValue !== void 0) {
|
|
60
|
+
if ((0, import_state.isObservable)(fieldValue) && fieldValue.get() === void 0) {
|
|
61
|
+
result[key] = void 0;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
const el = (0, import_useRef.getElement)(fieldValue);
|
|
65
|
+
result[key] = el != null ? import_state.ObservableHint.opaque(el) : null;
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case "peek.element": {
|
|
70
|
+
if (fieldValue !== void 0) {
|
|
71
|
+
if ((0, import_state.isObservable)(fieldValue) && fieldValue.peek() === void 0) {
|
|
72
|
+
result[key] = void 0;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
const el = (0, import_useRef.peekElement)(fieldValue);
|
|
76
|
+
result[key] = el != null ? import_state.ObservableHint.opaque(el) : null;
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
default:
|
|
81
|
+
if (typeof hint === "function") {
|
|
82
|
+
result[key] = hint(fieldValue);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
function useMayObservableOptions(options, transform) {
|
|
89
|
+
const optionsRef = (0, import_react2.useRef)(options);
|
|
90
|
+
optionsRef.current = options;
|
|
91
|
+
const depKey = (0, import_react2.useMemo)(() => /* @__PURE__ */ Symbol(), [options]);
|
|
92
|
+
const compute = () => {
|
|
93
|
+
if (typeof transform === "function") {
|
|
94
|
+
return transform(optionsRef.current);
|
|
95
|
+
}
|
|
96
|
+
const raw = optionsRef.current;
|
|
97
|
+
const resolved = (0, import_get.get)(raw);
|
|
98
|
+
if (transform != null && !(0, import_state.isObservable)(raw)) {
|
|
99
|
+
return applyObjectTransform(resolved, transform);
|
|
100
|
+
}
|
|
101
|
+
return resolved;
|
|
102
|
+
};
|
|
103
|
+
return (0, import_react.useObservable)(compute, [depKey]);
|
|
104
|
+
}
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
useMayObservableOptions
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useMayObservableOptions/index.ts"],"sourcesContent":["import {\n isObservable,\n ObservableHint,\n type Observable,\n} from \"@legendapp/state\";\nimport { useObservable } from \"@legendapp/state/react\";\nimport { useMemo, useRef } from \"react\";\nimport { get } from \"../get\";\nimport { peek } from \"../peek\";\nimport type { DeepMaybeObservable, MaybeObservable } from \"../../types\";\nimport { getElement, peekElement } from \"../../elements/useRef$\";\nimport type { MaybeElement } from \"../../elements/useRef$\";\n\n/**\n * Per-field resolution hint for the object-form transform.\n *\n * Resolution axis (`get` / `peek`):\n * - `'get'` — no-op; Legend-State auto-derefs the field Observable and registers the dep at the call site. **Default.**\n * - `'peek'` — `peek(fieldValue)` — no dep, mount-time-only snapshot.\n *\n * Legend-State wrapping axis (dot-notation):\n * - `'get.opaque'` — `get()` then `ObservableHint.opaque()`. Null-safe.\n * - `'get.plain'` — `get()` then `ObservableHint.plain()`. Prevents nested auto-deref. Null-safe.\n * - `'get.function'` — `get()` then `ObservableHint.function()`. For callbacks. Null-safe.\n * - `'get.element'` — `getElement(fieldValue)` (reactive) then `ObservableHint.opaque()`. For MaybeElement.\n * - `'peek.element'` — `peekElement(fieldValue)` (non-reactive) then `ObservableHint.opaque()`. For MaybeElement.\n *\n * Escape hatch:\n * - `(value) => R` — custom transform function.\n */\nexport type FieldHint<V = any, R = any> =\n | \"get\"\n | \"peek\"\n | \"get.opaque\"\n | \"get.plain\"\n | \"get.function\"\n | \"get.element\"\n | \"peek.element\"\n | ((value: MaybeObservable<V>) => R);\n\n/**\n * Maps each field of `T` to a `FieldHint`.\n * Fields not specified default to `'get'` (reactive resolution via Legend-State auto-deref).\n */\nexport type FieldTransformMap<T> = {\n [K in keyof T]?: FieldHint<T[K], any>;\n};\n\n/**\n * The `transform` parameter for `useMayObservableOptions`.\n * - **Object form:** declarative per-field hints — `FieldTransformMap<T>`.\n * - **Function form:** full custom compute — `(current) => T | undefined`.\n */\nexport type Transform<T> =\n | FieldTransformMap<T>\n | ((current: DeepMaybeObservable<T> | undefined) => T | undefined);\n\nfunction applyObjectTransform<T>(\n raw: T | undefined,\n map: FieldTransformMap<T>,\n): T | undefined {\n if (raw == null) return undefined;\n const result = { ...raw } as Record<string, unknown>;\n for (const key of Object.keys(result)) {\n const hint = (map as Record<string, FieldHint>)[key];\n const fieldValue = result[key] as MaybeObservable<unknown>;\n switch (hint) {\n case \"peek\":\n result[key] = peek(fieldValue);\n break;\n case \"get.opaque\": {\n const v = get(fieldValue);\n if (v != null) result[key] = ObservableHint.opaque(v);\n break;\n }\n case \"get.plain\": {\n const v = get(fieldValue);\n if (v != null) result[key] = ObservableHint.plain(v as object);\n break;\n }\n case \"get.function\": {\n const v = get(fieldValue);\n if (v != null)\n result[key] = ObservableHint.function(\n v as (...args: unknown[]) => unknown,\n );\n break;\n }\n case \"get.element\": {\n if (fieldValue !== undefined) {\n // Observable resolving to undefined means \"not set\" — propagate undefined\n if (isObservable(fieldValue) && (fieldValue as Observable<unknown>).get() === undefined) {\n result[key] = undefined;\n break;\n }\n const el = getElement(fieldValue as MaybeElement);\n result[key] = el != null ? ObservableHint.opaque(el) : null;\n }\n break;\n }\n case \"peek.element\": {\n if (fieldValue !== undefined) {\n // Observable resolving to undefined means \"not set\" — propagate undefined\n if (isObservable(fieldValue) && (fieldValue as Observable<unknown>).peek() === undefined) {\n result[key] = undefined;\n break;\n }\n const el = peekElement(fieldValue as MaybeElement);\n result[key] = el != null ? ObservableHint.opaque(el) : null;\n }\n break;\n }\n default:\n if (typeof hint === \"function\") {\n result[key] = hint(fieldValue);\n }\n // 'get' or undefined → no action; Legend-State auto-derefs per-field Observables\n }\n }\n return result as T;\n}\n\n/**\n * Normalizes `DeepMaybeObservable<T>` into a stable computed `Observable<T | undefined>`.\n *\n * Handles three cases without interference:\n * - **Outer `Observable<T>`** — tracked via `.get()` dep inside the compute fn\n * - **Per-field `{ field: Observable<T[K]> }`** — tracked via explicit `get()` per field\n * - **Plain value changing between renders** — tracked via Symbol depKey (React-level)\n *\n * The Symbol depKey prevents Legend-State from auto-deref'ing inner Observables\n * inside `depsObs$`, which would break per-field dep tracking if the raw `options`\n * object were passed directly as the dep array item.\n *\n * @param options - DeepMaybeObservable options to normalize\n * @param transform - Optional transform. Two forms:\n * - **Object form:** `FieldTransformMap<T>` — per-field hints (`'peek'`, `'get.opaque'`, etc.).\n * Defaults to `'get'` for unspecified fields.\n * **Note:** has no effect when `options` is an outer `Observable<T>` — in that case the\n * proxy is returned as-is (same as no transform), preserving Legend-State's\n * reference-equality tracking behavior. Use per-field Observables or plain objects\n * when field-level hints are needed.\n * - **Function form:** `(current) => T | undefined` — full custom compute for complex cases.\n */\nexport function useMayObservableOptions<T>(\n options: DeepMaybeObservable<T> | undefined,\n transform?: Transform<T>,\n): Observable<T | undefined> {\n const optionsRef = useRef(options);\n optionsRef.current = options;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const depKey = useMemo(() => Symbol(), [options]);\n const compute = (): T | undefined => {\n if (typeof transform === \"function\") {\n return transform(optionsRef.current);\n }\n const raw = optionsRef.current;\n const resolved = get(raw as MaybeObservable<T> | undefined);\n if (transform != null && !isObservable(raw)) {\n // Object form — only applies when options is NOT an outer Observable.\n // For outer Observable, returning the proxy as-is preserves the\n // \"reference-equality tracking\" behavior: child-field mutations do not\n // trigger opts$ recomputation (documented known Legend-State limitation).\n // For per-field Observable or plain object, apply field hints.\n return applyObjectTransform(resolved, transform);\n }\n return resolved;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useObservable(compute, [depKey]) as unknown as Observable<\n T | undefined\n >;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AACP,mBAA8B;AAC9B,IAAAA,gBAAgC;AAChC,iBAAoB;AACpB,kBAAqB;AAErB,oBAAwC;AA+CxC,SAAS,qBACP,KACA,KACe;AACf,MAAI,OAAO,KAAM,QAAO;AACxB,QAAM,SAAS,EAAE,GAAG,IAAI;AACxB,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,UAAM,OAAQ,IAAkC,GAAG;AACnD,UAAM,aAAa,OAAO,GAAG;AAC7B,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eAAO,GAAG,QAAI,kBAAK,UAAU;AAC7B;AAAA,MACF,KAAK,cAAc;AACjB,cAAM,QAAI,gBAAI,UAAU;AACxB,YAAI,KAAK,KAAM,QAAO,GAAG,IAAI,4BAAe,OAAO,CAAC;AACpD;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,cAAM,QAAI,gBAAI,UAAU;AACxB,YAAI,KAAK,KAAM,QAAO,GAAG,IAAI,4BAAe,MAAM,CAAW;AAC7D;AAAA,MACF;AAAA,MACA,KAAK,gBAAgB;AACnB,cAAM,QAAI,gBAAI,UAAU;AACxB,YAAI,KAAK;AACP,iBAAO,GAAG,IAAI,4BAAe;AAAA,YAC3B;AAAA,UACF;AACF;AAAA,MACF;AAAA,MACA,KAAK,eAAe;AAClB,YAAI,eAAe,QAAW;AAE5B,kBAAI,2BAAa,UAAU,KAAM,WAAmC,IAAI,MAAM,QAAW;AACvF,mBAAO,GAAG,IAAI;AACd;AAAA,UACF;AACA,gBAAM,SAAK,0BAAW,UAA0B;AAChD,iBAAO,GAAG,IAAI,MAAM,OAAO,4BAAe,OAAO,EAAE,IAAI;AAAA,QACzD;AACA;AAAA,MACF;AAAA,MACA,KAAK,gBAAgB;AACnB,YAAI,eAAe,QAAW;AAE5B,kBAAI,2BAAa,UAAU,KAAM,WAAmC,KAAK,MAAM,QAAW;AACxF,mBAAO,GAAG,IAAI;AACd;AAAA,UACF;AACA,gBAAM,SAAK,2BAAY,UAA0B;AACjD,iBAAO,GAAG,IAAI,MAAM,OAAO,4BAAe,OAAO,EAAE,IAAI;AAAA,QACzD;AACA;AAAA,MACF;AAAA,MACA;AACE,YAAI,OAAO,SAAS,YAAY;AAC9B,iBAAO,GAAG,IAAI,KAAK,UAAU;AAAA,QAC/B;AAAA,IAEJ;AAAA,EACF;AACA,SAAO;AACT;AAwBO,SAAS,wBACd,SACA,WAC2B;AAC3B,QAAM,iBAAa,sBAAO,OAAO;AACjC,aAAW,UAAU;AAErB,QAAM,aAAS,uBAAQ,MAAM,uBAAO,GAAG,CAAC,OAAO,CAAC;AAChD,QAAM,UAAU,MAAqB;AACnC,QAAI,OAAO,cAAc,YAAY;AACnC,aAAO,UAAU,WAAW,OAAO;AAAA,IACrC;AACA,UAAM,MAAM,WAAW;AACvB,UAAM,eAAW,gBAAI,GAAqC;AAC1D,QAAI,aAAa,QAAQ,KAAC,2BAAa,GAAG,GAAG;AAM3C,aAAO,qBAAqB,UAAU,SAAS;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAEA,aAAO,4BAAc,SAAS,CAAC,MAAM,CAAC;AAGxC;","names":["import_react"]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isObservable,
|
|
3
|
+
ObservableHint
|
|
4
|
+
} from "@legendapp/state";
|
|
5
|
+
import { useObservable } from "@legendapp/state/react";
|
|
6
|
+
import { useMemo, useRef } from "react";
|
|
7
|
+
import { get } from "../get";
|
|
8
|
+
import { peek } from "../peek";
|
|
9
|
+
import { getElement, peekElement } from "../../elements/useRef$";
|
|
10
|
+
function applyObjectTransform(raw, map) {
|
|
11
|
+
if (raw == null) return void 0;
|
|
12
|
+
const result = { ...raw };
|
|
13
|
+
for (const key of Object.keys(result)) {
|
|
14
|
+
const hint = map[key];
|
|
15
|
+
const fieldValue = result[key];
|
|
16
|
+
switch (hint) {
|
|
17
|
+
case "peek":
|
|
18
|
+
result[key] = peek(fieldValue);
|
|
19
|
+
break;
|
|
20
|
+
case "get.opaque": {
|
|
21
|
+
const v = get(fieldValue);
|
|
22
|
+
if (v != null) result[key] = ObservableHint.opaque(v);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
case "get.plain": {
|
|
26
|
+
const v = get(fieldValue);
|
|
27
|
+
if (v != null) result[key] = ObservableHint.plain(v);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
case "get.function": {
|
|
31
|
+
const v = get(fieldValue);
|
|
32
|
+
if (v != null)
|
|
33
|
+
result[key] = ObservableHint.function(
|
|
34
|
+
v
|
|
35
|
+
);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
case "get.element": {
|
|
39
|
+
if (fieldValue !== void 0) {
|
|
40
|
+
if (isObservable(fieldValue) && fieldValue.get() === void 0) {
|
|
41
|
+
result[key] = void 0;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
const el = getElement(fieldValue);
|
|
45
|
+
result[key] = el != null ? ObservableHint.opaque(el) : null;
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case "peek.element": {
|
|
50
|
+
if (fieldValue !== void 0) {
|
|
51
|
+
if (isObservable(fieldValue) && fieldValue.peek() === void 0) {
|
|
52
|
+
result[key] = void 0;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
const el = peekElement(fieldValue);
|
|
56
|
+
result[key] = el != null ? ObservableHint.opaque(el) : null;
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
if (typeof hint === "function") {
|
|
62
|
+
result[key] = hint(fieldValue);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
function useMayObservableOptions(options, transform) {
|
|
69
|
+
const optionsRef = useRef(options);
|
|
70
|
+
optionsRef.current = options;
|
|
71
|
+
const depKey = useMemo(() => /* @__PURE__ */ Symbol(), [options]);
|
|
72
|
+
const compute = () => {
|
|
73
|
+
if (typeof transform === "function") {
|
|
74
|
+
return transform(optionsRef.current);
|
|
75
|
+
}
|
|
76
|
+
const raw = optionsRef.current;
|
|
77
|
+
const resolved = get(raw);
|
|
78
|
+
if (transform != null && !isObservable(raw)) {
|
|
79
|
+
return applyObjectTransform(resolved, transform);
|
|
80
|
+
}
|
|
81
|
+
return resolved;
|
|
82
|
+
};
|
|
83
|
+
return useObservable(compute, [depKey]);
|
|
84
|
+
}
|
|
85
|
+
export {
|
|
86
|
+
useMayObservableOptions
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useMayObservableOptions/index.ts"],"sourcesContent":["import {\n isObservable,\n ObservableHint,\n type Observable,\n} from \"@legendapp/state\";\nimport { useObservable } from \"@legendapp/state/react\";\nimport { useMemo, useRef } from \"react\";\nimport { get } from \"../get\";\nimport { peek } from \"../peek\";\nimport type { DeepMaybeObservable, MaybeObservable } from \"../../types\";\nimport { getElement, peekElement } from \"../../elements/useRef$\";\nimport type { MaybeElement } from \"../../elements/useRef$\";\n\n/**\n * Per-field resolution hint for the object-form transform.\n *\n * Resolution axis (`get` / `peek`):\n * - `'get'` — no-op; Legend-State auto-derefs the field Observable and registers the dep at the call site. **Default.**\n * - `'peek'` — `peek(fieldValue)` — no dep, mount-time-only snapshot.\n *\n * Legend-State wrapping axis (dot-notation):\n * - `'get.opaque'` — `get()` then `ObservableHint.opaque()`. Null-safe.\n * - `'get.plain'` — `get()` then `ObservableHint.plain()`. Prevents nested auto-deref. Null-safe.\n * - `'get.function'` — `get()` then `ObservableHint.function()`. For callbacks. Null-safe.\n * - `'get.element'` — `getElement(fieldValue)` (reactive) then `ObservableHint.opaque()`. For MaybeElement.\n * - `'peek.element'` — `peekElement(fieldValue)` (non-reactive) then `ObservableHint.opaque()`. For MaybeElement.\n *\n * Escape hatch:\n * - `(value) => R` — custom transform function.\n */\nexport type FieldHint<V = any, R = any> =\n | \"get\"\n | \"peek\"\n | \"get.opaque\"\n | \"get.plain\"\n | \"get.function\"\n | \"get.element\"\n | \"peek.element\"\n | ((value: MaybeObservable<V>) => R);\n\n/**\n * Maps each field of `T` to a `FieldHint`.\n * Fields not specified default to `'get'` (reactive resolution via Legend-State auto-deref).\n */\nexport type FieldTransformMap<T> = {\n [K in keyof T]?: FieldHint<T[K], any>;\n};\n\n/**\n * The `transform` parameter for `useMayObservableOptions`.\n * - **Object form:** declarative per-field hints — `FieldTransformMap<T>`.\n * - **Function form:** full custom compute — `(current) => T | undefined`.\n */\nexport type Transform<T> =\n | FieldTransformMap<T>\n | ((current: DeepMaybeObservable<T> | undefined) => T | undefined);\n\nfunction applyObjectTransform<T>(\n raw: T | undefined,\n map: FieldTransformMap<T>,\n): T | undefined {\n if (raw == null) return undefined;\n const result = { ...raw } as Record<string, unknown>;\n for (const key of Object.keys(result)) {\n const hint = (map as Record<string, FieldHint>)[key];\n const fieldValue = result[key] as MaybeObservable<unknown>;\n switch (hint) {\n case \"peek\":\n result[key] = peek(fieldValue);\n break;\n case \"get.opaque\": {\n const v = get(fieldValue);\n if (v != null) result[key] = ObservableHint.opaque(v);\n break;\n }\n case \"get.plain\": {\n const v = get(fieldValue);\n if (v != null) result[key] = ObservableHint.plain(v as object);\n break;\n }\n case \"get.function\": {\n const v = get(fieldValue);\n if (v != null)\n result[key] = ObservableHint.function(\n v as (...args: unknown[]) => unknown,\n );\n break;\n }\n case \"get.element\": {\n if (fieldValue !== undefined) {\n // Observable resolving to undefined means \"not set\" — propagate undefined\n if (isObservable(fieldValue) && (fieldValue as Observable<unknown>).get() === undefined) {\n result[key] = undefined;\n break;\n }\n const el = getElement(fieldValue as MaybeElement);\n result[key] = el != null ? ObservableHint.opaque(el) : null;\n }\n break;\n }\n case \"peek.element\": {\n if (fieldValue !== undefined) {\n // Observable resolving to undefined means \"not set\" — propagate undefined\n if (isObservable(fieldValue) && (fieldValue as Observable<unknown>).peek() === undefined) {\n result[key] = undefined;\n break;\n }\n const el = peekElement(fieldValue as MaybeElement);\n result[key] = el != null ? ObservableHint.opaque(el) : null;\n }\n break;\n }\n default:\n if (typeof hint === \"function\") {\n result[key] = hint(fieldValue);\n }\n // 'get' or undefined → no action; Legend-State auto-derefs per-field Observables\n }\n }\n return result as T;\n}\n\n/**\n * Normalizes `DeepMaybeObservable<T>` into a stable computed `Observable<T | undefined>`.\n *\n * Handles three cases without interference:\n * - **Outer `Observable<T>`** — tracked via `.get()` dep inside the compute fn\n * - **Per-field `{ field: Observable<T[K]> }`** — tracked via explicit `get()` per field\n * - **Plain value changing between renders** — tracked via Symbol depKey (React-level)\n *\n * The Symbol depKey prevents Legend-State from auto-deref'ing inner Observables\n * inside `depsObs$`, which would break per-field dep tracking if the raw `options`\n * object were passed directly as the dep array item.\n *\n * @param options - DeepMaybeObservable options to normalize\n * @param transform - Optional transform. Two forms:\n * - **Object form:** `FieldTransformMap<T>` — per-field hints (`'peek'`, `'get.opaque'`, etc.).\n * Defaults to `'get'` for unspecified fields.\n * **Note:** has no effect when `options` is an outer `Observable<T>` — in that case the\n * proxy is returned as-is (same as no transform), preserving Legend-State's\n * reference-equality tracking behavior. Use per-field Observables or plain objects\n * when field-level hints are needed.\n * - **Function form:** `(current) => T | undefined` — full custom compute for complex cases.\n */\nexport function useMayObservableOptions<T>(\n options: DeepMaybeObservable<T> | undefined,\n transform?: Transform<T>,\n): Observable<T | undefined> {\n const optionsRef = useRef(options);\n optionsRef.current = options;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const depKey = useMemo(() => Symbol(), [options]);\n const compute = (): T | undefined => {\n if (typeof transform === \"function\") {\n return transform(optionsRef.current);\n }\n const raw = optionsRef.current;\n const resolved = get(raw as MaybeObservable<T> | undefined);\n if (transform != null && !isObservable(raw)) {\n // Object form — only applies when options is NOT an outer Observable.\n // For outer Observable, returning the proxy as-is preserves the\n // \"reference-equality tracking\" behavior: child-field mutations do not\n // trigger opts$ recomputation (documented known Legend-State limitation).\n // For per-field Observable or plain object, apply field hints.\n return applyObjectTransform(resolved, transform);\n }\n return resolved;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useObservable(compute, [depKey]) as unknown as Observable<\n T | undefined\n >;\n}\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,qBAAqB;AAC9B,SAAS,SAAS,cAAc;AAChC,SAAS,WAAW;AACpB,SAAS,YAAY;AAErB,SAAS,YAAY,mBAAmB;AA+CxC,SAAS,qBACP,KACA,KACe;AACf,MAAI,OAAO,KAAM,QAAO;AACxB,QAAM,SAAS,EAAE,GAAG,IAAI;AACxB,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,UAAM,OAAQ,IAAkC,GAAG;AACnD,UAAM,aAAa,OAAO,GAAG;AAC7B,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eAAO,GAAG,IAAI,KAAK,UAAU;AAC7B;AAAA,MACF,KAAK,cAAc;AACjB,cAAM,IAAI,IAAI,UAAU;AACxB,YAAI,KAAK,KAAM,QAAO,GAAG,IAAI,eAAe,OAAO,CAAC;AACpD;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,cAAM,IAAI,IAAI,UAAU;AACxB,YAAI,KAAK,KAAM,QAAO,GAAG,IAAI,eAAe,MAAM,CAAW;AAC7D;AAAA,MACF;AAAA,MACA,KAAK,gBAAgB;AACnB,cAAM,IAAI,IAAI,UAAU;AACxB,YAAI,KAAK;AACP,iBAAO,GAAG,IAAI,eAAe;AAAA,YAC3B;AAAA,UACF;AACF;AAAA,MACF;AAAA,MACA,KAAK,eAAe;AAClB,YAAI,eAAe,QAAW;AAE5B,cAAI,aAAa,UAAU,KAAM,WAAmC,IAAI,MAAM,QAAW;AACvF,mBAAO,GAAG,IAAI;AACd;AAAA,UACF;AACA,gBAAM,KAAK,WAAW,UAA0B;AAChD,iBAAO,GAAG,IAAI,MAAM,OAAO,eAAe,OAAO,EAAE,IAAI;AAAA,QACzD;AACA;AAAA,MACF;AAAA,MACA,KAAK,gBAAgB;AACnB,YAAI,eAAe,QAAW;AAE5B,cAAI,aAAa,UAAU,KAAM,WAAmC,KAAK,MAAM,QAAW;AACxF,mBAAO,GAAG,IAAI;AACd;AAAA,UACF;AACA,gBAAM,KAAK,YAAY,UAA0B;AACjD,iBAAO,GAAG,IAAI,MAAM,OAAO,eAAe,OAAO,EAAE,IAAI;AAAA,QACzD;AACA;AAAA,MACF;AAAA,MACA;AACE,YAAI,OAAO,SAAS,YAAY;AAC9B,iBAAO,GAAG,IAAI,KAAK,UAAU;AAAA,QAC/B;AAAA,IAEJ;AAAA,EACF;AACA,SAAO;AACT;AAwBO,SAAS,wBACd,SACA,WAC2B;AAC3B,QAAM,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AAErB,QAAM,SAAS,QAAQ,MAAM,uBAAO,GAAG,CAAC,OAAO,CAAC;AAChD,QAAM,UAAU,MAAqB;AACnC,QAAI,OAAO,cAAc,YAAY;AACnC,aAAO,UAAU,WAAW,OAAO;AAAA,IACrC;AACA,UAAM,MAAM,WAAW;AACvB,UAAM,WAAW,IAAI,GAAqC;AAC1D,QAAI,aAAa,QAAQ,CAAC,aAAa,GAAG,GAAG;AAM3C,aAAO,qBAAqB,UAAU,SAAS;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAEA,SAAO,cAAc,SAAS,CAAC,MAAM,CAAC;AAGxC;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var useSupported_exports = {};
|
|
20
|
+
__export(useSupported_exports, {
|
|
21
|
+
useSupported: () => useSupported
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(useSupported_exports);
|
|
24
|
+
var import_react = require("@legendapp/state/react");
|
|
25
|
+
// @__NO_SIDE_EFFECTS__
|
|
26
|
+
function useSupported(callback) {
|
|
27
|
+
const isMounted = (0, import_react.useIsMounted)();
|
|
28
|
+
return (0, import_react.useObservable)(() => {
|
|
29
|
+
if (!isMounted.get()) return false;
|
|
30
|
+
return Boolean(callback());
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
useSupported
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useSupported/index.ts"],"sourcesContent":["import { Observable } from \"@legendapp/state\";\nimport { useIsMounted, useObservable } from \"@legendapp/state/react\";\n\nexport type UseSupportedReturn = Observable<boolean>;\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function useSupported(callback: () => unknown): UseSupportedReturn {\n const isMounted = useIsMounted();\n\n return useObservable(() => {\n if (!isMounted.get()) return false;\n return Boolean(callback());\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA4C;AAAA;AAKrC,SAAS,aAAa,UAA6C;AACxE,QAAM,gBAAY,2BAAa;AAE/B,aAAO,4BAAc,MAAM;AACzB,QAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAC7B,WAAO,QAAQ,SAAS,CAAC;AAAA,EAC3B,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useIsMounted, useObservable } from "@legendapp/state/react";
|
|
2
|
+
// @__NO_SIDE_EFFECTS__
|
|
3
|
+
function useSupported(callback) {
|
|
4
|
+
const isMounted = useIsMounted();
|
|
5
|
+
return useObservable(() => {
|
|
6
|
+
if (!isMounted.get()) return false;
|
|
7
|
+
return Boolean(callback());
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
useSupported
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useSupported/index.ts"],"sourcesContent":["import { Observable } from \"@legendapp/state\";\nimport { useIsMounted, useObservable } from \"@legendapp/state/react\";\n\nexport type UseSupportedReturn = Observable<boolean>;\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function useSupported(callback: () => unknown): UseSupportedReturn {\n const isMounted = useIsMounted();\n\n return useObservable(() => {\n if (!isMounted.get()) return false;\n return Boolean(callback());\n });\n}\n"],"mappings":"AACA,SAAS,cAAc,qBAAqB;AAAA;AAKrC,SAAS,aAAa,UAA6C;AACxE,QAAM,YAAY,aAAa;AAE/B,SAAO,cAAc,MAAM;AACzB,QAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAC7B,WAAO,QAAQ,SAAS,CAAC;AAAA,EAC3B,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var useWhenMounted_exports = {};
|
|
20
|
+
__export(useWhenMounted_exports, {
|
|
21
|
+
useWhenMounted: () => useWhenMounted
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(useWhenMounted_exports);
|
|
24
|
+
var import_react = require("@legendapp/state/react");
|
|
25
|
+
// @__NO_SIDE_EFFECTS__
|
|
26
|
+
function useWhenMounted(callback) {
|
|
27
|
+
const isMounted = (0, import_react.useIsMounted)();
|
|
28
|
+
return (0, import_react.useObservable)(() => {
|
|
29
|
+
if (!isMounted.get()) return void 0;
|
|
30
|
+
return callback();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
useWhenMounted
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useWhenMounted/index.ts"],"sourcesContent":["import type { Observable } from \"@legendapp/state\";\nimport { useIsMounted, useObservable } from \"@legendapp/state/react\";\n\nexport type UseWhenMountedReturn<T> = Observable<T | undefined>;\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function useWhenMounted<T>(\n callback: () => T,\n): UseWhenMountedReturn<T> {\n const isMounted = useIsMounted();\n\n return useObservable(() => {\n if (!isMounted.get()) return undefined;\n return callback();\n }) as unknown as Observable<T | undefined>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA4C;AAAA;AAKrC,SAAS,eACd,UACyB;AACzB,QAAM,gBAAY,2BAAa;AAE/B,aAAO,4BAAc,MAAM;AACzB,QAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAC7B,WAAO,SAAS;AAAA,EAClB,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useIsMounted, useObservable } from "@legendapp/state/react";
|
|
2
|
+
// @__NO_SIDE_EFFECTS__
|
|
3
|
+
function useWhenMounted(callback) {
|
|
4
|
+
const isMounted = useIsMounted();
|
|
5
|
+
return useObservable(() => {
|
|
6
|
+
if (!isMounted.get()) return void 0;
|
|
7
|
+
return callback();
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
useWhenMounted
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/function/useWhenMounted/index.ts"],"sourcesContent":["import type { Observable } from \"@legendapp/state\";\nimport { useIsMounted, useObservable } from \"@legendapp/state/react\";\n\nexport type UseWhenMountedReturn<T> = Observable<T | undefined>;\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function useWhenMounted<T>(\n callback: () => T,\n): UseWhenMountedReturn<T> {\n const isMounted = useIsMounted();\n\n return useObservable(() => {\n if (!isMounted.get()) return undefined;\n return callback();\n }) as unknown as Observable<T | undefined>;\n}\n"],"mappings":"AACA,SAAS,cAAc,qBAAqB;AAAA;AAKrC,SAAS,eACd,UACyB;AACzB,QAAM,YAAY,aAAa;AAE/B,SAAO,cAAc,MAAM;AACzB,QAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAC7B,WAAO,SAAS;AAAA,EAClB,CAAC;AACH;","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { AnyFn, Arrayable, Awaitable, DeepMaybeObservable, Fn, MaybeObservable, Pausable, Stoppable, TimerHandle } from './types.mjs';
|
|
2
|
+
export { get } from './function/get/index.mjs';
|
|
3
|
+
export { peek } from './function/peek/index.mjs';
|
|
4
|
+
export { UseSupportedReturn, useSupported } from './function/useSupported/index.mjs';
|
|
5
|
+
export { UseWhenMountedReturn, useWhenMounted } from './function/useWhenMounted/index.mjs';
|
|
6
|
+
export { MaybeElement, Ref$, getElement, isRef$, peekElement, useRef$ } from './elements/useRef_/index.mjs';
|
|
7
|
+
export { UseResizeObserverOptions, UseResizeObserverReturn, useResizeObserver } from './elements/useResizeObserver/index.mjs';
|
|
8
|
+
export { UseElementSizeOptions, UseElementSizeReturn, useElementSize } from './elements/useElementSize/index.mjs';
|
|
9
|
+
export { UseElementBoundingOptions, UseElementBoundingReturn, useElementBounding } from './elements/useElementBounding/index.mjs';
|
|
10
|
+
export { UseMutationObserverOptions, UseMutationObserverReturn, useMutationObserver } from './elements/useMutationObserver/index.mjs';
|
|
11
|
+
export { UseIntersectionObserverOptions, UseIntersectionObserverReturn, useIntersectionObserver } from './elements/useIntersectionObserver/index.mjs';
|
|
12
|
+
export { UseElementVisibilityOptions, useElementVisibility } from './elements/useElementVisibility/index.mjs';
|
|
13
|
+
export { useDocumentVisibility } from './elements/useDocumentVisibility/index.mjs';
|
|
14
|
+
export { useWindowFocus } from './elements/useWindowFocus/index.mjs';
|
|
15
|
+
export { UseWindowSizeOptions, UseWindowSizeReturn, useWindowSize } from './elements/useWindowSize/index.mjs';
|
|
16
|
+
export { useParentElement } from './elements/useParentElement/index.mjs';
|
|
17
|
+
export { UseMouseInElementOptions, UseMouseInElementReturn, useMouseInElement } from './elements/useMouseInElement/index.mjs';
|
|
18
|
+
export { ArrivedState, ScrollDirections, UseScrollOptions, UseScrollReturn, useScroll } from './sensors/useScroll/index.mjs';
|
|
19
|
+
export { useWindowScroll } from './sensors/useWindowScroll/index.mjs';
|
|
20
|
+
export { GeneralEventListener, useEventListener } from './browser/useEventListener/index.mjs';
|
|
21
|
+
export { UseMediaQueryOptions, UseMediaQueryReturn, evaluateSSRQuery, useMediaQuery } from './browser/useMediaQuery/index.mjs';
|
|
22
|
+
export { normalizeTargets } from './shared/normalizeTargets/index.mjs';
|
|
23
|
+
import '@legendapp/state';
|
|
24
|
+
import 'react';
|