@surdeddd/wmkit 0.1.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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -0
  3. package/README.ru.md +120 -0
  4. package/dist/chunk-7HHDQEBI.js +1334 -0
  5. package/dist/chunk-7HHDQEBI.js.map +1 -0
  6. package/dist/chunk-KWLI7JIY.cjs +1349 -0
  7. package/dist/chunk-KWLI7JIY.cjs.map +1 -0
  8. package/dist/controller-B0bogK9N.d.cts +65 -0
  9. package/dist/controller-D5zIriLg.d.ts +65 -0
  10. package/dist/index.cjs +64 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +22 -0
  13. package/dist/index.d.ts +22 -0
  14. package/dist/index.js +3 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/persist.cjs +74 -0
  17. package/dist/persist.cjs.map +1 -0
  18. package/dist/persist.d.cts +22 -0
  19. package/dist/persist.d.ts +22 -0
  20. package/dist/persist.js +72 -0
  21. package/dist/persist.js.map +1 -0
  22. package/dist/popout.cjs +66 -0
  23. package/dist/popout.cjs.map +1 -0
  24. package/dist/popout.d.cts +28 -0
  25. package/dist/popout.d.ts +28 -0
  26. package/dist/popout.js +63 -0
  27. package/dist/popout.js.map +1 -0
  28. package/dist/react.cjs +57 -0
  29. package/dist/react.cjs.map +1 -0
  30. package/dist/react.d.cts +16 -0
  31. package/dist/react.d.ts +16 -0
  32. package/dist/react.js +51 -0
  33. package/dist/react.js.map +1 -0
  34. package/dist/solid.cjs +45 -0
  35. package/dist/solid.cjs.map +1 -0
  36. package/dist/solid.d.cts +15 -0
  37. package/dist/solid.d.ts +15 -0
  38. package/dist/solid.js +40 -0
  39. package/dist/solid.js.map +1 -0
  40. package/dist/svelte.cjs +60 -0
  41. package/dist/svelte.cjs.map +1 -0
  42. package/dist/svelte.d.cts +24 -0
  43. package/dist/svelte.d.ts +24 -0
  44. package/dist/svelte.js +55 -0
  45. package/dist/svelte.js.map +1 -0
  46. package/dist/themes/glass.css +203 -0
  47. package/dist/types-CtFzL_oA.d.cts +151 -0
  48. package/dist/types-CtFzL_oA.d.ts +151 -0
  49. package/dist/vue.cjs +54 -0
  50. package/dist/vue.cjs.map +1 -0
  51. package/dist/vue.d.cts +11 -0
  52. package/dist/vue.d.ts +11 -0
  53. package/dist/vue.js +48 -0
  54. package/dist/vue.js.map +1 -0
  55. package/package.json +257 -0
