@surdeddd/wmkit 0.3.0 → 0.4.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 +42 -16
- package/README.ru.md +154 -10
- package/dist/angular.cjs +4 -3
- package/dist/angular.cjs.map +1 -1
- package/dist/angular.d.cts +2 -2
- package/dist/angular.d.ts +2 -2
- package/dist/angular.js +2 -1
- package/dist/angular.js.map +1 -1
- package/dist/{binder-0Oku22Nc.d.ts → binder-B2A2IZGh.d.ts} +7 -2
- package/dist/{binder-Dq_AZRbo.d.cts → binder-Dl07SXIM.d.cts} +7 -2
- package/dist/{chunk-YCHJXSTC.js → chunk-OOEDFA7K.js} +404 -135
- package/dist/chunk-OOEDFA7K.js.map +1 -0
- package/dist/{chunk-B35DANTX.cjs → chunk-TJ6QOOJ2.cjs} +405 -134
- package/dist/chunk-TJ6QOOJ2.cjs.map +1 -0
- package/dist/index.cjs +24 -16
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1 -1
- package/dist/persist.cjs +22 -3
- package/dist/persist.cjs.map +1 -1
- package/dist/persist.d.cts +3 -1
- package/dist/persist.d.ts +3 -1
- package/dist/persist.js +22 -3
- package/dist/persist.js.map +1 -1
- package/dist/popout.cjs +3 -4
- package/dist/popout.cjs.map +1 -1
- package/dist/popout.d.cts +1 -1
- package/dist/popout.d.ts +1 -1
- package/dist/popout.js +3 -4
- package/dist/popout.js.map +1 -1
- package/dist/react.cjs +4 -3
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +2 -1
- package/dist/react.js.map +1 -1
- package/dist/solid.cjs +4 -3
- package/dist/solid.cjs.map +1 -1
- package/dist/solid.d.cts +2 -2
- package/dist/solid.d.ts +2 -2
- package/dist/solid.js +2 -1
- package/dist/solid.js.map +1 -1
- package/dist/svelte.cjs +8 -5
- package/dist/svelte.cjs.map +1 -1
- package/dist/svelte.d.cts +2 -2
- package/dist/svelte.d.ts +2 -2
- package/dist/svelte.js +6 -3
- package/dist/svelte.js.map +1 -1
- package/dist/themes/retro.css +2 -0
- package/dist/{types-DdCtDHgt.d.cts → types-t6pyVYKN.d.cts} +21 -7
- package/dist/{types-DdCtDHgt.d.ts → types-t6pyVYKN.d.ts} +21 -7
- package/dist/vue.cjs +4 -3
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.d.cts +2 -2
- package/dist/vue.d.ts +2 -2
- package/dist/vue.js +2 -1
- package/dist/vue.js.map +1 -1
- package/package.json +7 -7
- package/dist/chunk-B35DANTX.cjs.map +0 -1
- package/dist/chunk-YCHJXSTC.js.map +0 -1
|
@@ -11,7 +11,7 @@ interface Bounds {
|
|
|
11
11
|
type WindowStage = 'normal' | 'minimized' | 'maximized' | 'snapped';
|
|
12
12
|
type WindowLayer = 'normal' | 'floating' | 'modal';
|
|
13
13
|
type ArrangeMode = 'cascade' | 'tile';
|
|
14
|
-
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
14
|
+
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-third' | 'center-third' | 'right-third';
|
|
15
15
|
interface WindowFlags {
|
|
16
16
|
draggable: boolean;
|
|
17
17
|
resizable: boolean;
|
|
@@ -29,8 +29,10 @@ interface WindowState extends WindowFlags {
|
|
|
29
29
|
stage: WindowStage;
|
|
30
30
|
snapZone: SnapZone | null;
|
|
31
31
|
layer: WindowLayer;
|
|
32
|
+
workspace: number;
|
|
32
33
|
minSize: Size;
|
|
33
34
|
maxSize: Size | null;
|
|
35
|
+
aspectRatio: number | null;
|
|
34
36
|
openedSeq: number;
|
|
35
37
|
meta: Record<string, unknown>;
|
|
36
38
|
}
|
|
@@ -45,20 +47,18 @@ interface WindowInit extends Partial<WindowFlags> {
|
|
|
45
47
|
minHeight?: number;
|
|
46
48
|
maxWidth?: number;
|
|
47
49
|
maxHeight?: number;
|
|
50
|
+
aspectRatio?: number;
|
|
48
51
|
stage?: WindowStage;
|
|
49
52
|
layer?: WindowLayer;
|
|
53
|
+
workspace?: number;
|
|
50
54
|
meta?: Record<string, unknown>;
|
|
51
55
|
}
|
|
52
|
-
interface HistoryEntry {
|
|
53
|
-
windows: Readonly<Record<string, WindowState>>;
|
|
54
|
-
order: readonly string[];
|
|
55
|
-
focusedId: string | null;
|
|
56
|
-
}
|
|
57
56
|
interface ManagerState {
|
|
58
57
|
windows: Readonly<Record<string, WindowState>>;
|
|
59
58
|
order: readonly string[];
|
|
60
59
|
focusedId: string | null;
|
|
61
60
|
viewport: Size;
|
|
61
|
+
workspace: number;
|
|
62
62
|
}
|
|
63
63
|
interface SerializedMaxSize {
|
|
64
64
|
width: number | null;
|
|
@@ -72,6 +72,7 @@ interface SerializedState {
|
|
|
72
72
|
windows: SerializedWindowState[];
|
|
73
73
|
order: string[];
|
|
74
74
|
focusedId: string | null;
|
|
75
|
+
workspace: number;
|
|
75
76
|
}
|
|
76
77
|
interface ManagerEvents {
|
|
77
78
|
open: {
|
|
@@ -100,6 +101,10 @@ interface ManagerEvents {
|
|
|
100
101
|
order: {
|
|
101
102
|
order: readonly string[];
|
|
102
103
|
};
|
|
104
|
+
workspace: {
|
|
105
|
+
workspace: number;
|
|
106
|
+
previous: number;
|
|
107
|
+
};
|
|
103
108
|
modalblocked: {
|
|
104
109
|
window: WindowState;
|
|
105
110
|
};
|
|
@@ -119,12 +124,14 @@ interface ManagerOptions {
|
|
|
119
124
|
};
|
|
120
125
|
idPrefix?: string;
|
|
121
126
|
historyLimit?: number;
|
|
127
|
+
workspace?: number;
|
|
122
128
|
}
|
|
123
129
|
interface WindowUpdate {
|
|
124
130
|
title?: string;
|
|
125
131
|
layer?: WindowLayer;
|
|
126
132
|
minSize?: Size;
|
|
127
133
|
maxSize?: Size | null;
|
|
134
|
+
aspectRatio?: number | null;
|
|
128
135
|
meta?: Record<string, unknown>;
|
|
129
136
|
draggable?: boolean;
|
|
130
137
|
resizable?: boolean;
|
|
@@ -148,12 +155,17 @@ interface WindowManager {
|
|
|
148
155
|
snap(id: string, zone: SnapZone): boolean;
|
|
149
156
|
move(id: string, x: number, y: number): boolean;
|
|
150
157
|
moveBy(id: string, dx: number, dy: number): boolean;
|
|
158
|
+
center(id: string): boolean;
|
|
159
|
+
sendToBack(id: string): boolean;
|
|
151
160
|
resize(id: string, patch: Partial<Bounds>): boolean;
|
|
152
161
|
update(id: string, patch: WindowUpdate): boolean;
|
|
153
162
|
get(id: string): WindowState | undefined;
|
|
154
163
|
getState(): ManagerState;
|
|
155
164
|
minimized(): readonly WindowState[];
|
|
156
165
|
setViewport(viewport: Size): void;
|
|
166
|
+
workspace(): number;
|
|
167
|
+
setWorkspace(workspace: number): boolean;
|
|
168
|
+
moveToWorkspace(id: string, workspace: number): boolean;
|
|
157
169
|
batch(run: () => void): void;
|
|
158
170
|
serialize(): SerializedState;
|
|
159
171
|
hydrate(data: SerializedState): boolean;
|
|
@@ -163,6 +175,8 @@ interface WindowManager {
|
|
|
163
175
|
canRedo(): boolean;
|
|
164
176
|
beginInteraction(): void;
|
|
165
177
|
endInteraction(): void;
|
|
178
|
+
abortInteraction(): void;
|
|
179
|
+
clearHistory(): void;
|
|
166
180
|
saveLayout(name: string): SerializedState;
|
|
167
181
|
loadLayout(name: string): boolean;
|
|
168
182
|
getLayout(name: string): SerializedState | undefined;
|
|
@@ -177,4 +191,4 @@ interface WindowManager {
|
|
|
177
191
|
destroy(): void;
|
|
178
192
|
}
|
|
179
193
|
|
|
180
|
-
export type { ArrangeMode as A, Bounds as B,
|
|
194
|
+
export type { ArrangeMode as A, Bounds as B, ManagerOptions as M, SerializedMaxSize as S, WindowManager as W, ManagerState as a, WindowState as b, ManagerEvents as c, SerializedState as d, SerializedWindowState as e, Size as f, SnapZone as g, WindowFlags as h, WindowInit as i, WindowLayer as j, WindowStage as k, WindowUpdate as l };
|
|
@@ -11,7 +11,7 @@ interface Bounds {
|
|
|
11
11
|
type WindowStage = 'normal' | 'minimized' | 'maximized' | 'snapped';
|
|
12
12
|
type WindowLayer = 'normal' | 'floating' | 'modal';
|
|
13
13
|
type ArrangeMode = 'cascade' | 'tile';
|
|
14
|
-
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
14
|
+
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-third' | 'center-third' | 'right-third';
|
|
15
15
|
interface WindowFlags {
|
|
16
16
|
draggable: boolean;
|
|
17
17
|
resizable: boolean;
|
|
@@ -29,8 +29,10 @@ interface WindowState extends WindowFlags {
|
|
|
29
29
|
stage: WindowStage;
|
|
30
30
|
snapZone: SnapZone | null;
|
|
31
31
|
layer: WindowLayer;
|
|
32
|
+
workspace: number;
|
|
32
33
|
minSize: Size;
|
|
33
34
|
maxSize: Size | null;
|
|
35
|
+
aspectRatio: number | null;
|
|
34
36
|
openedSeq: number;
|
|
35
37
|
meta: Record<string, unknown>;
|
|
36
38
|
}
|
|
@@ -45,20 +47,18 @@ interface WindowInit extends Partial<WindowFlags> {
|
|
|
45
47
|
minHeight?: number;
|
|
46
48
|
maxWidth?: number;
|
|
47
49
|
maxHeight?: number;
|
|
50
|
+
aspectRatio?: number;
|
|
48
51
|
stage?: WindowStage;
|
|
49
52
|
layer?: WindowLayer;
|
|
53
|
+
workspace?: number;
|
|
50
54
|
meta?: Record<string, unknown>;
|
|
51
55
|
}
|
|
52
|
-
interface HistoryEntry {
|
|
53
|
-
windows: Readonly<Record<string, WindowState>>;
|
|
54
|
-
order: readonly string[];
|
|
55
|
-
focusedId: string | null;
|
|
56
|
-
}
|
|
57
56
|
interface ManagerState {
|
|
58
57
|
windows: Readonly<Record<string, WindowState>>;
|
|
59
58
|
order: readonly string[];
|
|
60
59
|
focusedId: string | null;
|
|
61
60
|
viewport: Size;
|
|
61
|
+
workspace: number;
|
|
62
62
|
}
|
|
63
63
|
interface SerializedMaxSize {
|
|
64
64
|
width: number | null;
|
|
@@ -72,6 +72,7 @@ interface SerializedState {
|
|
|
72
72
|
windows: SerializedWindowState[];
|
|
73
73
|
order: string[];
|
|
74
74
|
focusedId: string | null;
|
|
75
|
+
workspace: number;
|
|
75
76
|
}
|
|
76
77
|
interface ManagerEvents {
|
|
77
78
|
open: {
|
|
@@ -100,6 +101,10 @@ interface ManagerEvents {
|
|
|
100
101
|
order: {
|
|
101
102
|
order: readonly string[];
|
|
102
103
|
};
|
|
104
|
+
workspace: {
|
|
105
|
+
workspace: number;
|
|
106
|
+
previous: number;
|
|
107
|
+
};
|
|
103
108
|
modalblocked: {
|
|
104
109
|
window: WindowState;
|
|
105
110
|
};
|
|
@@ -119,12 +124,14 @@ interface ManagerOptions {
|
|
|
119
124
|
};
|
|
120
125
|
idPrefix?: string;
|
|
121
126
|
historyLimit?: number;
|
|
127
|
+
workspace?: number;
|
|
122
128
|
}
|
|
123
129
|
interface WindowUpdate {
|
|
124
130
|
title?: string;
|
|
125
131
|
layer?: WindowLayer;
|
|
126
132
|
minSize?: Size;
|
|
127
133
|
maxSize?: Size | null;
|
|
134
|
+
aspectRatio?: number | null;
|
|
128
135
|
meta?: Record<string, unknown>;
|
|
129
136
|
draggable?: boolean;
|
|
130
137
|
resizable?: boolean;
|
|
@@ -148,12 +155,17 @@ interface WindowManager {
|
|
|
148
155
|
snap(id: string, zone: SnapZone): boolean;
|
|
149
156
|
move(id: string, x: number, y: number): boolean;
|
|
150
157
|
moveBy(id: string, dx: number, dy: number): boolean;
|
|
158
|
+
center(id: string): boolean;
|
|
159
|
+
sendToBack(id: string): boolean;
|
|
151
160
|
resize(id: string, patch: Partial<Bounds>): boolean;
|
|
152
161
|
update(id: string, patch: WindowUpdate): boolean;
|
|
153
162
|
get(id: string): WindowState | undefined;
|
|
154
163
|
getState(): ManagerState;
|
|
155
164
|
minimized(): readonly WindowState[];
|
|
156
165
|
setViewport(viewport: Size): void;
|
|
166
|
+
workspace(): number;
|
|
167
|
+
setWorkspace(workspace: number): boolean;
|
|
168
|
+
moveToWorkspace(id: string, workspace: number): boolean;
|
|
157
169
|
batch(run: () => void): void;
|
|
158
170
|
serialize(): SerializedState;
|
|
159
171
|
hydrate(data: SerializedState): boolean;
|
|
@@ -163,6 +175,8 @@ interface WindowManager {
|
|
|
163
175
|
canRedo(): boolean;
|
|
164
176
|
beginInteraction(): void;
|
|
165
177
|
endInteraction(): void;
|
|
178
|
+
abortInteraction(): void;
|
|
179
|
+
clearHistory(): void;
|
|
166
180
|
saveLayout(name: string): SerializedState;
|
|
167
181
|
loadLayout(name: string): boolean;
|
|
168
182
|
getLayout(name: string): SerializedState | undefined;
|
|
@@ -177,4 +191,4 @@ interface WindowManager {
|
|
|
177
191
|
destroy(): void;
|
|
178
192
|
}
|
|
179
193
|
|
|
180
|
-
export type { ArrangeMode as A, Bounds as B,
|
|
194
|
+
export type { ArrangeMode as A, Bounds as B, ManagerOptions as M, SerializedMaxSize as S, WindowManager as W, ManagerState as a, WindowState as b, ManagerEvents as c, SerializedState as d, SerializedWindowState as e, Size as f, SnapZone as g, WindowFlags as h, WindowInit as i, WindowLayer as j, WindowStage as k, WindowUpdate as l };
|
package/dist/vue.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkTJ6QOOJ2_cjs = require('./chunk-TJ6QOOJ2.cjs');
|
|
4
4
|
var vue = require('vue');
|
|
5
5
|
|
|
6
6
|
function disposeWithScope(dispose) {
|
|
7
7
|
if (vue.getCurrentScope()) vue.onScopeDispose(dispose);
|
|
8
8
|
}
|
|
9
9
|
function useWindowManager(options) {
|
|
10
|
-
const wm =
|
|
10
|
+
const wm = chunkTJ6QOOJ2_cjs.createWindowManager(options);
|
|
11
11
|
disposeWithScope(() => wm.destroy());
|
|
12
12
|
return wm;
|
|
13
13
|
}
|
|
@@ -25,7 +25,8 @@ function useWmWindow(wm, id) {
|
|
|
25
25
|
return vue.computed(() => state.value.windows[vue.toValue(id)]);
|
|
26
26
|
}
|
|
27
27
|
function useDesktop(wm, target, options) {
|
|
28
|
-
const binder =
|
|
28
|
+
const binder = chunkTJ6QOOJ2_cjs.createDesktopBinder(wm, options);
|
|
29
|
+
disposeWithScope(() => binder.destroy());
|
|
29
30
|
vue.watch(
|
|
30
31
|
target,
|
|
31
32
|
(element, _previous, onCleanup) => {
|
package/dist/vue.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/vue.ts"],"names":["getCurrentScope","onScopeDispose","createWindowManager","shallowRef","computed","toValue","createDesktopBinder","watch"],"mappings":";;;;;AAiBA,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 { createDesktopBinder, type DesktopBinder } from '../dom/binder'\nimport type { DesktopOptions, WindowAttachOptions } from '../dom/shared'\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapters/vue.ts"],"names":["getCurrentScope","onScopeDispose","createWindowManager","shallowRef","computed","toValue","createDesktopBinder","watch"],"mappings":";;;;;AAiBA,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,EAAA,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,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 { createDesktopBinder, type DesktopBinder } from '../dom/binder'\nimport type { DesktopOptions, WindowAttachOptions } from '../dom/shared'\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 disposeWithScope(() => binder.destroy())\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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Ref, ShallowRef, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
2
|
-
import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-
|
|
3
|
-
import { a as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './binder-
|
|
2
|
+
import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-t6pyVYKN.cjs';
|
|
3
|
+
import { a as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './binder-Dl07SXIM.cjs';
|
|
4
4
|
|
|
5
5
|
declare function useWindowManager(options?: ManagerOptions): WindowManager;
|
|
6
6
|
declare function useWmState(wm: WindowManager): ShallowRef<ManagerState>;
|
package/dist/vue.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Ref, ShallowRef, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
2
|
-
import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-
|
|
3
|
-
import { a as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './binder-
|
|
2
|
+
import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-t6pyVYKN.js';
|
|
3
|
+
import { a as DesktopOptions, D as DesktopBinder, W as WindowAttachOptions } from './binder-B2A2IZGh.js';
|
|
4
4
|
|
|
5
5
|
declare function useWindowManager(options?: ManagerOptions): WindowManager;
|
|
6
6
|
declare function useWmState(wm: WindowManager): ShallowRef<ManagerState>;
|
package/dist/vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createWindowManager, createDesktopBinder } from './chunk-
|
|
1
|
+
import { createWindowManager, createDesktopBinder } from './chunk-OOEDFA7K.js';
|
|
2
2
|
import { shallowRef, computed, toValue, watch, getCurrentScope, onScopeDispose } from 'vue';
|
|
3
3
|
|
|
4
4
|
function disposeWithScope(dispose) {
|
|
@@ -24,6 +24,7 @@ function useWmWindow(wm, id) {
|
|
|
24
24
|
}
|
|
25
25
|
function useDesktop(wm, target, options) {
|
|
26
26
|
const binder = createDesktopBinder(wm, options);
|
|
27
|
+
disposeWithScope(() => binder.destroy());
|
|
27
28
|
watch(
|
|
28
29
|
target,
|
|
29
30
|
(element, _previous, onCleanup) => {
|
package/dist/vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/vue.ts"],"names":[],"mappings":";;;AAiBA,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 { createDesktopBinder, type DesktopBinder } from '../dom/binder'\nimport type { DesktopOptions, WindowAttachOptions } from '../dom/shared'\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapters/vue.ts"],"names":[],"mappings":";;;AAiBA,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,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,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 { createDesktopBinder, type DesktopBinder } from '../dom/binder'\nimport type { DesktopOptions, WindowAttachOptions } from '../dom/shared'\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 disposeWithScope(() => binder.destroy())\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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surdeddd/wmkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Headless, framework-agnostic window manager for the web — draggable, resizable, snappable windows with first-class accessibility and 60fps performance",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"window-manager",
|
|
@@ -203,12 +203,12 @@
|
|
|
203
203
|
{
|
|
204
204
|
"name": "core",
|
|
205
205
|
"path": "dist/index.js",
|
|
206
|
-
"limit": "
|
|
206
|
+
"limit": "12 kB"
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
"name": "react adapter",
|
|
210
210
|
"path": "dist/react.js",
|
|
211
|
-
"limit": "
|
|
211
|
+
"limit": "12 kB",
|
|
212
212
|
"ignore": [
|
|
213
213
|
"react"
|
|
214
214
|
]
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
{
|
|
217
217
|
"name": "vue adapter",
|
|
218
218
|
"path": "dist/vue.js",
|
|
219
|
-
"limit": "
|
|
219
|
+
"limit": "12 kB",
|
|
220
220
|
"ignore": [
|
|
221
221
|
"vue"
|
|
222
222
|
]
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
{
|
|
225
225
|
"name": "svelte adapter",
|
|
226
226
|
"path": "dist/svelte.js",
|
|
227
|
-
"limit": "
|
|
227
|
+
"limit": "12 kB",
|
|
228
228
|
"ignore": [
|
|
229
229
|
"svelte"
|
|
230
230
|
]
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
{
|
|
233
233
|
"name": "solid adapter",
|
|
234
234
|
"path": "dist/solid.js",
|
|
235
|
-
"limit": "
|
|
235
|
+
"limit": "12 kB",
|
|
236
236
|
"ignore": [
|
|
237
237
|
"solid-js"
|
|
238
238
|
]
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
{
|
|
241
241
|
"name": "angular adapter",
|
|
242
242
|
"path": "dist/angular.js",
|
|
243
|
-
"limit": "
|
|
243
|
+
"limit": "12 kB",
|
|
244
244
|
"ignore": [
|
|
245
245
|
"@angular/core"
|
|
246
246
|
]
|