@praxisjs/composables 0.1.1 → 0.1.2
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/CHANGELOG.md +17 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +13 -5
- package/dist/browser.js.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +16 -6
- package/dist/dom.js.map +1 -1
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +7 -3
- package/dist/utilities.js.map +1 -1
- package/package.json +3 -3
- package/src/browser.ts +13 -9
- package/src/dom.ts +16 -9
- package/src/utilities.ts +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @praxisjs/composables
|
|
2
2
|
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- bb0d4f8: **Refactor decorator system and component architecture across PraxisJS packages**
|
|
8
|
+
|
|
9
|
+
- Replaced legacy decorator signatures (`constructor`, `target`, `propertyKey`, method descriptor) with the standard TC39 decorator context API (`ClassDecoratorContext`, `ClassFieldDecoratorContext`, `ClassMethodDecoratorContext`) across `@praxisjs/decorators`, `@praxisjs/store`, `@praxisjs/concurrent`, `@praxisjs/router`, `@praxisjs/motion`, `@praxisjs/di`, and `@praxisjs/fsm`.
|
|
10
|
+
- Introduced `StatefulComponent` and `StatelessComponent` as the new base classes, replacing the deprecated `BaseComponent`/`Function Component` pattern, across `@praxisjs/core`, `@praxisjs/runtime`, `@praxisjs/devtools`, and templates.
|
|
11
|
+
- Implemented core rendering functionality in `@praxisjs/runtime` (`mountChildren`, `mountComponent`, reactive scope management) and removed the deprecated `renderer.ts`.
|
|
12
|
+
- Refactored `@praxisjs/jsx` to delegate rendering to `@praxisjs/runtime` and improved type safety with `flattenChildren` and `isComponent` utilities.
|
|
13
|
+
- Updated internal module structure with new `internal` exports in `package.json` files for shared utilities and types.
|
|
14
|
+
- Removed `experimentalDecorators`/`emitDecoratorMetadata` from `tsconfig.json` in favor of native decorator support.
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [bb0d4f8]
|
|
17
|
+
- @praxisjs/core@0.3.0
|
|
18
|
+
- @praxisjs/shared@0.2.0
|
|
19
|
+
|
|
3
20
|
## 0.1.1
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAO9D;AAED,wBAAgB,cAAc;;;EAI7B;AAED,wBAAgB,QAAQ;;;EAQvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAO9D;AAED,wBAAgB,cAAc;;;EAI7B;AAED,wBAAgB,QAAQ;;;EAQvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAiB5D;AAED,wBAAgB,OAAO,CAAC,OAAO,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAe3D"}
|
package/dist/browser.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { signal, computed } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed } from "@praxisjs/core/internal";
|
|
2
2
|
export function useMediaQuery(query) {
|
|
3
3
|
const mql = window.matchMedia(query);
|
|
4
4
|
const matches = signal(mql.matches);
|
|
5
|
-
mql.addEventListener("change", (e) => {
|
|
5
|
+
mql.addEventListener("change", (e) => {
|
|
6
|
+
matches.set(e.matches);
|
|
7
|
+
});
|
|
6
8
|
return computed(() => matches());
|
|
7
9
|
}
|
|
8
10
|
export function useColorScheme() {
|
|
@@ -30,7 +32,9 @@ export function useKeyCombo(combo) {
|
|
|
30
32
|
if (ctrl && shift && alt && (!key || e.key.toLowerCase() === key))
|
|
31
33
|
pressed.set(true);
|
|
32
34
|
});
|
|
33
|
-
window.addEventListener("keyup", () => {
|
|
35
|
+
window.addEventListener("keyup", () => {
|
|
36
|
+
pressed.set(false);
|
|
37
|
+
});
|
|
34
38
|
return computed(() => pressed());
|
|
35
39
|
}
|
|
36
40
|
export function useIdle(timeout = 60_000) {
|
|
@@ -39,9 +43,13 @@ export function useIdle(timeout = 60_000) {
|
|
|
39
43
|
const reset = () => {
|
|
40
44
|
idle.set(false);
|
|
41
45
|
clearTimeout(timer);
|
|
42
|
-
timer = setTimeout(() => {
|
|
46
|
+
timer = setTimeout(() => {
|
|
47
|
+
idle.set(true);
|
|
48
|
+
}, timeout);
|
|
43
49
|
};
|
|
44
|
-
["mousemove", "keydown", "click", "scroll", "touchstart"].forEach((e) => {
|
|
50
|
+
["mousemove", "keydown", "click", "scroll", "touchstart"].forEach((e) => {
|
|
51
|
+
window.addEventListener(e, reset, { passive: true });
|
|
52
|
+
});
|
|
45
53
|
reset();
|
|
46
54
|
return computed(() => idle());
|
|
47
55
|
}
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,SAAS,IAAI;IAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAE3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE;;;;
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,SAAS,IAAI;IAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAE3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE;;;;EAqBlE;AAED,wBAAgB,aAAa;;;EAQ5B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,WAAW,GAAG,MAAe;;;EAYtE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE;IAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,EACpC,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CAAC,OAAO,CAAC,CAYnB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE;IAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,GAAG,QAAQ,CAAC,OAAO,CAAC,CAmBpB"}
|
package/dist/dom.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { signal, computed, effect } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed, effect } from "@praxisjs/core/internal";
|
|
2
2
|
export function createRef() {
|
|
3
3
|
return { current: null };
|
|
4
4
|
}
|
|
@@ -19,7 +19,9 @@ export function useElementSize(ref) {
|
|
|
19
19
|
return {
|
|
20
20
|
width: computed(() => width()),
|
|
21
21
|
height: computed(() => height()),
|
|
22
|
-
stop: () => {
|
|
22
|
+
stop: () => {
|
|
23
|
+
observer.disconnect();
|
|
24
|
+
},
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
export function useWindowSize() {
|
|
@@ -42,11 +44,15 @@ export function useScrollPosition(target = window) {
|
|
|
42
44
|
}
|
|
43
45
|
export function useIntersection(ref, options) {
|
|
44
46
|
const visible = signal(false);
|
|
45
|
-
const observer = new IntersectionObserver(([entry]) => {
|
|
47
|
+
const observer = new IntersectionObserver(([entry]) => {
|
|
48
|
+
visible.set(entry.isIntersecting);
|
|
49
|
+
}, options);
|
|
46
50
|
effect(() => {
|
|
47
51
|
if (ref.current)
|
|
48
52
|
observer.observe(ref.current);
|
|
49
|
-
return () => {
|
|
53
|
+
return () => {
|
|
54
|
+
observer.disconnect();
|
|
55
|
+
};
|
|
50
56
|
});
|
|
51
57
|
return computed(() => visible());
|
|
52
58
|
}
|
|
@@ -56,8 +62,12 @@ export function useFocus(ref) {
|
|
|
56
62
|
const el = ref.current;
|
|
57
63
|
if (!el)
|
|
58
64
|
return;
|
|
59
|
-
const onFocus = () => {
|
|
60
|
-
|
|
65
|
+
const onFocus = () => {
|
|
66
|
+
focused.set(true);
|
|
67
|
+
};
|
|
68
|
+
const onBlur = () => {
|
|
69
|
+
focused.set(false);
|
|
70
|
+
};
|
|
61
71
|
el.addEventListener("focus", onFocus);
|
|
62
72
|
el.addEventListener("blur", onBlur);
|
|
63
73
|
return () => {
|
package/dist/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
|
package/dist/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzD,wBAAgB,YAAY,CAAC,UAAU,SAAO;iBAGlB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;;;
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzD,wBAAgB,YAAY,CAAC,UAAU,SAAO;iBAGlB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;;;EAiBjD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe;;;;;EAuBvD;AAED,wBAAgB,UAAU,CACxB,MAAM,EACF,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,GACrB,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,GACvB,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EACzB,MAAM,SAAU,GACf,QAAQ,CAAC,MAAM,CAAC,CAoBlB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,GAAG,CAAC,MAAM,iBAAiB,CAAC;;;;;;;;;;YA2B5C,MAAM;;;EAUjB"}
|
package/dist/utilities.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { signal, computed } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed } from "@praxisjs/core/internal";
|
|
2
2
|
export function useClipboard(resetDelay = 2000) {
|
|
3
3
|
const copied = signal(false);
|
|
4
4
|
const content = signal("");
|
|
@@ -7,7 +7,9 @@ export function useClipboard(resetDelay = 2000) {
|
|
|
7
7
|
await navigator.clipboard.writeText(text);
|
|
8
8
|
content.set(text);
|
|
9
9
|
copied.set(true);
|
|
10
|
-
setTimeout(() => {
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
copied.set(false);
|
|
12
|
+
}, resetDelay);
|
|
11
13
|
}
|
|
12
14
|
catch {
|
|
13
15
|
console.warn("[useClipboard] Falha ao copiar");
|
|
@@ -42,7 +44,9 @@ export function useGeolocation(options) {
|
|
|
42
44
|
export function useTimeAgo(source, locale = "pt-BR") {
|
|
43
45
|
const read = typeof source === "function" ? source : source;
|
|
44
46
|
const tick = signal(Date.now());
|
|
45
|
-
setInterval(() => {
|
|
47
|
+
setInterval(() => {
|
|
48
|
+
tick.set(Date.now());
|
|
49
|
+
}, 60_000);
|
|
46
50
|
const rtf = new Intl.RelativeTimeFormat(locale, { numeric: "auto" });
|
|
47
51
|
return computed(() => {
|
|
48
52
|
void tick();
|
package/dist/utilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisjs/composables",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"typescript": "^5.9.3"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@praxisjs/
|
|
18
|
-
"@praxisjs/
|
|
17
|
+
"@praxisjs/core": "0.3.0",
|
|
18
|
+
"@praxisjs/shared": "0.2.0"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "tsc",
|
package/src/browser.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { signal, computed } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed } from "@praxisjs/core/internal";
|
|
2
2
|
import type { Computed } from "@praxisjs/shared";
|
|
3
3
|
|
|
4
4
|
export function useMediaQuery(query: string): Computed<boolean> {
|
|
5
5
|
const mql = window.matchMedia(query);
|
|
6
6
|
const matches = signal(mql.matches);
|
|
7
|
-
mql.addEventListener("change", (e: MediaQueryListEvent) =>
|
|
8
|
-
|
|
9
|
-
);
|
|
7
|
+
mql.addEventListener("change", (e: MediaQueryListEvent) => {
|
|
8
|
+
matches.set(e.matches);
|
|
9
|
+
});
|
|
10
10
|
return computed(() => matches());
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -39,7 +39,9 @@ export function useKeyCombo(combo: string): Computed<boolean> {
|
|
|
39
39
|
if (ctrl && shift && alt && (!key || e.key.toLowerCase() === key))
|
|
40
40
|
pressed.set(true);
|
|
41
41
|
});
|
|
42
|
-
window.addEventListener("keyup", () => {
|
|
42
|
+
window.addEventListener("keyup", () => {
|
|
43
|
+
pressed.set(false);
|
|
44
|
+
});
|
|
43
45
|
return computed(() => pressed());
|
|
44
46
|
}
|
|
45
47
|
|
|
@@ -49,11 +51,13 @@ export function useIdle(timeout = 60_000): Computed<boolean> {
|
|
|
49
51
|
const reset = () => {
|
|
50
52
|
idle.set(false);
|
|
51
53
|
clearTimeout(timer);
|
|
52
|
-
timer = setTimeout(() => {
|
|
54
|
+
timer = setTimeout(() => {
|
|
55
|
+
idle.set(true);
|
|
56
|
+
}, timeout);
|
|
53
57
|
};
|
|
54
|
-
["mousemove", "keydown", "click", "scroll", "touchstart"].forEach((e) =>
|
|
55
|
-
|
|
56
|
-
);
|
|
58
|
+
["mousemove", "keydown", "click", "scroll", "touchstart"].forEach((e) => {
|
|
59
|
+
window.addEventListener(e, reset, { passive: true });
|
|
60
|
+
});
|
|
57
61
|
reset();
|
|
58
62
|
return computed(() => idle());
|
|
59
63
|
}
|
package/src/dom.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { signal, computed, effect } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed, effect } from "@praxisjs/core/internal";
|
|
2
2
|
import type { Computed } from "@praxisjs/shared";
|
|
3
3
|
|
|
4
4
|
export function createRef(): { current: HTMLElement | null } {
|
|
@@ -22,7 +22,9 @@ export function useElementSize(ref: { current: HTMLElement | null }) {
|
|
|
22
22
|
return {
|
|
23
23
|
width: computed(() => width()),
|
|
24
24
|
height: computed(() => height()),
|
|
25
|
-
stop: () => {
|
|
25
|
+
stop: () => {
|
|
26
|
+
observer.disconnect();
|
|
27
|
+
},
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
30
|
|
|
@@ -55,13 +57,14 @@ export function useIntersection(
|
|
|
55
57
|
options?: IntersectionObserverInit,
|
|
56
58
|
): Computed<boolean> {
|
|
57
59
|
const visible = signal(false);
|
|
58
|
-
const observer = new IntersectionObserver(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
);
|
|
60
|
+
const observer = new IntersectionObserver(([entry]) => {
|
|
61
|
+
visible.set(entry.isIntersecting);
|
|
62
|
+
}, options);
|
|
62
63
|
effect(() => {
|
|
63
64
|
if (ref.current) observer.observe(ref.current);
|
|
64
|
-
return () => {
|
|
65
|
+
return () => {
|
|
66
|
+
observer.disconnect();
|
|
67
|
+
};
|
|
65
68
|
});
|
|
66
69
|
return computed(() => visible());
|
|
67
70
|
}
|
|
@@ -73,8 +76,12 @@ export function useFocus(ref: {
|
|
|
73
76
|
effect(() => {
|
|
74
77
|
const el = ref.current;
|
|
75
78
|
if (!el) return;
|
|
76
|
-
const onFocus = () => {
|
|
77
|
-
|
|
79
|
+
const onFocus = () => {
|
|
80
|
+
focused.set(true);
|
|
81
|
+
};
|
|
82
|
+
const onBlur = () => {
|
|
83
|
+
focused.set(false);
|
|
84
|
+
};
|
|
78
85
|
el.addEventListener("focus", onFocus);
|
|
79
86
|
el.addEventListener("blur", onBlur);
|
|
80
87
|
return () => {
|
package/src/utilities.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { signal, computed } from "@praxisjs/core";
|
|
1
|
+
import { signal, computed } from "@praxisjs/core/internal";
|
|
2
2
|
import type { Signal, Computed } from "@praxisjs/shared";
|
|
3
3
|
|
|
4
4
|
export function useClipboard(resetDelay = 2000) {
|
|
@@ -9,7 +9,9 @@ export function useClipboard(resetDelay = 2000) {
|
|
|
9
9
|
await navigator.clipboard.writeText(text);
|
|
10
10
|
content.set(text);
|
|
11
11
|
copied.set(true);
|
|
12
|
-
setTimeout(() => {
|
|
12
|
+
setTimeout(() => {
|
|
13
|
+
copied.set(false);
|
|
14
|
+
}, resetDelay);
|
|
13
15
|
} catch {
|
|
14
16
|
console.warn("[useClipboard] Falha ao copiar");
|
|
15
17
|
}
|
|
@@ -55,7 +57,9 @@ export function useTimeAgo(
|
|
|
55
57
|
): Computed<string> {
|
|
56
58
|
const read = typeof source === "function" ? source : source;
|
|
57
59
|
const tick = signal(Date.now());
|
|
58
|
-
setInterval(() => {
|
|
60
|
+
setInterval(() => {
|
|
61
|
+
tick.set(Date.now());
|
|
62
|
+
}, 60_000);
|
|
59
63
|
const rtf = new Intl.RelativeTimeFormat(locale, { numeric: "auto" });
|
|
60
64
|
|
|
61
65
|
return computed(() => {
|