package/dist/vue.cjs ADDED
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var chunkKWLI7JIY_cjs = require('./chunk-KWLI7JIY.cjs');
4
+ var vue = require('vue');
5
+
6
+ function disposeWithScope(dispose) {
7
+ if (vue.getCurrentScope()) vue.onScopeDispose(dispose);
8
+ }
9
+ function useWindowManager(options) {
10
+ const wm = chunkKWLI7JIY_cjs.createWindowManager(options);
11
+ disposeWithScope(() => wm.destroy());
12
+ return wm;
13
+ }
14
+ function useWmState(wm) {
15
+ const state = vue.shallowRef(wm.getState());
16
+ disposeWithScope(
17
+ wm.subscribe((next) => {
18
+ state.value = next;
19
+ })
20
+ );
21
+ return state;
22
+ }
23
+ function useWmWindow(wm, id) {
24
+ const state = useWmState(wm);
25
+ return vue.computed(() => state.value.windows[vue.toValue(id)]);
26
+ }
27
+ function useDesktop(wm, target, options) {
28
+ const binder = chunkKWLI7JIY_cjs.createDesktopBinder(wm, options);
29
+ vue.watch(
30
+ target,
31
+ (element, _previous, onCleanup) => {
32
+ if (element) onCleanup(binder.bindDesktop(element));
33
+ },
34
+ { immediate: true, flush: "post" }
35
+ );
36
+ return binder;
37
+ }
38
+ function useWmWindowEl(binder, id, target, options) {
39
+ vue.watch(
40
+ [target, () => vue.toValue(id)],
41
+ ([element, windowId], _previous, onCleanup) => {
42
+ if (element && windowId) onCleanup(binder.bindWindow(windowId, element, options));
43
+ },
44
+ { immediate: true, flush: "post" }
45
+ );
46
+ }
47
+
48
+ exports.useDesktop = useDesktop;
49
+ exports.useWindowManager = useWindowManager;
50
+ exports.useWmState = useWmState;
51
+ exports.useWmWindow = useWmWindow;
52
+ exports.useWmWindowEl = useWmWindowEl;
53
+ //# sourceMappingURL=vue.cjs.map
54
+ //# sourceMappingURL=vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vue.ts"],"names":["getCurrentScope","onScopeDispose","createWindowManager","shallowRef","computed","toValue","createDesktopBinder","watch"],"mappings":";;;;;AAqBA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAIA,mBAAA,EAAgB,EAAGC,kBAAA,CAAe,OAAO,CAAA;AAC/C;AAEO,SAAS,iBAAiB,OAAA,EAAyC;AACxE,EAAA,MAAM,EAAA,GAAKC,sCAAoB,OAAO,CAAA;AACtC,EAAA,gBAAA,CAAiB,MAAM,EAAA,CAAG,OAAA,EAAS,CAAA;AACnC,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,WAAW,EAAA,EAA6C;AACtE,EAAA,MAAM,KAAA,GAAQC,cAAA,CAAW,EAAA,CAAG,QAAA,EAAU,CAAA;AACtC,EAAA,gBAAA;AAAA,IACE,EAAA,CAAG,SAAA,CAAU,CAAC,IAAA,KAAS;AACrB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAC;AAAA,GACH;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACsC;AACtC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAOC,YAAA,CAAS,MAAM,KAAA,CAAM,KAAA,CAAM,QAAQC,WAAA,CAAQ,EAAE,CAAC,CAAC,CAAA;AACxD;AAEO,SAAS,UAAA,CACd,EAAA,EACA,MAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,MAAA,GAASC,qCAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAAC,SAAA;AAAA,IACE,MAAA;AAAA,IACA,CAAC,OAAA,EAAS,SAAA,EAAW,SAAA,KAAc;AACjC,MAAA,IAAI,OAAA,EAAS,SAAA,CAAU,MAAA,CAAO,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAA;AAAO,GACnC;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,aAAA,CACd,MAAA,EACA,EAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAAA,SAAA;AAAA,IACE,CAAC,MAAA,EAAQ,MAAMF,WAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,IAC1B,CAAC,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAG,WAAW,SAAA,KAAc;AAC7C,MAAA,IAAI,OAAA,IAAW,UAAU,SAAA,CAAU,MAAA,CAAO,WAAW,QAAA,EAAU,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAA;AAAO,GACnC;AACF","file":"vue.cjs","sourcesContent":["import {\n type ComputedRef,\n computed,\n getCurrentScope,\n type MaybeRefOrGetter,\n onScopeDispose,\n type Ref,\n type ShallowRef,\n shallowRef,\n toValue,\n watch,\n} from 'vue'\nimport { createWindowManager } from './core/manager'\nimport type { ManagerOptions, ManagerState, WindowManager, WindowState } from './core/types'\nimport {\n createDesktopBinder,\n type DesktopBinder,\n type DesktopOptions,\n type WindowAttachOptions,\n} from './dom/controller'\n\nfunction disposeWithScope(dispose: () => void): void {\n if (getCurrentScope()) onScopeDispose(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithScope(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): ShallowRef<ManagerState> {\n const state = shallowRef(wm.getState())\n disposeWithScope(\n wm.subscribe((next) => {\n state.value = next\n }),\n )\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: MaybeRefOrGetter<string>,\n): ComputedRef<WindowState | undefined> {\n const state = useWmState(wm)\n return computed(() => state.value.windows[toValue(id)])\n}\n\nexport function useDesktop(\n wm: WindowManager,\n target: Ref<HTMLElement | null | undefined>,\n options?: DesktopOptions,\n): DesktopBinder {\n const binder = createDesktopBinder(wm, options)\n watch(\n target,\n (element, _previous, onCleanup) => {\n if (element) onCleanup(binder.bindDesktop(element))\n },\n { immediate: true, flush: 'post' },\n )\n return binder\n}\n\nexport function useWmWindowEl(\n binder: DesktopBinder,\n id: MaybeRefOrGetter<string>,\n target: Ref<HTMLElement | null | undefined>,\n options?: WindowAttachOptions,\n): void {\n watch(\n [target, () => toValue(id)],\n ([element, windowId], _previous, onCleanup) => {\n if (element && windowId) onCleanup(binder.bindWindow(windowId, element, options))\n },\n { immediate: true, flush: 'post' },\n )\n}\n"]}
package/dist/vue.d.cts ADDED
@@ -0,0 +1,11 @@
1
+ import { Ref, ShallowRef, MaybeRefOrGetter, ComputedRef } from 'vue';
2
+ import { W as WindowManager, M as ManagerOptions, b as ManagerState, i as WindowState } from './types-CtFzL_oA.cjs';
3
+ import { d as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './controller-B0bogK9N.cjs';
4
+
5
+ declare function useWindowManager(options?: ManagerOptions): WindowManager;
6
+ declare function useWmState(wm: WindowManager): ShallowRef<ManagerState>;
7
+ declare function useWmWindow(wm: WindowManager, id: MaybeRefOrGetter<string>): ComputedRef<WindowState | undefined>;
8
+ declare function useDesktop(wm: WindowManager, target: Ref<HTMLElement | null | undefined>, options?: DesktopOptions): DesktopBinder;
9
+ declare function useWmWindowEl(binder: DesktopBinder, id: MaybeRefOrGetter<string>, target: Ref<HTMLElement | null | undefined>, options?: WindowAttachOptions): void;
10
+
11
+ export { useDesktop, useWindowManager, useWmState, useWmWindow, useWmWindowEl };
package/dist/vue.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { Ref, ShallowRef, MaybeRefOrGetter, ComputedRef } from 'vue';
2
+ import { W as WindowManager, M as ManagerOptions, b as ManagerState, i as WindowState } from './types-CtFzL_oA.js';
3
+ import { d as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './controller-D5zIriLg.js';
4
+
5
+ declare function useWindowManager(options?: ManagerOptions): WindowManager;
6
+ declare function useWmState(wm: WindowManager): ShallowRef<ManagerState>;
7
+ declare function useWmWindow(wm: WindowManager, id: MaybeRefOrGetter<string>): ComputedRef<WindowState | undefined>;
8
+ declare function useDesktop(wm: WindowManager, target: Ref<HTMLElement | null | undefined>, options?: DesktopOptions): DesktopBinder;
9
+ declare function useWmWindowEl(binder: DesktopBinder, id: MaybeRefOrGetter<string>, target: Ref<HTMLElement | null | undefined>, options?: WindowAttachOptions): void;
10
+
11
+ export { useDesktop, useWindowManager, useWmState, useWmWindow, useWmWindowEl };
package/dist/vue.js ADDED
@@ -0,0 +1,48 @@
1
+ import { createWindowManager, createDesktopBinder } from './chunk-7HHDQEBI.js';
2
+ import { shallowRef, computed, toValue, watch, getCurrentScope, onScopeDispose } from 'vue';
3
+
4
+ function disposeWithScope(dispose) {
5
+ if (getCurrentScope()) onScopeDispose(dispose);
6
+ }
7
+ function useWindowManager(options) {
8
+ const wm = createWindowManager(options);
9
+ disposeWithScope(() => wm.destroy());
10
+ return wm;
11
+ }
12
+ function useWmState(wm) {
13
+ const state = shallowRef(wm.getState());
14
+ disposeWithScope(
15
+ wm.subscribe((next) => {
16
+ state.value = next;
17
+ })
18
+ );
19
+ return state;
20
+ }
21
+ function useWmWindow(wm, id) {
22
+ const state = useWmState(wm);
23
+ return computed(() => state.value.windows[toValue(id)]);
24
+ }
25
+ function useDesktop(wm, target, options) {
26
+ const binder = createDesktopBinder(wm, options);
27
+ watch(
28
+ target,
29
+ (element, _previous, onCleanup) => {
30
+ if (element) onCleanup(binder.bindDesktop(element));
31
+ },
32
+ { immediate: true, flush: "post" }
33
+ );
34
+ return binder;
35
+ }
36
+ function useWmWindowEl(binder, id, target, options) {
37
+ watch(
38
+ [target, () => toValue(id)],
39
+ ([element, windowId], _previous, onCleanup) => {
40
+ if (element && windowId) onCleanup(binder.bindWindow(windowId, element, options));
41
+ },
42
+ { immediate: true, flush: "post" }
43
+ );
44
+ }
45
+
46
+ export { useDesktop, useWindowManager, useWmState, useWmWindow, useWmWindowEl };
47
+ //# sourceMappingURL=vue.js.map
48
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vue.ts"],"names":[],"mappings":";;;AAqBA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAI,eAAA,EAAgB,EAAG,cAAA,CAAe,OAAO,CAAA;AAC/C;AAEO,SAAS,iBAAiB,OAAA,EAAyC;AACxE,EAAA,MAAM,EAAA,GAAK,oBAAoB,OAAO,CAAA;AACtC,EAAA,gBAAA,CAAiB,MAAM,EAAA,CAAG,OAAA,EAAS,CAAA;AACnC,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,WAAW,EAAA,EAA6C;AACtE,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,EAAA,CAAG,QAAA,EAAU,CAAA;AACtC,EAAA,gBAAA;AAAA,IACE,EAAA,CAAG,SAAA,CAAU,CAAC,IAAA,KAAS;AACrB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAC;AAAA,GACH;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACsC;AACtC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAO,QAAA,CAAS,MAAM,KAAA,CAAM,KAAA,CAAM,QAAQ,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA;AACxD;AAEO,SAAS,UAAA,CACd,EAAA,EACA,MAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,KAAA;AAAA,IACE,MAAA;AAAA,IACA,CAAC,OAAA,EAAS,SAAA,EAAW,SAAA,KAAc;AACjC,MAAA,IAAI,OAAA,EAAS,SAAA,CAAU,MAAA,CAAO,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAA;AAAO,GACnC;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,aAAA,CACd,MAAA,EACA,EAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,KAAA;AAAA,IACE,CAAC,MAAA,EAAQ,MAAM,OAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,IAC1B,CAAC,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAG,WAAW,SAAA,KAAc;AAC7C,MAAA,IAAI,OAAA,IAAW,UAAU,SAAA,CAAU,MAAA,CAAO,WAAW,QAAA,EAAU,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAA;AAAO,GACnC;AACF","file":"vue.js","sourcesContent":["import {\n type ComputedRef,\n computed,\n getCurrentScope,\n type MaybeRefOrGetter,\n onScopeDispose,\n type Ref,\n type ShallowRef,\n shallowRef,\n toValue,\n watch,\n} from 'vue'\nimport { createWindowManager } from './core/manager'\nimport type { ManagerOptions, ManagerState, WindowManager, WindowState } from './core/types'\nimport {\n createDesktopBinder,\n type DesktopBinder,\n type DesktopOptions,\n type WindowAttachOptions,\n} from './dom/controller'\n\nfunction disposeWithScope(dispose: () => void): void {\n if (getCurrentScope()) onScopeDispose(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithScope(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): ShallowRef<ManagerState> {\n const state = shallowRef(wm.getState())\n disposeWithScope(\n wm.subscribe((next) => {\n state.value = next\n }),\n )\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: MaybeRefOrGetter<string>,\n): ComputedRef<WindowState | undefined> {\n const state = useWmState(wm)\n return computed(() => state.value.windows[toValue(id)])\n}\n\nexport function useDesktop(\n wm: WindowManager,\n target: Ref<HTMLElement | null | undefined>,\n options?: DesktopOptions,\n): DesktopBinder {\n const binder = createDesktopBinder(wm, options)\n watch(\n target,\n (element, _previous, onCleanup) => {\n if (element) onCleanup(binder.bindDesktop(element))\n },\n { immediate: true, flush: 'post' },\n )\n return binder\n}\n\nexport function useWmWindowEl(\n binder: DesktopBinder,\n id: MaybeRefOrGetter<string>,\n target: Ref<HTMLElement | null | undefined>,\n options?: WindowAttachOptions,\n): void {\n watch(\n [target, () => toValue(id)],\n ([element, windowId], _previous, onCleanup) => {\n if (element && windowId) onCleanup(binder.bindWindow(windowId, element, options))\n },\n { immediate: true, flush: 'post' },\n )\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,257 @@
1
+ {
2
+ "name": "@surdeddd/wmkit",
3
+ "version": "0.1.0",
4
+ "description": "Headless, framework-agnostic window manager for the web — draggable, resizable, snappable windows with first-class accessibility and 60fps performance",
5
+ "keywords": [
6
+ "window-manager",
7
+ "windows",
8
+ "draggable",
9
+ "resizable",
10
+ "floating",
11
+ "snap",
12
+ "headless",
13
+ "desktop",
14
+ "taskbar",
15
+ "react",
16
+ "vue",
17
+ "svelte",
18
+ "solid"
19
+ ],
20
+ "license": "MIT",
21
+ "author": "Maksim Kravcov (https://github.com/Surdeddd)",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/Surdeddd/wmkit.git"
25
+ },
26
+ "homepage": "https://surdeddd.github.io/wmkit/",
27
+ "bugs": "https://github.com/Surdeddd/wmkit/issues",
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "provenance": true
31
+ },
32
+ "type": "module",
33
+ "sideEffects": [
34
+ "**/*.css"
35
+ ],
36
+ "engines": {
37
+ "node": ">=20"
38
+ },
39
+ "packageManager": "pnpm@10.32.1",
40
+ "files": [
41
+ "dist"
42
+ ],
43
+ "main": "./dist/index.cjs",
44
+ "module": "./dist/index.js",
45
+ "types": "./dist/index.d.ts",
46
+ "exports": {
47
+ ".": {
48
+ "import": {
49
+ "types": "./dist/index.d.ts",
50
+ "default": "./dist/index.js"
51
+ },
52
+ "require": {
53
+ "types": "./dist/index.d.cts",
54
+ "default": "./dist/index.cjs"
55
+ }
56
+ },
57
+ "./react": {
58
+ "import": {
59
+ "types": "./dist/react.d.ts",
60
+ "default": "./dist/react.js"
61
+ },
62
+ "require": {
63
+ "types": "./dist/react.d.cts",
64
+ "default": "./dist/react.cjs"
65
+ }
66
+ },
67
+ "./vue": {
68
+ "import": {
69
+ "types": "./dist/vue.d.ts",
70
+ "default": "./dist/vue.js"
71
+ },
72
+ "require": {
73
+ "types": "./dist/vue.d.cts",
74
+ "default": "./dist/vue.cjs"
75
+ }
76
+ },
77
+ "./svelte": {
78
+ "import": {
79
+ "types": "./dist/svelte.d.ts",
80
+ "default": "./dist/svelte.js"
81
+ },
82
+ "require": {
83
+ "types": "./dist/svelte.d.cts",
84
+ "default": "./dist/svelte.cjs"
85
+ }
86
+ },
87
+ "./solid": {
88
+ "import": {
89
+ "types": "./dist/solid.d.ts",
90
+ "default": "./dist/solid.js"
91
+ },
92
+ "require": {
93
+ "types": "./dist/solid.d.cts",
94
+ "default": "./dist/solid.cjs"
95
+ }
96
+ },
97
+ "./persist": {
98
+ "import": {
99
+ "types": "./dist/persist.d.ts",
100
+ "default": "./dist/persist.js"
101
+ },
102
+ "require": {
103
+ "types": "./dist/persist.d.cts",
104
+ "default": "./dist/persist.cjs"
105
+ }
106
+ },
107
+ "./popout": {
108
+ "import": {
109
+ "types": "./dist/popout.d.ts",
110
+ "default": "./dist/popout.js"
111
+ },
112
+ "require": {
113
+ "types": "./dist/popout.d.cts",
114
+ "default": "./dist/popout.cjs"
115
+ }
116
+ },
117
+ "./themes/*": "./dist/themes/*",
118
+ "./package.json": "./package.json"
119
+ },
120
+ "scripts": {
121
+ "build": "tsup",
122
+ "dev": "vite site",
123
+ "site:build": "vite build site",
124
+ "site:preview": "vite preview site",
125
+ "test": "vitest run",
126
+ "test:watch": "vitest",
127
+ "test:coverage": "vitest run --coverage",
128
+ "test:e2e": "playwright test",
129
+ "lint": "biome check .",
130
+ "lint:fix": "biome check --write .",
131
+ "typecheck": "tsc --noEmit",
132
+ "size": "size-limit",
133
+ "attw": "attw --pack .",
134
+ "publint": "publint",
135
+ "prepublishOnly": "pnpm build",
136
+ "verify": "pnpm lint && pnpm typecheck && pnpm test:coverage && pnpm build && pnpm size && pnpm publint && pnpm attw && pnpm test:e2e",
137
+ "changeset": "changeset",
138
+ "release:version": "changeset version",
139
+ "release:tag": "changeset tag"
140
+ },
141
+ "peerDependencies": {
142
+ "react": ">=18",
143
+ "solid-js": ">=1.8",
144
+ "svelte": ">=4",
145
+ "vue": ">=3.3"
146
+ },
147
+ "peerDependenciesMeta": {
148
+ "react": {
149
+ "optional": true
150
+ },
151
+ "solid-js": {
152
+ "optional": true
153
+ },
154
+ "svelte": {
155
+ "optional": true
156
+ },
157
+ "vue": {
158
+ "optional": true
159
+ }
160
+ },
161
+ "devDependencies": {
162
+ "@arethetypeswrong/cli": "^0.18.2",
163
+ "@axe-core/playwright": "^4.10.2",
164
+ "@biomejs/biome": "^2.0.0",
165
+ "@changesets/cli": "^2.29.5",
166
+ "@playwright/test": "^1.53.2",
167
+ "@size-limit/preset-small-lib": "^11.2.0",
168
+ "@testing-library/react": "^16.3.0",
169
+ "@types/node": "^24.0.0",
170
+ "@types/react": "^19.1.8",
171
+ "@types/react-dom": "^19.1.6",
172
+ "@vitest/coverage-v8": "^3.2.4",
173
+ "jsdom": "^26.1.0",
174
+ "publint": "^0.3.12",
175
+ "react": "^19.1.0",
176
+ "react-dom": "^19.1.0",
177
+ "size-limit": "^11.2.0",
178
+ "solid-js": "^1.9.7",
179
+ "svelte": "^5.35.2",
180
+ "tsup": "^8.5.0",
181
+ "typescript": "^5.8.3",
182
+ "vite": "^6.3.5",
183
+ "vitest": "^3.2.4",
184
+ "vue": "^3.5.17"
185
+ },
186
+ "size-limit": [
187
+ {
188
+ "name": "core",
189
+ "path": "dist/index.js",
190
+ "limit": "8.5 kB"
191
+ },
192
+ {
193
+ "name": "react adapter",
194
+ "path": "dist/react.js",
195
+ "limit": "8.5 kB",
196
+ "ignore": [
197
+ "react"
198
+ ]
199
+ },
200
+ {
201
+ "name": "vue adapter",
202
+ "path": "dist/vue.js",
203
+ "limit": "8.5 kB",
204
+ "ignore": [
205
+ "vue"
206
+ ]
207
+ },
208
+ {
209
+ "name": "svelte adapter",
210
+ "path": "dist/svelte.js",
211
+ "limit": "8.5 kB",
212
+ "ignore": [
213
+ "svelte"
214
+ ]
215
+ },
216
+ {
217
+ "name": "solid adapter",
218
+ "path": "dist/solid.js",
219
+ "limit": "8.5 kB",
220
+ "ignore": [
221
+ "solid-js"
222
+ ]
223
+ },
224
+ {
225
+ "name": "persist plugin",
226
+ "path": "dist/persist.js",
227
+ "limit": "1 kB"
228
+ },
229
+ {
230
+ "name": "popout plugin",
231
+ "path": "dist/popout.js",
232
+ "limit": "1 kB"
233
+ }
234
+ ],
235
+ "typesVersions": {
236
+ "*": {
237
+ "react": [
238
+ "./dist/react.d.ts"
239
+ ],
240
+ "vue": [
241
+ "./dist/vue.d.ts"
242
+ ],
243
+ "svelte": [
244
+ "./dist/svelte.d.ts"
245
+ ],
246
+ "solid": [
247
+ "./dist/solid.d.ts"
248
+ ],
249
+ "persist": [
250
+ "./dist/persist.d.ts"
251
+ ],
252
+ "popout": [
253
+ "./dist/popout.d.ts"
254
+ ]
255
+ }
256
+ }
257
+ }