@surdeddd/wmkit 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -16
- package/README.ru.md +33 -9
- package/dist/angular.cjs +53 -0
- package/dist/angular.cjs.map +1 -0
- package/dist/angular.d.cts +15 -0
- package/dist/angular.d.ts +15 -0
- package/dist/angular.js +48 -0
- package/dist/angular.js.map +1 -0
- package/dist/{binder-BY-saDUB.d.cts → binder-B2A2IZGh.d.ts} +19 -2
- package/dist/{binder-D9UEE1SM.d.ts → binder-Dl07SXIM.d.cts} +19 -2
- package/dist/{chunk-KQCVZ2W7.cjs → chunk-3KZZOLHW.cjs} +691 -156
- package/dist/chunk-3KZZOLHW.cjs.map +1 -0
- package/dist/{chunk-2TVOEDRG.js → chunk-FPZDAKNP.js} +689 -157
- package/dist/chunk-FPZDAKNP.js.map +1 -0
- package/dist/index.cjs +27 -15
- 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/light.css +202 -0
- package/dist/themes/retro.css +154 -0
- package/dist/{types-Bkrq2djr.d.cts → types-t6pyVYKN.d.cts} +38 -2
- package/dist/{types-Bkrq2djr.d.ts → types-t6pyVYKN.d.ts} +38 -2
- 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 +34 -7
- package/dist/chunk-2TVOEDRG.js.map +0 -1
- package/dist/chunk-KQCVZ2W7.cjs.map +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
[data-wm-desktop] {
|
|
2
|
+
--wm-radius: 12px;
|
|
3
|
+
--wm-bg: rgba(255, 255, 255, 0.78);
|
|
4
|
+
--wm-bg-focused: rgba(255, 255, 255, 0.94);
|
|
5
|
+
--wm-border: rgba(15, 23, 42, 0.1);
|
|
6
|
+
--wm-border-focused: rgba(15, 23, 42, 0.22);
|
|
7
|
+
--wm-shadow: 0 6px 22px rgba(15, 23, 42, 0.12);
|
|
8
|
+
--wm-shadow-focused: 0 16px 44px rgba(15, 23, 42, 0.2);
|
|
9
|
+
--wm-titlebar-bg: rgba(15, 23, 42, 0.03);
|
|
10
|
+
--wm-text: rgba(15, 23, 42, 0.92);
|
|
11
|
+
--wm-text-dim: rgba(15, 23, 42, 0.55);
|
|
12
|
+
--wm-accent: #4f46e5;
|
|
13
|
+
--wm-blur: 18px;
|
|
14
|
+
--wm-transition: 240ms cubic-bezier(0.32, 0.72, 0, 1);
|
|
15
|
+
position: relative;
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[data-wm-window] {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
color: var(--wm-text);
|
|
24
|
+
background: var(--wm-bg);
|
|
25
|
+
-webkit-backdrop-filter: blur(var(--wm-blur)) saturate(1.2);
|
|
26
|
+
backdrop-filter: blur(var(--wm-blur)) saturate(1.2);
|
|
27
|
+
border: 1px solid var(--wm-border);
|
|
28
|
+
border-radius: var(--wm-radius);
|
|
29
|
+
box-shadow: var(--wm-shadow);
|
|
30
|
+
outline: none;
|
|
31
|
+
contain: layout style;
|
|
32
|
+
transition:
|
|
33
|
+
transform var(--wm-transition),
|
|
34
|
+
width var(--wm-transition),
|
|
35
|
+
height var(--wm-transition),
|
|
36
|
+
box-shadow 180ms ease,
|
|
37
|
+
border-color 180ms ease,
|
|
38
|
+
opacity 180ms ease;
|
|
39
|
+
animation: wm-window-in 220ms cubic-bezier(0.32, 0.72, 0, 1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-wm-window][hidden] {
|
|
43
|
+
display: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[data-wm-window][data-wm-focused] {
|
|
47
|
+
background: var(--wm-bg-focused);
|
|
48
|
+
border-color: var(--wm-border-focused);
|
|
49
|
+
box-shadow: var(--wm-shadow-focused);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
[data-wm-window][data-wm-dragging],
|
|
53
|
+
[data-wm-window][data-wm-resizing] {
|
|
54
|
+
transition:
|
|
55
|
+
box-shadow 180ms ease,
|
|
56
|
+
border-color 180ms ease;
|
|
57
|
+
user-select: none;
|
|
58
|
+
-webkit-user-select: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
[data-wm-window][data-wm-stage="maximized"],
|
|
62
|
+
[data-wm-window][data-wm-stage="snapped"] {
|
|
63
|
+
border-radius: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
[data-wm-window][data-wm-flash] {
|
|
67
|
+
animation: wm-flash 320ms ease;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
[data-wm-window] [data-wm-drag] {
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
gap: 8px;
|
|
74
|
+
padding: 10px 14px;
|
|
75
|
+
background: var(--wm-titlebar-bg);
|
|
76
|
+
border-bottom: 1px solid var(--wm-border);
|
|
77
|
+
border-radius: var(--wm-radius) var(--wm-radius) 0 0;
|
|
78
|
+
cursor: default;
|
|
79
|
+
user-select: none;
|
|
80
|
+
-webkit-user-select: none;
|
|
81
|
+
flex-shrink: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[data-wm-window][data-wm-stage="maximized"] [data-wm-drag],
|
|
85
|
+
[data-wm-window][data-wm-stage="snapped"] [data-wm-drag] {
|
|
86
|
+
border-radius: 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[data-wm-window] [data-wm-title] {
|
|
90
|
+
flex: 1;
|
|
91
|
+
font-size: 13px;
|
|
92
|
+
font-weight: 600;
|
|
93
|
+
letter-spacing: 0.01em;
|
|
94
|
+
color: var(--wm-text);
|
|
95
|
+
white-space: nowrap;
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
[data-wm-window] [data-wm-controls] {
|
|
101
|
+
display: flex;
|
|
102
|
+
gap: 8px;
|
|
103
|
+
align-items: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
[data-wm-window] [data-wm-close],
|
|
107
|
+
[data-wm-window] [data-wm-minimize],
|
|
108
|
+
[data-wm-window] [data-wm-maximize] {
|
|
109
|
+
width: 13px;
|
|
110
|
+
height: 13px;
|
|
111
|
+
border-radius: 50%;
|
|
112
|
+
border: none;
|
|
113
|
+
padding: 0;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
transition:
|
|
116
|
+
filter 120ms ease,
|
|
117
|
+
transform 120ms ease;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
[data-wm-window] [data-wm-close]:hover,
|
|
121
|
+
[data-wm-window] [data-wm-minimize]:hover,
|
|
122
|
+
[data-wm-window] [data-wm-maximize]:hover {
|
|
123
|
+
filter: brightness(1.1);
|
|
124
|
+
transform: scale(1.12);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
[data-wm-window] [data-wm-close]:focus-visible,
|
|
128
|
+
[data-wm-window] [data-wm-minimize]:focus-visible,
|
|
129
|
+
[data-wm-window] [data-wm-maximize]:focus-visible {
|
|
130
|
+
outline: 2px solid var(--wm-accent);
|
|
131
|
+
outline-offset: 2px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[data-wm-window] [data-wm-close] {
|
|
135
|
+
background: #ff5f57;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
[data-wm-window] [data-wm-minimize] {
|
|
139
|
+
background: #febc2e;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
[data-wm-window] [data-wm-maximize] {
|
|
143
|
+
background: #28c840;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[data-wm-window] [data-wm-content] {
|
|
147
|
+
flex: 1;
|
|
148
|
+
overflow: auto;
|
|
149
|
+
padding: 14px;
|
|
150
|
+
font-size: 14px;
|
|
151
|
+
line-height: 1.55;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
[data-wm-snap-preview] {
|
|
155
|
+
background: color-mix(in srgb, var(--wm-accent) 12%, transparent);
|
|
156
|
+
border: 1.5px solid color-mix(in srgb, var(--wm-accent) 45%, transparent);
|
|
157
|
+
border-radius: var(--wm-radius);
|
|
158
|
+
-webkit-backdrop-filter: blur(4px);
|
|
159
|
+
backdrop-filter: blur(4px);
|
|
160
|
+
transition:
|
|
161
|
+
transform 140ms cubic-bezier(0.32, 0.72, 0, 1),
|
|
162
|
+
width 140ms ease,
|
|
163
|
+
height 140ms ease;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@keyframes wm-window-in {
|
|
167
|
+
from {
|
|
168
|
+
opacity: 0;
|
|
169
|
+
scale: 0.96;
|
|
170
|
+
}
|
|
171
|
+
to {
|
|
172
|
+
opacity: 1;
|
|
173
|
+
scale: 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@keyframes wm-flash {
|
|
178
|
+
0%,
|
|
179
|
+
100% {
|
|
180
|
+
translate: 0 0;
|
|
181
|
+
}
|
|
182
|
+
20% {
|
|
183
|
+
translate: -6px 0;
|
|
184
|
+
}
|
|
185
|
+
45% {
|
|
186
|
+
translate: 5px 0;
|
|
187
|
+
}
|
|
188
|
+
70% {
|
|
189
|
+
translate: -3px 0;
|
|
190
|
+
}
|
|
191
|
+
90% {
|
|
192
|
+
translate: 2px 0;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@media (prefers-reduced-motion: reduce) {
|
|
197
|
+
[data-wm-window],
|
|
198
|
+
[data-wm-snap-preview] {
|
|
199
|
+
transition: none;
|
|
200
|
+
animation: none;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
[data-wm-desktop] {
|
|
2
|
+
--wm-face: #c0c0c0;
|
|
3
|
+
--wm-face-light: #ffffff;
|
|
4
|
+
--wm-face-dark: #808080;
|
|
5
|
+
--wm-face-darker: #404040;
|
|
6
|
+
--wm-title-active-a: #000080;
|
|
7
|
+
--wm-title-active-b: #1084d0;
|
|
8
|
+
--wm-title-inactive: #808080;
|
|
9
|
+
--wm-text: #000000;
|
|
10
|
+
--wm-text-dim: #404040;
|
|
11
|
+
--wm-accent: #000080;
|
|
12
|
+
--wm-title-text: #ffffff;
|
|
13
|
+
position: relative;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
background: #008080;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
[data-wm-window] {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
box-sizing: border-box;
|
|
22
|
+
color: var(--wm-text);
|
|
23
|
+
background: var(--wm-face);
|
|
24
|
+
border: 2px solid;
|
|
25
|
+
border-color: var(--wm-face-light) var(--wm-face-darker) var(--wm-face-darker)
|
|
26
|
+
var(--wm-face-light);
|
|
27
|
+
box-shadow: 1px 1px 0 var(--wm-face-dark);
|
|
28
|
+
outline: none;
|
|
29
|
+
contain: layout style;
|
|
30
|
+
font-family: "Pixelated MS Sans Serif", "MS Sans Serif", Tahoma, sans-serif;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[data-wm-window][hidden] {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-wm-window][data-wm-flash] {
|
|
38
|
+
animation: wm-flash 320ms ease;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
[data-wm-window] [data-wm-drag] {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 6px;
|
|
45
|
+
padding: 3px 4px;
|
|
46
|
+
margin: 2px;
|
|
47
|
+
background: linear-gradient(90deg, var(--wm-title-inactive), #b5b5b5);
|
|
48
|
+
cursor: default;
|
|
49
|
+
user-select: none;
|
|
50
|
+
-webkit-user-select: none;
|
|
51
|
+
flex-shrink: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
[data-wm-window][data-wm-focused] [data-wm-drag] {
|
|
55
|
+
background: linear-gradient(90deg, var(--wm-title-active-a), var(--wm-title-active-b));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
[data-wm-window] [data-wm-title] {
|
|
59
|
+
flex: 1;
|
|
60
|
+
font-size: 12px;
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
color: var(--wm-title-text);
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
text-overflow: ellipsis;
|
|
66
|
+
letter-spacing: 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[data-wm-window] [data-wm-controls] {
|
|
70
|
+
display: flex;
|
|
71
|
+
gap: 2px;
|
|
72
|
+
align-items: center;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
[data-wm-window] [data-wm-close],
|
|
76
|
+
[data-wm-window] [data-wm-minimize],
|
|
77
|
+
[data-wm-window] [data-wm-maximize] {
|
|
78
|
+
width: 16px;
|
|
79
|
+
height: 14px;
|
|
80
|
+
border: 1px solid;
|
|
81
|
+
border-color: var(--wm-face-light) var(--wm-face-darker) var(--wm-face-darker)
|
|
82
|
+
var(--wm-face-light);
|
|
83
|
+
background: var(--wm-face);
|
|
84
|
+
padding: 0;
|
|
85
|
+
cursor: pointer;
|
|
86
|
+
font-size: 9px;
|
|
87
|
+
line-height: 1;
|
|
88
|
+
color: var(--wm-text);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
[data-wm-window] [data-wm-close]:active,
|
|
92
|
+
[data-wm-window] [data-wm-minimize]:active,
|
|
93
|
+
[data-wm-window] [data-wm-maximize]:active {
|
|
94
|
+
border-color: var(--wm-face-darker) var(--wm-face-light) var(--wm-face-light)
|
|
95
|
+
var(--wm-face-darker);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
[data-wm-window] [data-wm-close]:focus-visible,
|
|
99
|
+
[data-wm-window] [data-wm-minimize]:focus-visible,
|
|
100
|
+
[data-wm-window] [data-wm-maximize]:focus-visible {
|
|
101
|
+
outline: 1px dotted var(--wm-text);
|
|
102
|
+
outline-offset: -3px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
[data-wm-window] [data-wm-minimize]::after {
|
|
106
|
+
content: "_";
|
|
107
|
+
font-weight: 700;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[data-wm-window] [data-wm-maximize]::after {
|
|
111
|
+
content: "□";
|
|
112
|
+
font-weight: 700;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-wm-window] [data-wm-close]::after {
|
|
116
|
+
content: "✕";
|
|
117
|
+
font-weight: 700;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
[data-wm-window] [data-wm-content] {
|
|
121
|
+
flex: 1;
|
|
122
|
+
overflow: auto;
|
|
123
|
+
padding: 8px;
|
|
124
|
+
margin: 0 2px 2px;
|
|
125
|
+
font-size: 12px;
|
|
126
|
+
line-height: 1.4;
|
|
127
|
+
background: var(--wm-face);
|
|
128
|
+
border: 1px solid;
|
|
129
|
+
border-color: var(--wm-face-dark) var(--wm-face-light) var(--wm-face-light) var(--wm-face-dark);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
[data-wm-snap-preview] {
|
|
133
|
+
background: transparent;
|
|
134
|
+
border: 2px dashed var(--wm-face-darker);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@keyframes wm-flash {
|
|
138
|
+
0%,
|
|
139
|
+
100% {
|
|
140
|
+
translate: 0 0;
|
|
141
|
+
}
|
|
142
|
+
20% {
|
|
143
|
+
translate: -6px 0;
|
|
144
|
+
}
|
|
145
|
+
45% {
|
|
146
|
+
translate: 5px 0;
|
|
147
|
+
}
|
|
148
|
+
70% {
|
|
149
|
+
translate: -3px 0;
|
|
150
|
+
}
|
|
151
|
+
90% {
|
|
152
|
+
translate: 2px 0;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -10,7 +10,8 @@ interface Bounds {
|
|
|
10
10
|
}
|
|
11
11
|
type WindowStage = 'normal' | 'minimized' | 'maximized' | 'snapped';
|
|
12
12
|
type WindowLayer = 'normal' | 'floating' | 'modal';
|
|
13
|
-
type
|
|
13
|
+
type ArrangeMode = 'cascade' | 'tile';
|
|
14
|
+
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-third' | 'center-third' | 'right-third';
|
|
14
15
|
interface WindowFlags {
|
|
15
16
|
draggable: boolean;
|
|
16
17
|
resizable: boolean;
|
|
@@ -28,8 +29,10 @@ interface WindowState extends WindowFlags {
|
|
|
28
29
|
stage: WindowStage;
|
|
29
30
|
snapZone: SnapZone | null;
|
|
30
31
|
layer: WindowLayer;
|
|
32
|
+
workspace: number;
|
|
31
33
|
minSize: Size;
|
|
32
34
|
maxSize: Size | null;
|
|
35
|
+
aspectRatio: number | null;
|
|
33
36
|
openedSeq: number;
|
|
34
37
|
meta: Record<string, unknown>;
|
|
35
38
|
}
|
|
@@ -44,8 +47,10 @@ interface WindowInit extends Partial<WindowFlags> {
|
|
|
44
47
|
minHeight?: number;
|
|
45
48
|
maxWidth?: number;
|
|
46
49
|
maxHeight?: number;
|
|
50
|
+
aspectRatio?: number;
|
|
47
51
|
stage?: WindowStage;
|
|
48
52
|
layer?: WindowLayer;
|
|
53
|
+
workspace?: number;
|
|
49
54
|
meta?: Record<string, unknown>;
|
|
50
55
|
}
|
|
51
56
|
interface ManagerState {
|
|
@@ -53,6 +58,7 @@ interface ManagerState {
|
|
|
53
58
|
order: readonly string[];
|
|
54
59
|
focusedId: string | null;
|
|
55
60
|
viewport: Size;
|
|
61
|
+
workspace: number;
|
|
56
62
|
}
|
|
57
63
|
interface SerializedMaxSize {
|
|
58
64
|
width: number | null;
|
|
@@ -66,6 +72,7 @@ interface SerializedState {
|
|
|
66
72
|
windows: SerializedWindowState[];
|
|
67
73
|
order: string[];
|
|
68
74
|
focusedId: string | null;
|
|
75
|
+
workspace: number;
|
|
69
76
|
}
|
|
70
77
|
interface ManagerEvents {
|
|
71
78
|
open: {
|
|
@@ -94,6 +101,10 @@ interface ManagerEvents {
|
|
|
94
101
|
order: {
|
|
95
102
|
order: readonly string[];
|
|
96
103
|
};
|
|
104
|
+
workspace: {
|
|
105
|
+
workspace: number;
|
|
106
|
+
previous: number;
|
|
107
|
+
};
|
|
97
108
|
modalblocked: {
|
|
98
109
|
window: WindowState;
|
|
99
110
|
};
|
|
@@ -112,12 +123,15 @@ interface ManagerOptions {
|
|
|
112
123
|
y: number;
|
|
113
124
|
};
|
|
114
125
|
idPrefix?: string;
|
|
126
|
+
historyLimit?: number;
|
|
127
|
+
workspace?: number;
|
|
115
128
|
}
|
|
116
129
|
interface WindowUpdate {
|
|
117
130
|
title?: string;
|
|
118
131
|
layer?: WindowLayer;
|
|
119
132
|
minSize?: Size;
|
|
120
133
|
maxSize?: Size | null;
|
|
134
|
+
aspectRatio?: number | null;
|
|
121
135
|
meta?: Record<string, unknown>;
|
|
122
136
|
draggable?: boolean;
|
|
123
137
|
resizable?: boolean;
|
|
@@ -141,18 +155,40 @@ interface WindowManager {
|
|
|
141
155
|
snap(id: string, zone: SnapZone): boolean;
|
|
142
156
|
move(id: string, x: number, y: number): boolean;
|
|
143
157
|
moveBy(id: string, dx: number, dy: number): boolean;
|
|
158
|
+
center(id: string): boolean;
|
|
159
|
+
sendToBack(id: string): boolean;
|
|
144
160
|
resize(id: string, patch: Partial<Bounds>): boolean;
|
|
145
161
|
update(id: string, patch: WindowUpdate): boolean;
|
|
146
162
|
get(id: string): WindowState | undefined;
|
|
147
163
|
getState(): ManagerState;
|
|
148
164
|
minimized(): readonly WindowState[];
|
|
149
165
|
setViewport(viewport: Size): void;
|
|
166
|
+
workspace(): number;
|
|
167
|
+
setWorkspace(workspace: number): boolean;
|
|
168
|
+
moveToWorkspace(id: string, workspace: number): boolean;
|
|
150
169
|
batch(run: () => void): void;
|
|
151
170
|
serialize(): SerializedState;
|
|
152
171
|
hydrate(data: SerializedState): boolean;
|
|
172
|
+
undo(): boolean;
|
|
173
|
+
redo(): boolean;
|
|
174
|
+
canUndo(): boolean;
|
|
175
|
+
canRedo(): boolean;
|
|
176
|
+
beginInteraction(): void;
|
|
177
|
+
endInteraction(): void;
|
|
178
|
+
abortInteraction(): void;
|
|
179
|
+
clearHistory(): void;
|
|
180
|
+
saveLayout(name: string): SerializedState;
|
|
181
|
+
loadLayout(name: string): boolean;
|
|
182
|
+
getLayout(name: string): SerializedState | undefined;
|
|
183
|
+
setLayout(name: string, data: SerializedState): boolean;
|
|
184
|
+
deleteLayout(name: string): boolean;
|
|
185
|
+
layoutNames(): string[];
|
|
186
|
+
arrange(mode: ArrangeMode): void;
|
|
187
|
+
minimizeAll(): void;
|
|
188
|
+
restoreAll(): void;
|
|
153
189
|
subscribe(listener: (state: ManagerState) => void): () => void;
|
|
154
190
|
on<K extends keyof ManagerEvents>(event: K, listener: (payload: ManagerEvents[K]) => void): () => void;
|
|
155
191
|
destroy(): void;
|
|
156
192
|
}
|
|
157
193
|
|
|
158
|
-
export type { 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 };
|
|
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 };
|
|
@@ -10,7 +10,8 @@ interface Bounds {
|
|
|
10
10
|
}
|
|
11
11
|
type WindowStage = 'normal' | 'minimized' | 'maximized' | 'snapped';
|
|
12
12
|
type WindowLayer = 'normal' | 'floating' | 'modal';
|
|
13
|
-
type
|
|
13
|
+
type ArrangeMode = 'cascade' | 'tile';
|
|
14
|
+
type SnapZone = 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-third' | 'center-third' | 'right-third';
|
|
14
15
|
interface WindowFlags {
|
|
15
16
|
draggable: boolean;
|
|
16
17
|
resizable: boolean;
|
|
@@ -28,8 +29,10 @@ interface WindowState extends WindowFlags {
|
|
|
28
29
|
stage: WindowStage;
|
|
29
30
|
snapZone: SnapZone | null;
|
|
30
31
|
layer: WindowLayer;
|
|
32
|
+
workspace: number;
|
|
31
33
|
minSize: Size;
|
|
32
34
|
maxSize: Size | null;
|
|
35
|
+
aspectRatio: number | null;
|
|
33
36
|
openedSeq: number;
|
|
34
37
|
meta: Record<string, unknown>;
|
|
35
38
|
}
|
|
@@ -44,8 +47,10 @@ interface WindowInit extends Partial<WindowFlags> {
|
|
|
44
47
|
minHeight?: number;
|
|
45
48
|
maxWidth?: number;
|
|
46
49
|
maxHeight?: number;
|
|
50
|
+
aspectRatio?: number;
|
|
47
51
|
stage?: WindowStage;
|
|
48
52
|
layer?: WindowLayer;
|
|
53
|
+
workspace?: number;
|
|
49
54
|
meta?: Record<string, unknown>;
|
|
50
55
|
}
|
|
51
56
|
interface ManagerState {
|
|
@@ -53,6 +58,7 @@ interface ManagerState {
|
|
|
53
58
|
order: readonly string[];
|
|
54
59
|
focusedId: string | null;
|
|
55
60
|
viewport: Size;
|
|
61
|
+
workspace: number;
|
|
56
62
|
}
|
|
57
63
|
interface SerializedMaxSize {
|
|
58
64
|
width: number | null;
|
|
@@ -66,6 +72,7 @@ interface SerializedState {
|
|
|
66
72
|
windows: SerializedWindowState[];
|
|
67
73
|
order: string[];
|
|
68
74
|
focusedId: string | null;
|
|
75
|
+
workspace: number;
|
|
69
76
|
}
|
|
70
77
|
interface ManagerEvents {
|
|
71
78
|
open: {
|
|
@@ -94,6 +101,10 @@ interface ManagerEvents {
|
|
|
94
101
|
order: {
|
|
95
102
|
order: readonly string[];
|
|
96
103
|
};
|
|
104
|
+
workspace: {
|
|
105
|
+
workspace: number;
|
|
106
|
+
previous: number;
|
|
107
|
+
};
|
|
97
108
|
modalblocked: {
|
|
98
109
|
window: WindowState;
|
|
99
110
|
};
|
|
@@ -112,12 +123,15 @@ interface ManagerOptions {
|
|
|
112
123
|
y: number;
|
|
113
124
|
};
|
|
114
125
|
idPrefix?: string;
|
|
126
|
+
historyLimit?: number;
|
|
127
|
+
workspace?: number;
|
|
115
128
|
}
|
|
116
129
|
interface WindowUpdate {
|
|
117
130
|
title?: string;
|
|
118
131
|
layer?: WindowLayer;
|
|
119
132
|
minSize?: Size;
|
|
120
133
|
maxSize?: Size | null;
|
|
134
|
+
aspectRatio?: number | null;
|
|
121
135
|
meta?: Record<string, unknown>;
|
|
122
136
|
draggable?: boolean;
|
|
123
137
|
resizable?: boolean;
|
|
@@ -141,18 +155,40 @@ interface WindowManager {
|
|
|
141
155
|
snap(id: string, zone: SnapZone): boolean;
|
|
142
156
|
move(id: string, x: number, y: number): boolean;
|
|
143
157
|
moveBy(id: string, dx: number, dy: number): boolean;
|
|
158
|
+
center(id: string): boolean;
|
|
159
|
+
sendToBack(id: string): boolean;
|
|
144
160
|
resize(id: string, patch: Partial<Bounds>): boolean;
|
|
145
161
|
update(id: string, patch: WindowUpdate): boolean;
|
|
146
162
|
get(id: string): WindowState | undefined;
|
|
147
163
|
getState(): ManagerState;
|
|
148
164
|
minimized(): readonly WindowState[];
|
|
149
165
|
setViewport(viewport: Size): void;
|
|
166
|
+
workspace(): number;
|
|
167
|
+
setWorkspace(workspace: number): boolean;
|
|
168
|
+
moveToWorkspace(id: string, workspace: number): boolean;
|
|
150
169
|
batch(run: () => void): void;
|
|
151
170
|
serialize(): SerializedState;
|
|
152
171
|
hydrate(data: SerializedState): boolean;
|
|
172
|
+
undo(): boolean;
|
|
173
|
+
redo(): boolean;
|
|
174
|
+
canUndo(): boolean;
|
|
175
|
+
canRedo(): boolean;
|
|
176
|
+
beginInteraction(): void;
|
|
177
|
+
endInteraction(): void;
|
|
178
|
+
abortInteraction(): void;
|
|
179
|
+
clearHistory(): void;
|
|
180
|
+
saveLayout(name: string): SerializedState;
|
|
181
|
+
loadLayout(name: string): boolean;
|
|
182
|
+
getLayout(name: string): SerializedState | undefined;
|
|
183
|
+
setLayout(name: string, data: SerializedState): boolean;
|
|
184
|
+
deleteLayout(name: string): boolean;
|
|
185
|
+
layoutNames(): string[];
|
|
186
|
+
arrange(mode: ArrangeMode): void;
|
|
187
|
+
minimizeAll(): void;
|
|
188
|
+
restoreAll(): void;
|
|
153
189
|
subscribe(listener: (state: ManagerState) => void): () => void;
|
|
154
190
|
on<K extends keyof ManagerEvents>(event: K, listener: (payload: ManagerEvents[K]) => void): () => void;
|
|
155
191
|
destroy(): void;
|
|
156
192
|
}
|
|
157
193
|
|
|
158
|
-
export type { 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 };
|
|
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 chunk3KZZOLHW_cjs = require('./chunk-3KZZOLHW.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 = chunk3KZZOLHW_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 = chunk3KZZOLHW_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 {
|
|
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 {
|
|
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-FPZDAKNP.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"]}
|