@surdeddd/wmkit 0.7.2 → 0.9.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 (91) hide show
  1. package/README.md +60 -3
  2. package/README.ru.md +60 -3
  3. package/dist/angular.cjs +4 -3
  4. package/dist/angular.cjs.map +1 -1
  5. package/dist/angular.d.cts +2 -1
  6. package/dist/angular.d.ts +2 -1
  7. package/dist/angular.js +2 -1
  8. package/dist/angular.js.map +1 -1
  9. package/dist/binder-DGoj0xG1.d.cts +13 -0
  10. package/dist/binder-Lo13iTVB.d.ts +13 -0
  11. package/dist/chrome.cjs +122 -0
  12. package/dist/chrome.cjs.map +1 -0
  13. package/dist/chrome.d.cts +25 -0
  14. package/dist/chrome.d.ts +25 -0
  15. package/dist/chrome.js +114 -0
  16. package/dist/chrome.js.map +1 -0
  17. package/dist/chunk-5XVIC5LH.js +140 -0
  18. package/dist/chunk-5XVIC5LH.js.map +1 -0
  19. package/dist/chunk-BDHFXEJN.cjs +149 -0
  20. package/dist/chunk-BDHFXEJN.cjs.map +1 -0
  21. package/dist/{chunk-NJAI5R4J.cjs → chunk-TUGQX3CX.js} +205 -175
  22. package/dist/chunk-TUGQX3CX.js.map +1 -0
  23. package/dist/{chunk-FOWW4LXS.js → chunk-ZWUVWRUS.cjs} +236 -178
  24. package/dist/chunk-ZWUVWRUS.cjs.map +1 -0
  25. package/dist/devtools.cjs +330 -0
  26. package/dist/devtools.cjs.map +1 -0
  27. package/dist/devtools.d.cts +43 -0
  28. package/dist/devtools.d.ts +43 -0
  29. package/dist/devtools.js +326 -0
  30. package/dist/devtools.js.map +1 -0
  31. package/dist/gestures.cjs +219 -0
  32. package/dist/gestures.cjs.map +1 -0
  33. package/dist/gestures.d.cts +19 -0
  34. package/dist/gestures.d.ts +19 -0
  35. package/dist/gestures.js +215 -0
  36. package/dist/gestures.js.map +1 -0
  37. package/dist/index.cjs +35 -34
  38. package/dist/index.d.cts +3 -2
  39. package/dist/index.d.ts +3 -2
  40. package/dist/index.js +2 -1
  41. package/dist/react.cjs +4 -3
  42. package/dist/react.cjs.map +1 -1
  43. package/dist/react.d.cts +2 -1
  44. package/dist/react.d.ts +2 -1
  45. package/dist/react.js +2 -1
  46. package/dist/react.js.map +1 -1
  47. package/dist/{binder-DvQFmO3K.d.ts → shared-BoHXlPCu.d.ts} +55 -8
  48. package/dist/{binder-_L3Iww0u.d.cts → shared-DdGFz3oy.d.cts} +55 -8
  49. package/dist/solid.cjs +4 -3
  50. package/dist/solid.cjs.map +1 -1
  51. package/dist/solid.d.cts +2 -1
  52. package/dist/solid.d.ts +2 -1
  53. package/dist/solid.js +2 -1
  54. package/dist/solid.js.map +1 -1
  55. package/dist/svelte.cjs +4 -3
  56. package/dist/svelte.cjs.map +1 -1
  57. package/dist/svelte.d.cts +2 -1
  58. package/dist/svelte.d.ts +2 -1
  59. package/dist/svelte.js +2 -1
  60. package/dist/svelte.js.map +1 -1
  61. package/dist/themes/amber.css +316 -0
  62. package/dist/themes/aqua.css +285 -0
  63. package/dist/themes/blueprint.css +303 -0
  64. package/dist/themes/brutalist.css +307 -0
  65. package/dist/themes/candy.css +277 -0
  66. package/dist/themes/carbon.css +297 -0
  67. package/dist/themes/forest.css +278 -0
  68. package/dist/themes/frost.css +279 -0
  69. package/dist/themes/glass.css +2 -1
  70. package/dist/themes/light.css +2 -1
  71. package/dist/themes/neon.css +289 -0
  72. package/dist/themes/noir.css +282 -0
  73. package/dist/themes/paper.css +258 -0
  74. package/dist/themes/retro.css +8 -0
  75. package/dist/themes/synth.css +283 -0
  76. package/dist/themes/terminal.css +273 -0
  77. package/dist/themes.cjs +8747 -0
  78. package/dist/themes.cjs.map +1 -0
  79. package/dist/themes.d.cts +12 -0
  80. package/dist/themes.d.ts +12 -0
  81. package/dist/themes.js +8742 -0
  82. package/dist/themes.js.map +1 -0
  83. package/dist/vue.cjs +4 -3
  84. package/dist/vue.cjs.map +1 -1
  85. package/dist/vue.d.cts +2 -1
  86. package/dist/vue.d.ts +2 -1
  87. package/dist/vue.js +2 -1
  88. package/dist/vue.js.map +1 -1
  89. package/package.json +80 -7
  90. package/dist/chunk-FOWW4LXS.js.map +0 -1
  91. package/dist/chunk-NJAI5R4J.cjs.map +0 -1
@@ -19,6 +19,19 @@ interface MagnetResult {
19
19
  }
20
20
  declare function magnetize(bounds: Bounds, targets: readonly Bounds[], threshold: number): MagnetResult;
21
21
 
22
+ interface WindowActions {
23
+ focus(): boolean;
24
+ close(): boolean;
25
+ minimize(): boolean;
26
+ maximize(): boolean;
27
+ toggleMaximize(): boolean;
28
+ restore(): boolean;
29
+ center(): boolean;
30
+ sendToBack(): boolean;
31
+ snap(zone: SnapZone): boolean;
32
+ moveToWorkspace(workspace: number): boolean;
33
+ }
34
+
22
35
  interface AnnouncerMessages {
23
36
  opened(title: string): string;
24
37
  closed(title: string): string;
@@ -37,6 +50,10 @@ interface Announcer {
37
50
  }
38
51
  declare function createAnnouncer(wm: WindowManager, container: HTMLElement, messages?: Partial<AnnouncerMessages>): Announcer;
39
52
 
53
+ interface Point {
54
+ x: number;
55
+ y: number;
56
+ }
40
57
  interface DesktopSnapOptions extends SnapDetectOptions {
41
58
  preview?: boolean;
42
59
  topEdge?: 'maximize' | 'top' | 'none';
@@ -72,9 +89,12 @@ interface DesktopOptions {
72
89
  magnetism?: boolean | MagnetismOptions;
73
90
  stacking?: StackingOptions;
74
91
  animation?: boolean | AnimationOptions;
92
+ gestures?: readonly DesktopGesture[];
93
+ skins?: Readonly<Record<string, WindowSkin>>;
75
94
  interactiveSelector?: string;
76
95
  beforeClose?: (window: WindowState) => boolean | void;
77
96
  minimizeTarget?: (window: WindowState) => Element | null;
97
+ windowVariant?: (window: WindowState) => string | null;
78
98
  onTitlebarContextMenu?: (window: WindowState, event: MouseEvent) => void;
79
99
  }
80
100
  interface AnimationOptions {
@@ -86,20 +106,47 @@ interface WindowAttachOptions {
86
106
  resizeHandles?: boolean;
87
107
  removeOnClose?: boolean;
88
108
  }
109
+ interface SkinContext {
110
+ doc: Document;
111
+ id: string;
112
+ window: WindowState;
113
+ actions: WindowActions;
114
+ }
115
+ interface SkinMount {
116
+ element: HTMLElement;
117
+ content: HTMLElement;
118
+ destroy?(): void;
119
+ }
120
+ type WindowSkin = (ctx: SkinContext) => SkinMount;
121
+ interface MountedWindow {
122
+ element: HTMLElement;
123
+ content: HTMLElement;
124
+ detach(): void;
125
+ }
89
126
  interface DesktopController {
90
127
  element: HTMLElement;
91
128
  wm: WindowManager;
92
129
  attachWindow(id: string, element: HTMLElement, options?: WindowAttachOptions): () => void;
130
+ mountWindow(id: string, skin: WindowSkin | string, options?: WindowAttachOptions): MountedWindow;
131
+ actions(id: string): WindowActions;
93
132
  destroy(): void;
94
133
  }
95
-
96
- interface DesktopBinder {
134
+ interface ActiveGesture {
135
+ id: string;
136
+ finish(cancelled: boolean): void;
137
+ }
138
+ interface GestureContext {
97
139
  wm: WindowManager;
98
- controller(): DesktopController | null;
99
- bindDesktop(element: HTMLElement): () => void;
100
- bindWindow(id: string, element: HTMLElement, options?: WindowAttachOptions): () => void;
101
- destroy(): void;
140
+ doc: Document;
141
+ view: Window & typeof globalThis;
142
+ desktop: HTMLElement;
143
+ toLocal(event: PointerEvent): Point;
144
+ trackRect(): () => void;
145
+ windowElement(id: string): HTMLElement | undefined;
146
+ busy(): boolean;
147
+ claim(gesture: ActiveGesture): void;
148
+ release(gesture: ActiveGesture): void;
102
149
  }
103
- declare function createDesktopBinder(wm: WindowManager, options?: DesktopOptions): DesktopBinder;
150
+ type DesktopGesture = (ctx: GestureContext) => () => void;
104
151
 
105
- export { type Announcer as A, type DesktopBinder as D, type HitAreaOptions as H, type MagnetResult as M, type SnapDetectOptions as S, type WindowAttachOptions as W, type DesktopOptions as a, type DesktopController as b, type AnnouncerMessages as c, type DesktopKeyboardOptions as d, type DesktopSnapOptions as e, type MagnetismOptions as f, applyAspect as g, boundsEqual as h, clamp as i, clampSize as j, clampToViewport as k, createAnnouncer as l, createDesktopBinder as m, defaultMessages as n, detectSnapZone as o, magnetize as p, zoneBounds as z };
152
+ export { type ActiveGesture as A, type DesktopOptions as D, type GestureContext as G, type HitAreaOptions as H, type MagnetResult as M, type SkinContext as S, type WindowAttachOptions as W, type DesktopController as a, type Announcer as b, type AnnouncerMessages as c, type DesktopGesture as d, type DesktopKeyboardOptions as e, type DesktopSnapOptions as f, type MagnetismOptions as g, type MountedWindow as h, type SkinMount as i, type SnapDetectOptions as j, type WindowActions as k, type WindowSkin as l, applyAspect as m, boundsEqual as n, clamp as o, clampSize as p, clampToViewport as q, createAnnouncer as r, defaultMessages as s, detectSnapZone as t, magnetize as u, zoneBounds as z };
package/dist/solid.cjs CHANGED
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkNJAI5R4J_cjs = require('./chunk-NJAI5R4J.cjs');
3
+ var chunkZWUVWRUS_cjs = require('./chunk-ZWUVWRUS.cjs');
4
+ require('./chunk-BDHFXEJN.cjs');
4
5
  var solidJs = require('solid-js');
5
6
 
6
7
  function disposeWithOwner(dispose) {
7
8
  if (solidJs.getOwner()) solidJs.onCleanup(dispose);
8
9
  }
9
10
  function useWindowManager(options) {
10
- const wm = chunkNJAI5R4J_cjs.createWindowManager(options);
11
+ const wm = chunkZWUVWRUS_cjs.createWindowManager(options);
11
12
  disposeWithOwner(() => wm.destroy());
12
13
  return wm;
13
14
  }
@@ -21,7 +22,7 @@ function useWmWindow(wm, id) {
21
22
  return () => state().windows[typeof id === "function" ? id() : id];
22
23
  }
23
24
  function createDesktop(wm, options) {
24
- const binder = chunkNJAI5R4J_cjs.createDesktopBinder(wm, options);
25
+ const binder = chunkZWUVWRUS_cjs.createDesktopBinder(wm, options);
25
26
  disposeWithOwner(() => binder.destroy());
26
27
  return {
27
28
  binder,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapters/solid.ts"],"names":["getOwner","onCleanup","createWindowManager","createSignal","createDesktopBinder","options"],"mappings":";;;;;AAMA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAIA,gBAAA,EAAS,EAAGC,iBAAA,CAAU,OAAO,CAAA;AACnC;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,EAA2C;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAIC,oBAAA,CAAa,EAAA,CAAG,UAAU,CAAA;AACpD,EAAA,gBAAA,CAAiB,GAAG,SAAA,CAAU,CAAC,SAAS,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACvD,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACmC;AACnC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAO,MAAM,OAAM,CAAE,OAAA,CAAQ,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,EAAG,GAAI,EAAE,CAAA;AACnE;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAwC;AACvF,EAAA,MAAM,MAAA,GAASC,qCAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,OAAA,EAAS;AACf,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AACzC,MAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,MAAA,CAAO,IAAIC,QAAAA,EAAS;AAClB,MAAA,OAAO,CAAC,OAAA,KAAY;AAClB,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,EAAA,EAAI,SAASA,QAAO,CAAA;AACrD,QAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AAAA,GACF;AACF","file":"solid.cjs","sourcesContent":["import { type Accessor, createSignal, getOwner, onCleanup } from 'solid-js'\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 disposeWithOwner(dispose: () => void): void {\n if (getOwner()) onCleanup(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithOwner(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): Accessor<ManagerState> {\n const [state, setState] = createSignal(wm.getState())\n disposeWithOwner(wm.subscribe((next) => setState(next)))\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: string | Accessor<string>,\n): Accessor<WindowState | undefined> {\n const state = useWmState(wm)\n return () => state().windows[typeof id === 'function' ? id() : id]\n}\n\nexport interface SolidDesktop {\n binder: DesktopBinder\n desktop(element: HTMLElement): void\n window(id: string, options?: WindowAttachOptions): (element: HTMLElement) => void\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SolidDesktop {\n const binder = createDesktopBinder(wm, options)\n disposeWithOwner(() => binder.destroy())\n return {\n binder,\n desktop(element) {\n const unbind = binder.bindDesktop(element)\n disposeWithOwner(unbind)\n },\n window(id, options) {\n return (element) => {\n const unbind = binder.bindWindow(id, element, options)\n disposeWithOwner(unbind)\n }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/adapters/solid.ts"],"names":["getOwner","onCleanup","createWindowManager","createSignal","createDesktopBinder","options"],"mappings":";;;;;;AAMA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAIA,gBAAA,EAAS,EAAGC,iBAAA,CAAU,OAAO,CAAA;AACnC;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,EAA2C;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAIC,oBAAA,CAAa,EAAA,CAAG,UAAU,CAAA;AACpD,EAAA,gBAAA,CAAiB,GAAG,SAAA,CAAU,CAAC,SAAS,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACvD,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACmC;AACnC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAO,MAAM,OAAM,CAAE,OAAA,CAAQ,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,EAAG,GAAI,EAAE,CAAA;AACnE;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAwC;AACvF,EAAA,MAAM,MAAA,GAASC,qCAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,OAAA,EAAS;AACf,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AACzC,MAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,MAAA,CAAO,IAAIC,QAAAA,EAAS;AAClB,MAAA,OAAO,CAAC,OAAA,KAAY;AAClB,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,EAAA,EAAI,SAASA,QAAO,CAAA;AACrD,QAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AAAA,GACF;AACF","file":"solid.cjs","sourcesContent":["import { type Accessor, createSignal, getOwner, onCleanup } from 'solid-js'\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 disposeWithOwner(dispose: () => void): void {\n if (getOwner()) onCleanup(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithOwner(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): Accessor<ManagerState> {\n const [state, setState] = createSignal(wm.getState())\n disposeWithOwner(wm.subscribe((next) => setState(next)))\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: string | Accessor<string>,\n): Accessor<WindowState | undefined> {\n const state = useWmState(wm)\n return () => state().windows[typeof id === 'function' ? id() : id]\n}\n\nexport interface SolidDesktop {\n binder: DesktopBinder\n desktop(element: HTMLElement): void\n window(id: string, options?: WindowAttachOptions): (element: HTMLElement) => void\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SolidDesktop {\n const binder = createDesktopBinder(wm, options)\n disposeWithOwner(() => binder.destroy())\n return {\n binder,\n desktop(element) {\n const unbind = binder.bindDesktop(element)\n disposeWithOwner(unbind)\n },\n window(id, options) {\n return (element) => {\n const unbind = binder.bindWindow(id, element, options)\n disposeWithOwner(unbind)\n }\n },\n }\n}\n"]}
package/dist/solid.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Accessor } from 'solid-js';
2
2
  import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-jG2lHGcA.cjs';
3
- import { D as DesktopBinder, W as WindowAttachOptions, a as DesktopOptions } from './binder-_L3Iww0u.cjs';
3
+ import { D as DesktopBinder } from './binder-DGoj0xG1.cjs';
4
+ import { W as WindowAttachOptions, D as DesktopOptions } from './shared-DdGFz3oy.cjs';
4
5
 
5
6
  declare function useWindowManager(options?: ManagerOptions): WindowManager;
6
7
  declare function useWmState(wm: WindowManager): Accessor<ManagerState>;
package/dist/solid.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Accessor } from 'solid-js';
2
2
  import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-jG2lHGcA.js';
3
- import { D as DesktopBinder, W as WindowAttachOptions, a as DesktopOptions } from './binder-DvQFmO3K.js';
3
+ import { D as DesktopBinder } from './binder-Lo13iTVB.js';
4
+ import { W as WindowAttachOptions, D as DesktopOptions } from './shared-BoHXlPCu.js';
4
5
 
5
6
  declare function useWindowManager(options?: ManagerOptions): WindowManager;
6
7
  declare function useWmState(wm: WindowManager): Accessor<ManagerState>;
package/dist/solid.js CHANGED
@@ -1,4 +1,5 @@
1
- import { createWindowManager, createDesktopBinder } from './chunk-FOWW4LXS.js';
1
+ import { createWindowManager, createDesktopBinder } from './chunk-TUGQX3CX.js';
2
+ import './chunk-5XVIC5LH.js';
2
3
  import { createSignal, getOwner, onCleanup } from 'solid-js';
3
4
 
4
5
  function disposeWithOwner(dispose) {
package/dist/solid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapters/solid.ts"],"names":["options"],"mappings":";;;AAMA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAI,QAAA,EAAS,EAAG,SAAA,CAAU,OAAO,CAAA;AACnC;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,EAA2C;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,YAAA,CAAa,EAAA,CAAG,UAAU,CAAA;AACpD,EAAA,gBAAA,CAAiB,GAAG,SAAA,CAAU,CAAC,SAAS,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACvD,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACmC;AACnC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAO,MAAM,OAAM,CAAE,OAAA,CAAQ,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,EAAG,GAAI,EAAE,CAAA;AACnE;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAwC;AACvF,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,OAAA,EAAS;AACf,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AACzC,MAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,MAAA,CAAO,IAAIA,QAAAA,EAAS;AAClB,MAAA,OAAO,CAAC,OAAA,KAAY;AAClB,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,EAAA,EAAI,SAASA,QAAO,CAAA;AACrD,QAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AAAA,GACF;AACF","file":"solid.js","sourcesContent":["import { type Accessor, createSignal, getOwner, onCleanup } from 'solid-js'\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 disposeWithOwner(dispose: () => void): void {\n if (getOwner()) onCleanup(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithOwner(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): Accessor<ManagerState> {\n const [state, setState] = createSignal(wm.getState())\n disposeWithOwner(wm.subscribe((next) => setState(next)))\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: string | Accessor<string>,\n): Accessor<WindowState | undefined> {\n const state = useWmState(wm)\n return () => state().windows[typeof id === 'function' ? id() : id]\n}\n\nexport interface SolidDesktop {\n binder: DesktopBinder\n desktop(element: HTMLElement): void\n window(id: string, options?: WindowAttachOptions): (element: HTMLElement) => void\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SolidDesktop {\n const binder = createDesktopBinder(wm, options)\n disposeWithOwner(() => binder.destroy())\n return {\n binder,\n desktop(element) {\n const unbind = binder.bindDesktop(element)\n disposeWithOwner(unbind)\n },\n window(id, options) {\n return (element) => {\n const unbind = binder.bindWindow(id, element, options)\n disposeWithOwner(unbind)\n }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/adapters/solid.ts"],"names":["options"],"mappings":";;;;AAMA,SAAS,iBAAiB,OAAA,EAA2B;AACnD,EAAA,IAAI,QAAA,EAAS,EAAG,SAAA,CAAU,OAAO,CAAA;AACnC;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,EAA2C;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,YAAA,CAAa,EAAA,CAAG,UAAU,CAAA;AACpD,EAAA,gBAAA,CAAiB,GAAG,SAAA,CAAU,CAAC,SAAS,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACvD,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,IACA,EAAA,EACmC;AACnC,EAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,EAAA,OAAO,MAAM,OAAM,CAAE,OAAA,CAAQ,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,EAAG,GAAI,EAAE,CAAA;AACnE;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAwC;AACvF,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,EAAS,CAAA;AACvC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,OAAA,EAAS;AACf,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AACzC,MAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,MAAA,CAAO,IAAIA,QAAAA,EAAS;AAClB,MAAA,OAAO,CAAC,OAAA,KAAY;AAClB,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,EAAA,EAAI,SAASA,QAAO,CAAA;AACrD,QAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AAAA,GACF;AACF","file":"solid.js","sourcesContent":["import { type Accessor, createSignal, getOwner, onCleanup } from 'solid-js'\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 disposeWithOwner(dispose: () => void): void {\n if (getOwner()) onCleanup(dispose)\n}\n\nexport function useWindowManager(options?: ManagerOptions): WindowManager {\n const wm = createWindowManager(options)\n disposeWithOwner(() => wm.destroy())\n return wm\n}\n\nexport function useWmState(wm: WindowManager): Accessor<ManagerState> {\n const [state, setState] = createSignal(wm.getState())\n disposeWithOwner(wm.subscribe((next) => setState(next)))\n return state\n}\n\nexport function useWmWindow(\n wm: WindowManager,\n id: string | Accessor<string>,\n): Accessor<WindowState | undefined> {\n const state = useWmState(wm)\n return () => state().windows[typeof id === 'function' ? id() : id]\n}\n\nexport interface SolidDesktop {\n binder: DesktopBinder\n desktop(element: HTMLElement): void\n window(id: string, options?: WindowAttachOptions): (element: HTMLElement) => void\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SolidDesktop {\n const binder = createDesktopBinder(wm, options)\n disposeWithOwner(() => binder.destroy())\n return {\n binder,\n desktop(element) {\n const unbind = binder.bindDesktop(element)\n disposeWithOwner(unbind)\n },\n window(id, options) {\n return (element) => {\n const unbind = binder.bindWindow(id, element, options)\n disposeWithOwner(unbind)\n }\n },\n }\n}\n"]}
package/dist/svelte.cjs CHANGED
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkNJAI5R4J_cjs = require('./chunk-NJAI5R4J.cjs');
3
+ var chunkZWUVWRUS_cjs = require('./chunk-ZWUVWRUS.cjs');
4
+ require('./chunk-BDHFXEJN.cjs');
4
5
 
5
6
  // src/adapters/svelte.ts
6
7
  function createManager(options) {
7
- return chunkNJAI5R4J_cjs.createWindowManager(options);
8
+ return chunkZWUVWRUS_cjs.createWindowManager(options);
8
9
  }
9
10
  function wmStore(wm) {
10
11
  return {
@@ -30,7 +31,7 @@ function wmWindowStore(wm, id) {
30
31
  };
31
32
  }
32
33
  function createDesktop(wm, options) {
33
- const binder = chunkNJAI5R4J_cjs.createDesktopBinder(wm, options);
34
+ const binder = chunkZWUVWRUS_cjs.createDesktopBinder(wm, options);
34
35
  return {
35
36
  binder,
36
37
  desktop(node) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapters/svelte.ts"],"names":["createWindowManager","createDesktopBinder"],"mappings":";;;;;AAkBO,SAAS,cAAc,OAAA,EAAyC;AACrE,EAAA,OAAOA,sCAAoB,OAAO,CAAA;AACpC;AAEO,SAAS,QAAQ,EAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,CAAA;AACjB,MAAA,OAAO,EAAA,CAAG,UAAU,GAAG,CAAA;AAAA,IACzB;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,IACA,EAAA,EACwC;AACxC,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,EAAE,CAAC,CAAA;AACd,MAAA,IAAI,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,OAAO,EAAA,CAAG,UAAU,MAAM;AACxB,QAAA,MAAM,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACtB,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAyC;AACxF,EAAA,MAAM,MAAA,GAASC,qCAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,IAAA,EAAM;AACZ,MAAA,MAAA,CAAO,YAAY,IAAI,CAAA;AACvB,MAAA,OAAO,EAAE,OAAA,EAAS,MAAM,MAAA,CAAO,SAAQ,EAAE;AAAA,IAC3C,CAAA;AAAA,IACA,MAAA,CAAO,MAAM,MAAA,EAAQ;AACnB,MAAA,IAAI,QAAQ,MAAA,CAAO,EAAA;AACnB,MAAA,IAAI,SAAS,MAAA,CAAO,UAAA,CAAW,MAAA,CAAO,EAAA,EAAI,MAAM,MAAM,CAAA;AACtD,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACvB,UAAA,MAAA,EAAO;AACP,UAAA,KAAA,GAAQ,IAAA,CAAK,EAAA;AACb,UAAA,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,MAAM,IAAI,CAAA;AAAA,QAChD,CAAA;AAAA,QACA,OAAA,GAAU;AACR,UAAA,MAAA,EAAO;AAAA,QACT;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF","file":"svelte.cjs","sourcesContent":["import { 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\nexport interface ReadableStore<T> {\n subscribe(run: (value: T) => void): () => void\n}\n\nexport interface ActionResult {\n update?(params: WindowActionParams): void\n destroy(): void\n}\n\nexport interface WindowActionParams extends WindowAttachOptions {\n id: string\n}\n\nexport function createManager(options?: ManagerOptions): WindowManager {\n return createWindowManager(options)\n}\n\nexport function wmStore(wm: WindowManager): ReadableStore<ManagerState> {\n return {\n subscribe(run) {\n run(wm.getState())\n return wm.subscribe(run)\n },\n }\n}\n\nexport function wmWindowStore(\n wm: WindowManager,\n id: string,\n): ReadableStore<WindowState | undefined> {\n return {\n subscribe(run) {\n run(wm.get(id))\n let last = wm.get(id)\n return wm.subscribe(() => {\n const next = wm.get(id)\n if (next !== last) {\n last = next\n run(next)\n }\n })\n },\n }\n}\n\nexport interface SvelteDesktop {\n binder: DesktopBinder\n desktop(node: HTMLElement): ActionResult\n window(node: HTMLElement, params: WindowActionParams): ActionResult\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SvelteDesktop {\n const binder = createDesktopBinder(wm, options)\n return {\n binder,\n desktop(node) {\n binder.bindDesktop(node)\n return { destroy: () => binder.destroy() }\n },\n window(node, params) {\n let bound = params.id\n let unbind = binder.bindWindow(params.id, node, params)\n return {\n update(next) {\n if (next.id === bound) return\n unbind()\n bound = next.id\n unbind = binder.bindWindow(next.id, node, next)\n },\n destroy() {\n unbind()\n },\n }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/adapters/svelte.ts"],"names":["createWindowManager","createDesktopBinder"],"mappings":";;;;;;AAkBO,SAAS,cAAc,OAAA,EAAyC;AACrE,EAAA,OAAOA,sCAAoB,OAAO,CAAA;AACpC;AAEO,SAAS,QAAQ,EAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,CAAA;AACjB,MAAA,OAAO,EAAA,CAAG,UAAU,GAAG,CAAA;AAAA,IACzB;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,IACA,EAAA,EACwC;AACxC,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,EAAE,CAAC,CAAA;AACd,MAAA,IAAI,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,OAAO,EAAA,CAAG,UAAU,MAAM;AACxB,QAAA,MAAM,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACtB,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAyC;AACxF,EAAA,MAAM,MAAA,GAASC,qCAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,IAAA,EAAM;AACZ,MAAA,MAAA,CAAO,YAAY,IAAI,CAAA;AACvB,MAAA,OAAO,EAAE,OAAA,EAAS,MAAM,MAAA,CAAO,SAAQ,EAAE;AAAA,IAC3C,CAAA;AAAA,IACA,MAAA,CAAO,MAAM,MAAA,EAAQ;AACnB,MAAA,IAAI,QAAQ,MAAA,CAAO,EAAA;AACnB,MAAA,IAAI,SAAS,MAAA,CAAO,UAAA,CAAW,MAAA,CAAO,EAAA,EAAI,MAAM,MAAM,CAAA;AACtD,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACvB,UAAA,MAAA,EAAO;AACP,UAAA,KAAA,GAAQ,IAAA,CAAK,EAAA;AACb,UAAA,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,MAAM,IAAI,CAAA;AAAA,QAChD,CAAA;AAAA,QACA,OAAA,GAAU;AACR,UAAA,MAAA,EAAO;AAAA,QACT;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF","file":"svelte.cjs","sourcesContent":["import { 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\nexport interface ReadableStore<T> {\n subscribe(run: (value: T) => void): () => void\n}\n\nexport interface ActionResult {\n update?(params: WindowActionParams): void\n destroy(): void\n}\n\nexport interface WindowActionParams extends WindowAttachOptions {\n id: string\n}\n\nexport function createManager(options?: ManagerOptions): WindowManager {\n return createWindowManager(options)\n}\n\nexport function wmStore(wm: WindowManager): ReadableStore<ManagerState> {\n return {\n subscribe(run) {\n run(wm.getState())\n return wm.subscribe(run)\n },\n }\n}\n\nexport function wmWindowStore(\n wm: WindowManager,\n id: string,\n): ReadableStore<WindowState | undefined> {\n return {\n subscribe(run) {\n run(wm.get(id))\n let last = wm.get(id)\n return wm.subscribe(() => {\n const next = wm.get(id)\n if (next !== last) {\n last = next\n run(next)\n }\n })\n },\n }\n}\n\nexport interface SvelteDesktop {\n binder: DesktopBinder\n desktop(node: HTMLElement): ActionResult\n window(node: HTMLElement, params: WindowActionParams): ActionResult\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SvelteDesktop {\n const binder = createDesktopBinder(wm, options)\n return {\n binder,\n desktop(node) {\n binder.bindDesktop(node)\n return { destroy: () => binder.destroy() }\n },\n window(node, params) {\n let bound = params.id\n let unbind = binder.bindWindow(params.id, node, params)\n return {\n update(next) {\n if (next.id === bound) return\n unbind()\n bound = next.id\n unbind = binder.bindWindow(next.id, node, next)\n },\n destroy() {\n unbind()\n },\n }\n },\n }\n}\n"]}
package/dist/svelte.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-jG2lHGcA.cjs';
2
- import { W as WindowAttachOptions, D as DesktopBinder, a as DesktopOptions } from './binder-_L3Iww0u.cjs';
2
+ import { D as DesktopBinder } from './binder-DGoj0xG1.cjs';
3
+ import { W as WindowAttachOptions, D as DesktopOptions } from './shared-DdGFz3oy.cjs';
3
4
 
4
5
  interface ReadableStore<T> {
5
6
  subscribe(run: (value: T) => void): () => void;
package/dist/svelte.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { W as WindowManager, M as ManagerOptions, a as ManagerState, b as WindowState } from './types-jG2lHGcA.js';
2
- import { W as WindowAttachOptions, D as DesktopBinder, a as DesktopOptions } from './binder-DvQFmO3K.js';
2
+ import { D as DesktopBinder } from './binder-Lo13iTVB.js';
3
+ import { W as WindowAttachOptions, D as DesktopOptions } from './shared-BoHXlPCu.js';
3
4
 
4
5
  interface ReadableStore<T> {
5
6
  subscribe(run: (value: T) => void): () => void;
package/dist/svelte.js CHANGED
@@ -1,4 +1,5 @@
1
- import { createWindowManager, createDesktopBinder } from './chunk-FOWW4LXS.js';
1
+ import { createWindowManager, createDesktopBinder } from './chunk-TUGQX3CX.js';
2
+ import './chunk-5XVIC5LH.js';
2
3
 
3
4
  // src/adapters/svelte.ts
4
5
  function createManager(options) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapters/svelte.ts"],"names":[],"mappings":";;;AAkBO,SAAS,cAAc,OAAA,EAAyC;AACrE,EAAA,OAAO,oBAAoB,OAAO,CAAA;AACpC;AAEO,SAAS,QAAQ,EAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,CAAA;AACjB,MAAA,OAAO,EAAA,CAAG,UAAU,GAAG,CAAA;AAAA,IACzB;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,IACA,EAAA,EACwC;AACxC,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,EAAE,CAAC,CAAA;AACd,MAAA,IAAI,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,OAAO,EAAA,CAAG,UAAU,MAAM;AACxB,QAAA,MAAM,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACtB,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAyC;AACxF,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,IAAA,EAAM;AACZ,MAAA,MAAA,CAAO,YAAY,IAAI,CAAA;AACvB,MAAA,OAAO,EAAE,OAAA,EAAS,MAAM,MAAA,CAAO,SAAQ,EAAE;AAAA,IAC3C,CAAA;AAAA,IACA,MAAA,CAAO,MAAM,MAAA,EAAQ;AACnB,MAAA,IAAI,QAAQ,MAAA,CAAO,EAAA;AACnB,MAAA,IAAI,SAAS,MAAA,CAAO,UAAA,CAAW,MAAA,CAAO,EAAA,EAAI,MAAM,MAAM,CAAA;AACtD,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACvB,UAAA,MAAA,EAAO;AACP,UAAA,KAAA,GAAQ,IAAA,CAAK,EAAA;AACb,UAAA,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,MAAM,IAAI,CAAA;AAAA,QAChD,CAAA;AAAA,QACA,OAAA,GAAU;AACR,UAAA,MAAA,EAAO;AAAA,QACT;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF","file":"svelte.js","sourcesContent":["import { 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\nexport interface ReadableStore<T> {\n subscribe(run: (value: T) => void): () => void\n}\n\nexport interface ActionResult {\n update?(params: WindowActionParams): void\n destroy(): void\n}\n\nexport interface WindowActionParams extends WindowAttachOptions {\n id: string\n}\n\nexport function createManager(options?: ManagerOptions): WindowManager {\n return createWindowManager(options)\n}\n\nexport function wmStore(wm: WindowManager): ReadableStore<ManagerState> {\n return {\n subscribe(run) {\n run(wm.getState())\n return wm.subscribe(run)\n },\n }\n}\n\nexport function wmWindowStore(\n wm: WindowManager,\n id: string,\n): ReadableStore<WindowState | undefined> {\n return {\n subscribe(run) {\n run(wm.get(id))\n let last = wm.get(id)\n return wm.subscribe(() => {\n const next = wm.get(id)\n if (next !== last) {\n last = next\n run(next)\n }\n })\n },\n }\n}\n\nexport interface SvelteDesktop {\n binder: DesktopBinder\n desktop(node: HTMLElement): ActionResult\n window(node: HTMLElement, params: WindowActionParams): ActionResult\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SvelteDesktop {\n const binder = createDesktopBinder(wm, options)\n return {\n binder,\n desktop(node) {\n binder.bindDesktop(node)\n return { destroy: () => binder.destroy() }\n },\n window(node, params) {\n let bound = params.id\n let unbind = binder.bindWindow(params.id, node, params)\n return {\n update(next) {\n if (next.id === bound) return\n unbind()\n bound = next.id\n unbind = binder.bindWindow(next.id, node, next)\n },\n destroy() {\n unbind()\n },\n }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/adapters/svelte.ts"],"names":[],"mappings":";;;;AAkBO,SAAS,cAAc,OAAA,EAAyC;AACrE,EAAA,OAAO,oBAAoB,OAAO,CAAA;AACpC;AAEO,SAAS,QAAQ,EAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,CAAA;AACjB,MAAA,OAAO,EAAA,CAAG,UAAU,GAAG,CAAA;AAAA,IACzB;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,IACA,EAAA,EACwC;AACxC,EAAA,OAAO;AAAA,IACL,UAAU,GAAA,EAAK;AACb,MAAA,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,EAAE,CAAC,CAAA;AACd,MAAA,IAAI,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,OAAO,EAAA,CAAG,UAAU,MAAM;AACxB,QAAA,MAAM,IAAA,GAAO,EAAA,CAAG,GAAA,CAAI,EAAE,CAAA;AACtB,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF;AAQO,SAAS,aAAA,CAAc,IAAmB,OAAA,EAAyC;AACxF,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,EAAA,EAAI,OAAO,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAQ,IAAA,EAAM;AACZ,MAAA,MAAA,CAAO,YAAY,IAAI,CAAA;AACvB,MAAA,OAAO,EAAE,OAAA,EAAS,MAAM,MAAA,CAAO,SAAQ,EAAE;AAAA,IAC3C,CAAA;AAAA,IACA,MAAA,CAAO,MAAM,MAAA,EAAQ;AACnB,MAAA,IAAI,QAAQ,MAAA,CAAO,EAAA;AACnB,MAAA,IAAI,SAAS,MAAA,CAAO,UAAA,CAAW,MAAA,CAAO,EAAA,EAAI,MAAM,MAAM,CAAA;AACtD,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACvB,UAAA,MAAA,EAAO;AACP,UAAA,KAAA,GAAQ,IAAA,CAAK,EAAA;AACb,UAAA,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,MAAM,IAAI,CAAA;AAAA,QAChD,CAAA;AAAA,QACA,OAAA,GAAU;AACR,UAAA,MAAA,EAAO;AAAA,QACT;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF","file":"svelte.js","sourcesContent":["import { 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\nexport interface ReadableStore<T> {\n subscribe(run: (value: T) => void): () => void\n}\n\nexport interface ActionResult {\n update?(params: WindowActionParams): void\n destroy(): void\n}\n\nexport interface WindowActionParams extends WindowAttachOptions {\n id: string\n}\n\nexport function createManager(options?: ManagerOptions): WindowManager {\n return createWindowManager(options)\n}\n\nexport function wmStore(wm: WindowManager): ReadableStore<ManagerState> {\n return {\n subscribe(run) {\n run(wm.getState())\n return wm.subscribe(run)\n },\n }\n}\n\nexport function wmWindowStore(\n wm: WindowManager,\n id: string,\n): ReadableStore<WindowState | undefined> {\n return {\n subscribe(run) {\n run(wm.get(id))\n let last = wm.get(id)\n return wm.subscribe(() => {\n const next = wm.get(id)\n if (next !== last) {\n last = next\n run(next)\n }\n })\n },\n }\n}\n\nexport interface SvelteDesktop {\n binder: DesktopBinder\n desktop(node: HTMLElement): ActionResult\n window(node: HTMLElement, params: WindowActionParams): ActionResult\n}\n\nexport function createDesktop(wm: WindowManager, options?: DesktopOptions): SvelteDesktop {\n const binder = createDesktopBinder(wm, options)\n return {\n binder,\n desktop(node) {\n binder.bindDesktop(node)\n return { destroy: () => binder.destroy() }\n },\n window(node, params) {\n let bound = params.id\n let unbind = binder.bindWindow(params.id, node, params)\n return {\n update(next) {\n if (next.id === bound) return\n unbind()\n bound = next.id\n unbind = binder.bindWindow(next.id, node, next)\n },\n destroy() {\n unbind()\n },\n }\n },\n }\n}\n"]}
@@ -0,0 +1,316 @@
1
+ [data-wm-desktop] {
2
+ --wm-radius: 6px;
3
+ --wm-bg: rgba(24, 14, 2, 0.94);
4
+ --wm-bg-focused: rgba(30, 18, 3, 0.98);
5
+ --wm-border: rgba(255, 176, 46, 0.24);
6
+ --wm-border-focused: rgba(255, 176, 46, 0.6);
7
+ --wm-shadow: 0 0 0 1px rgba(255, 176, 46, 0.06);
8
+ --wm-shadow-focused: 0 0 26px rgba(255, 176, 46, 0.22);
9
+ --wm-titlebar-bg: rgba(255, 176, 46, 0.09);
10
+ --wm-text: #ffc356;
11
+ --wm-text-dim: rgba(255, 195, 86, 0.55);
12
+ --wm-accent: #ffb02e;
13
+ --wm-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
14
+ --wm-title-font: var(--wm-mono);
15
+ --wm-title-size: 12px;
16
+ --wm-title-weight: 500;
17
+ --wm-title-tracking: 0.1em;
18
+ --wm-content-font: var(--wm-mono);
19
+ --wm-transition: 140ms linear;
20
+ position: relative;
21
+ overflow: hidden;
22
+ }
23
+
24
+ [data-wm-window] {
25
+ display: flex;
26
+ flex-direction: column;
27
+ box-sizing: border-box;
28
+ color: var(--wm-text);
29
+ background: var(--wm-bg);
30
+ border: var(--wm-border-width, 1px) solid var(--wm-border);
31
+ border-radius: var(--wm-radius);
32
+ box-shadow: var(--wm-shadow);
33
+ outline: none;
34
+ contain: layout style;
35
+ transition:
36
+ transform var(--wm-transition),
37
+ width var(--wm-transition),
38
+ height var(--wm-transition),
39
+ box-shadow 180ms ease,
40
+ border-color 180ms ease;
41
+ animation: wm-window-in 220ms cubic-bezier(0.32, 0.72, 0, 1);
42
+ }
43
+
44
+ [data-wm-window][hidden] {
45
+ display: none;
46
+ }
47
+
48
+ [data-wm-window][data-wm-focused] {
49
+ background: var(--wm-bg-focused);
50
+ border-color: var(--wm-border-focused);
51
+ box-shadow: var(--wm-shadow-focused);
52
+ }
53
+
54
+ [data-wm-window][data-wm-dragging],
55
+ [data-wm-window][data-wm-resizing],
56
+ [data-wm-window][data-wm-pinching] {
57
+ transition:
58
+ box-shadow 180ms ease,
59
+ border-color 180ms ease;
60
+ user-select: none;
61
+ -webkit-user-select: none;
62
+ }
63
+
64
+ [data-wm-window][data-wm-stage="maximized"],
65
+ [data-wm-window][data-wm-stage="snapped"] {
66
+ border-radius: 0;
67
+ }
68
+
69
+ [data-wm-window][data-wm-flash] {
70
+ animation: wm-flash 320ms ease;
71
+ }
72
+
73
+ [data-wm-window] [data-wm-drag] {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 10px;
77
+ padding: var(--wm-titlebar-padding, 10px 14px);
78
+ background: var(--wm-titlebar-bg);
79
+ border-bottom: 1px solid var(--wm-border);
80
+ border-radius: var(--wm-radius) var(--wm-radius) 0 0;
81
+ cursor: default;
82
+ user-select: none;
83
+ -webkit-user-select: none;
84
+ flex-shrink: 0;
85
+ }
86
+
87
+ [data-wm-window][data-wm-stage="maximized"] [data-wm-drag],
88
+ [data-wm-window][data-wm-stage="snapped"] [data-wm-drag] {
89
+ border-radius: 0;
90
+ }
91
+
92
+ [data-wm-window] [data-wm-title] {
93
+ flex: 1;
94
+ font-family: var(--wm-title-font, inherit);
95
+ font-size: var(--wm-title-size, 13px);
96
+ font-weight: var(--wm-title-weight, 600);
97
+ letter-spacing: var(--wm-title-tracking, 0.01em);
98
+ color: var(--wm-title-color, var(--wm-text-dim));
99
+ white-space: nowrap;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ text-transform: uppercase;
103
+ text-shadow: 0 0 10px rgba(255, 176, 46, 0.5);
104
+ }
105
+
106
+ [data-wm-window][data-wm-focused] [data-wm-title] {
107
+ color: var(--wm-title-color-focused, var(--wm-text));
108
+ }
109
+
110
+ [data-wm-window] [data-wm-controls] {
111
+ display: flex;
112
+ gap: 8px;
113
+ align-items: center;
114
+ }
115
+
116
+ [data-wm-window] [data-wm-close],
117
+ [data-wm-window] [data-wm-minimize],
118
+ [data-wm-window] [data-wm-maximize] {
119
+ display: grid;
120
+ place-items: center;
121
+ width: 16px;
122
+ height: 16px;
123
+ padding: 0;
124
+ position: relative;
125
+ border: 1px solid var(--wm-border-focused);
126
+ border-radius: 2px;
127
+ background: transparent;
128
+ color: var(--wm-text-dim);
129
+ font-family: var(--wm-mono, inherit);
130
+ font-size: 10px;
131
+ line-height: 1;
132
+ cursor: pointer;
133
+ transition:
134
+ color 140ms ease,
135
+ background 140ms ease,
136
+ border-color 140ms ease;
137
+ }
138
+
139
+ [data-wm-window] [data-wm-close]::before {
140
+ content: "\00d7";
141
+ }
142
+
143
+ [data-wm-window] [data-wm-minimize]::before {
144
+ content: "\2013";
145
+ }
146
+
147
+ [data-wm-window] [data-wm-maximize]::before {
148
+ content: "\25a1";
149
+ }
150
+
151
+ [data-wm-window] [data-wm-close]:hover {
152
+ color: #ff8f5a;
153
+ border-color: #ff8f5a;
154
+ }
155
+
156
+ [data-wm-window] [data-wm-minimize]:hover {
157
+ color: #ffb02e;
158
+ border-color: #ffb02e;
159
+ }
160
+
161
+ [data-wm-window] [data-wm-maximize]:hover {
162
+ color: #ffd88a;
163
+ border-color: #ffd88a;
164
+ }
165
+
166
+ [data-wm-window] [data-wm-close]::after,
167
+ [data-wm-window] [data-wm-minimize]::after,
168
+ [data-wm-window] [data-wm-maximize]::after {
169
+ content: "";
170
+ position: absolute;
171
+ inset: -4px;
172
+ }
173
+
174
+ [data-wm-window] [data-wm-close]:focus-visible,
175
+ [data-wm-window] [data-wm-minimize]:focus-visible,
176
+ [data-wm-window] [data-wm-maximize]:focus-visible {
177
+ outline: 2px solid var(--wm-accent);
178
+ outline-offset: 2px;
179
+ }
180
+
181
+ [data-wm-window] [data-wm-content] {
182
+ flex: 1;
183
+ overflow: auto;
184
+ padding: var(--wm-content-padding, 14px 16px);
185
+ font-family: var(--wm-content-font, inherit);
186
+ font-size: 14px;
187
+ line-height: 1.6;
188
+ text-shadow: 0 0 8px rgba(255, 176, 46, 0.28);
189
+ }
190
+
191
+ [data-wm-snap-preview] {
192
+ background: color-mix(in srgb, var(--wm-accent) 12%, transparent);
193
+ border: 1.5px solid color-mix(in srgb, var(--wm-accent) 55%, transparent);
194
+ border-radius: var(--wm-radius);
195
+ transition:
196
+ transform 140ms cubic-bezier(0.32, 0.72, 0, 1),
197
+ width 140ms ease,
198
+ height 140ms ease;
199
+ }
200
+
201
+ [data-wm-window]::after {
202
+ content: "";
203
+ position: absolute;
204
+ inset: 0;
205
+ pointer-events: none;
206
+ border-radius: inherit;
207
+ background: repeating-linear-gradient(180deg, rgba(0, 0, 0, 0.16) 0 1px, transparent 1px 3px);
208
+ }
209
+
210
+ [data-wm-window] {
211
+ position: relative;
212
+ }
213
+
214
+ @media (forced-colors: active) {
215
+ [data-wm-window]::after {
216
+ display: none;
217
+ }
218
+ }
219
+
220
+ @keyframes wm-window-in {
221
+ from {
222
+ opacity: 0;
223
+ }
224
+ to {
225
+ opacity: 1;
226
+ }
227
+ }
228
+
229
+ @keyframes wm-flash {
230
+ 0%,
231
+ 100% {
232
+ translate: 0 0;
233
+ }
234
+ 20% {
235
+ translate: -6px 0;
236
+ }
237
+ 45% {
238
+ translate: 5px 0;
239
+ }
240
+ 70% {
241
+ translate: -3px 0;
242
+ }
243
+ 90% {
244
+ translate: 2px 0;
245
+ }
246
+ }
247
+
248
+ @media (prefers-reduced-motion: reduce) {
249
+ [data-wm-window],
250
+ [data-wm-snap-preview],
251
+ [data-wm-window] [data-wm-close],
252
+ [data-wm-window] [data-wm-minimize],
253
+ [data-wm-window] [data-wm-maximize] {
254
+ transition: none;
255
+ animation: none;
256
+ }
257
+
258
+ [data-wm-window] [data-wm-close]:hover,
259
+ [data-wm-window] [data-wm-minimize]:hover,
260
+ [data-wm-window] [data-wm-maximize]:hover {
261
+ transform: none;
262
+ }
263
+ }
264
+
265
+ @media (forced-colors: active) {
266
+ [data-wm-window] {
267
+ background: Canvas;
268
+ border: 1px solid CanvasText;
269
+ }
270
+
271
+ [data-wm-window][data-wm-focused] {
272
+ border-color: Highlight;
273
+ }
274
+
275
+ [data-wm-window] [data-wm-drag] {
276
+ background: Canvas;
277
+ border-bottom: 1px solid CanvasText;
278
+ }
279
+
280
+ [data-wm-window] [data-wm-title] {
281
+ color: CanvasText;
282
+ }
283
+
284
+ [data-wm-window] [data-wm-close],
285
+ [data-wm-window] [data-wm-minimize],
286
+ [data-wm-window] [data-wm-maximize] {
287
+ display: grid;
288
+ place-items: center;
289
+ width: 18px;
290
+ height: 16px;
291
+ border: 1px solid ButtonText;
292
+ border-radius: 2px;
293
+ background: ButtonFace;
294
+ color: ButtonText;
295
+ font-size: 10px;
296
+ line-height: 1;
297
+ box-shadow: none;
298
+ }
299
+
300
+ [data-wm-window] [data-wm-close]::before {
301
+ content: "\2715";
302
+ }
303
+
304
+ [data-wm-window] [data-wm-minimize]::before {
305
+ content: "\2013";
306
+ }
307
+
308
+ [data-wm-window] [data-wm-maximize]::before {
309
+ content: "\25a1";
310
+ }
311
+
312
+ [data-wm-snap-preview] {
313
+ background: transparent;
314
+ border: 2px solid Highlight;
315
+ }
316
+ }