@gfazioli/mantine-window 1.2.1 → 3.0.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 (56) hide show
  1. package/README.md +27 -12
  2. package/dist/cjs/LayoutIcons.cjs +118 -0
  3. package/dist/cjs/LayoutIcons.cjs.map +1 -0
  4. package/dist/cjs/Window.cjs +173 -29
  5. package/dist/cjs/Window.cjs.map +1 -1
  6. package/dist/cjs/Window.module.css.cjs +1 -1
  7. package/dist/cjs/WindowGroup.cjs +214 -0
  8. package/dist/cjs/WindowGroup.cjs.map +1 -0
  9. package/dist/cjs/WindowGroup.context.cjs +14 -0
  10. package/dist/cjs/WindowGroup.context.cjs.map +1 -0
  11. package/dist/cjs/hooks/use-mantine-window.cjs +182 -36
  12. package/dist/cjs/hooks/use-mantine-window.cjs.map +1 -1
  13. package/dist/cjs/hooks/use-responsive-value.cjs +21 -0
  14. package/dist/cjs/hooks/use-responsive-value.cjs.map +1 -0
  15. package/dist/cjs/hooks/use-window-dimensions.cjs +20 -9
  16. package/dist/cjs/hooks/use-window-dimensions.cjs.map +1 -1
  17. package/dist/cjs/hooks/use-window-drag.cjs.map +1 -1
  18. package/dist/cjs/hooks/use-window-state.cjs +142 -64
  19. package/dist/cjs/hooks/use-window-state.cjs.map +1 -1
  20. package/dist/cjs/index.cjs +4 -0
  21. package/dist/cjs/index.cjs.map +1 -1
  22. package/dist/esm/LayoutIcons.mjs +109 -0
  23. package/dist/esm/LayoutIcons.mjs.map +1 -0
  24. package/dist/esm/Window.mjs +175 -31
  25. package/dist/esm/Window.mjs.map +1 -1
  26. package/dist/esm/Window.module.css.mjs +1 -1
  27. package/dist/esm/WindowGroup.context.mjs +11 -0
  28. package/dist/esm/WindowGroup.context.mjs.map +1 -0
  29. package/dist/esm/WindowGroup.mjs +212 -0
  30. package/dist/esm/WindowGroup.mjs.map +1 -0
  31. package/dist/esm/hooks/use-mantine-window.mjs +184 -38
  32. package/dist/esm/hooks/use-mantine-window.mjs.map +1 -1
  33. package/dist/esm/hooks/use-responsive-value.mjs +19 -0
  34. package/dist/esm/hooks/use-responsive-value.mjs.map +1 -0
  35. package/dist/esm/hooks/use-window-dimensions.mjs +22 -11
  36. package/dist/esm/hooks/use-window-dimensions.mjs.map +1 -1
  37. package/dist/esm/hooks/use-window-drag.mjs.map +1 -1
  38. package/dist/esm/hooks/use-window-state.mjs +143 -65
  39. package/dist/esm/hooks/use-window-state.mjs.map +1 -1
  40. package/dist/esm/index.mjs +2 -0
  41. package/dist/esm/index.mjs.map +1 -1
  42. package/dist/styles.css +1 -1
  43. package/dist/styles.layer.css +1 -1
  44. package/dist/types/LayoutIcons.d.ts +21 -0
  45. package/dist/types/Window.d.ts +65 -30
  46. package/dist/types/WindowGroup.context.d.ts +57 -0
  47. package/dist/types/WindowGroup.d.ts +30 -0
  48. package/dist/types/hooks/use-mantine-window.d.ts +3 -0
  49. package/dist/types/hooks/use-responsive-value.d.ts +3 -0
  50. package/dist/types/hooks/use-window-constraints.d.ts +7 -7
  51. package/dist/types/hooks/use-window-dimensions.d.ts +1 -1
  52. package/dist/types/hooks/use-window-drag.d.ts +1 -1
  53. package/dist/types/hooks/use-window-state.d.ts +17 -5
  54. package/dist/types/index.d.mts +5 -0
  55. package/dist/types/index.d.ts +5 -0
  56. package/package.json +11 -5
@@ -1,6 +1,8 @@
1
1
  'use client';
2
- import { useState, useEffect, useCallback } from 'react';
2
+ import { useState, useRef, useEffect, useCallback } from 'react';
3
3
 
4
+ let portalZIndex = 200;
5
+ let containerZIndex = 1;
4
6
  const getPersistedWindowState = (key, defaultPosition, defaultSize, defaultCollapsed) => {
5
7
  if (typeof window === "undefined") {
6
8
  return {
@@ -43,19 +45,76 @@ function useWindowState(options) {
43
45
  opened,
44
46
  collapsed,
45
47
  persistState = false,
46
- defaultPosition = { x: 20, y: 100 },
47
- defaultSize = { width: 400, height: 400 },
48
+ withinPortal = true,
49
+ // Controlled
50
+ x: controlledX,
51
+ y: controlledY,
52
+ width: controlledWidth,
53
+ height: controlledHeight,
54
+ // Uncontrolled defaults
55
+ defaultX = 20,
56
+ defaultY = 100,
57
+ defaultWidth = 400,
58
+ defaultHeight = 400,
48
59
  onClose,
49
60
  onPositionChange,
50
61
  onSizeChange
51
62
  } = options;
63
+ const isXControlled = controlledX !== void 0;
64
+ const isYControlled = controlledY !== void 0;
65
+ const isWidthControlled = controlledWidth !== void 0;
66
+ const isHeightControlled = controlledHeight !== void 0;
52
67
  const [isVisible, setIsVisible] = useState(opened ?? false);
53
- const [zIndex, setZIndex] = useState(200);
68
+ const [zIndex, setZIndex] = useState(withinPortal ? 200 : 1);
54
69
  const [isHydrated, setIsHydrated] = useState(false);
55
70
  const key = (id || title)?.toLocaleLowerCase().replace(/\s+/g, "-") || "window";
56
- const [position, setPositionState] = useState(defaultPosition);
57
- const [size, setSizeState] = useState(defaultSize);
71
+ const defaultPosition = { x: defaultX, y: defaultY };
72
+ const defaultSize = { width: defaultWidth, height: defaultHeight };
73
+ const [internalPosition, setInternalPositionState] = useState(defaultPosition);
74
+ const [internalSize, setInternalSizeState] = useState(defaultSize);
58
75
  const [isCollapsed, setIsCollapsedState] = useState(collapsed ?? false);
76
+ const position = {
77
+ x: isXControlled ? controlledX : internalPosition.x,
78
+ y: isYControlled ? controlledY : internalPosition.y
79
+ };
80
+ const size = {
81
+ width: isWidthControlled ? controlledWidth : internalSize.width,
82
+ height: isHeightControlled ? controlledHeight : internalSize.height
83
+ };
84
+ const persistRef = useRef({
85
+ persistState,
86
+ isHydrated,
87
+ key,
88
+ defaultPosition,
89
+ defaultSize,
90
+ collapsed,
91
+ isXControlled,
92
+ isYControlled,
93
+ isWidthControlled,
94
+ isHeightControlled
95
+ });
96
+ persistRef.current = {
97
+ persistState,
98
+ isHydrated,
99
+ key,
100
+ defaultPosition,
101
+ defaultSize,
102
+ collapsed,
103
+ isXControlled,
104
+ isYControlled,
105
+ isWidthControlled,
106
+ isHeightControlled
107
+ };
108
+ const onPositionChangeRef = useRef(onPositionChange);
109
+ onPositionChangeRef.current = onPositionChange;
110
+ const onSizeChangeRef = useRef(onSizeChange);
111
+ onSizeChangeRef.current = onSizeChange;
112
+ const positionRef = useRef(position);
113
+ positionRef.current = position;
114
+ const sizeRef = useRef(size);
115
+ sizeRef.current = size;
116
+ const isCollapsedRef = useRef(isCollapsed);
117
+ isCollapsedRef.current = isCollapsed;
59
118
  useEffect(() => {
60
119
  if (!isHydrated) {
61
120
  setIsHydrated(true);
@@ -66,84 +125,104 @@ function useWindowState(options) {
66
125
  defaultSize,
67
126
  collapsed ?? false
68
127
  );
69
- setPositionState(persistedState.position);
70
- setSizeState(persistedState.size);
128
+ if (!isXControlled || !isYControlled) {
129
+ setInternalPositionState(persistedState.position);
130
+ }
131
+ if (!isWidthControlled || !isHeightControlled) {
132
+ setInternalSizeState(persistedState.size);
133
+ }
71
134
  if (collapsed === void 0) {
72
135
  setIsCollapsedState(persistedState.collapsed);
73
136
  }
74
137
  }
75
138
  }
76
- }, [isHydrated, persistState, key, defaultPosition, defaultSize, collapsed]);
139
+ }, [isHydrated]);
140
+ const persistTimerRef = useRef(null);
141
+ const pendingPersistRef = useRef({});
142
+ const flushPersist = useCallback(() => {
143
+ const {
144
+ persistState: ps,
145
+ isHydrated: ih,
146
+ key: k,
147
+ defaultPosition: dp,
148
+ defaultSize: ds,
149
+ collapsed: c
150
+ } = persistRef.current;
151
+ if (ps && ih) {
152
+ const currentState = getPersistedWindowState(k, dp, ds, c ?? false);
153
+ setPersistedWindowState(k, { ...currentState, ...pendingPersistRef.current });
154
+ }
155
+ pendingPersistRef.current = {};
156
+ }, []);
157
+ const persistSideEffect = useCallback(
158
+ (update) => {
159
+ if (!persistRef.current.persistState || !persistRef.current.isHydrated) {
160
+ return;
161
+ }
162
+ pendingPersistRef.current = { ...pendingPersistRef.current, ...update };
163
+ if (persistTimerRef.current) {
164
+ clearTimeout(persistTimerRef.current);
165
+ }
166
+ persistTimerRef.current = setTimeout(flushPersist, 150);
167
+ },
168
+ [flushPersist]
169
+ );
170
+ useEffect(() => {
171
+ return () => {
172
+ if (persistTimerRef.current) {
173
+ clearTimeout(persistTimerRef.current);
174
+ flushPersist();
175
+ }
176
+ };
177
+ }, [flushPersist]);
77
178
  const setPosition = useCallback(
78
179
  (newPosition) => {
79
- const pos = typeof newPosition === "function" ? newPosition(position) : newPosition;
80
- setPositionState(pos);
81
- if (persistState && isHydrated) {
82
- const currentState = getPersistedWindowState(
83
- key,
84
- defaultPosition,
85
- defaultSize,
86
- collapsed ?? false
87
- );
88
- setPersistedWindowState(key, {
89
- ...currentState,
90
- position: pos
91
- });
180
+ const pos = typeof newPosition === "function" ? newPosition(positionRef.current) : newPosition;
181
+ const { isXControlled: xCtrl, isYControlled: yCtrl } = persistRef.current;
182
+ if (!xCtrl || !yCtrl) {
183
+ setInternalPositionState((prev) => ({
184
+ x: xCtrl ? prev.x : pos.x,
185
+ y: yCtrl ? prev.y : pos.y
186
+ }));
92
187
  }
93
- onPositionChange?.(pos);
188
+ persistSideEffect({ position: pos });
189
+ onPositionChangeRef.current?.(pos);
94
190
  },
95
- [
96
- position,
97
- persistState,
98
- isHydrated,
99
- key,
100
- defaultPosition,
101
- defaultSize,
102
- collapsed,
103
- onPositionChange
104
- ]
191
+ [persistSideEffect]
105
192
  );
106
193
  const setSize = useCallback(
107
194
  (newSize) => {
108
- const sz = typeof newSize === "function" ? newSize(size) : newSize;
109
- setSizeState(sz);
110
- if (persistState && isHydrated) {
111
- const currentState = getPersistedWindowState(
112
- key,
113
- defaultPosition,
114
- defaultSize,
115
- collapsed ?? false
116
- );
117
- setPersistedWindowState(key, {
118
- ...currentState,
119
- size: sz
120
- });
195
+ const sz = typeof newSize === "function" ? newSize(sizeRef.current) : newSize;
196
+ const { isWidthControlled: wCtrl, isHeightControlled: hCtrl } = persistRef.current;
197
+ if (!wCtrl || !hCtrl) {
198
+ setInternalSizeState((prev) => ({
199
+ width: wCtrl ? prev.width : sz.width,
200
+ height: hCtrl ? prev.height : sz.height
201
+ }));
121
202
  }
122
- onSizeChange?.(sz);
203
+ persistSideEffect({ size: sz });
204
+ onSizeChangeRef.current?.(sz);
123
205
  },
124
- [size, persistState, isHydrated, key, defaultPosition, defaultSize, collapsed, onSizeChange]
206
+ [persistSideEffect]
125
207
  );
126
208
  const setIsCollapsed = useCallback(
127
209
  (newCollapsed) => {
128
- const collapsedValue = typeof newCollapsed === "function" ? newCollapsed(isCollapsed) : newCollapsed;
210
+ const collapsedValue = typeof newCollapsed === "function" ? newCollapsed(isCollapsedRef.current) : newCollapsed;
129
211
  setIsCollapsedState(collapsedValue);
130
- if (persistState && isHydrated) {
131
- const currentState = getPersistedWindowState(
132
- key,
133
- defaultPosition,
134
- defaultSize,
135
- collapsed ?? false
136
- );
137
- setPersistedWindowState(key, {
138
- ...currentState,
139
- collapsed: collapsedValue
140
- });
141
- }
212
+ persistSideEffect({ collapsed: collapsedValue });
142
213
  },
143
- [isCollapsed, persistState, isHydrated, key, defaultPosition, defaultSize, collapsed]
214
+ [persistSideEffect]
144
215
  );
216
+ const withinPortalRef = useRef(withinPortal);
217
+ withinPortalRef.current = withinPortal;
145
218
  const bringToFront = useCallback(() => {
146
- setZIndex(200);
219
+ if (withinPortalRef.current) {
220
+ portalZIndex += 1;
221
+ setZIndex(portalZIndex);
222
+ } else {
223
+ containerZIndex += 1;
224
+ setZIndex(containerZIndex);
225
+ }
147
226
  }, []);
148
227
  const handleClose = useCallback(() => {
149
228
  if (onClose) {
@@ -165,14 +244,13 @@ function useWindowState(options) {
165
244
  });
166
245
  }
167
246
  }
168
- }, [collapsed, persistState, isHydrated, key, defaultPosition, defaultSize]);
247
+ }, [collapsed]);
169
248
  return {
170
249
  isCollapsed,
171
250
  setIsCollapsed,
172
251
  isVisible,
173
252
  setIsVisible,
174
253
  zIndex,
175
- setZIndex,
176
254
  position,
177
255
  size,
178
256
  setPosition,
@@ -1 +1 @@
1
- {"version":3,"file":"use-window-state.mjs","sources":["../../../src/hooks/use-window-state.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { WindowPosition, WindowSize } from '../Window';\n\ninterface WindowPersistedState {\n position: WindowPosition;\n size: WindowSize;\n collapsed: boolean;\n}\n\n// Manual localStorage functions for unified state\nconst getPersistedWindowState = (\n key: string,\n defaultPosition: WindowPosition,\n defaultSize: WindowSize,\n defaultCollapsed: boolean\n): WindowPersistedState => {\n if (typeof window === 'undefined') {\n return {\n position: defaultPosition,\n size: defaultSize,\n collapsed: defaultCollapsed,\n };\n }\n\n try {\n const item = window.localStorage.getItem(`${key}-window-state`);\n if (item) {\n const parsed = JSON.parse(item) as WindowPersistedState;\n return {\n position: parsed.position || defaultPosition,\n size: parsed.size || defaultSize,\n collapsed: parsed.collapsed ?? defaultCollapsed,\n };\n }\n } catch {\n // Ignore parsing errors\n }\n\n return {\n position: defaultPosition,\n size: defaultSize,\n collapsed: defaultCollapsed,\n };\n};\n\nconst setPersistedWindowState = (key: string, state: WindowPersistedState): void => {\n if (typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(`${key}-window-state`, JSON.stringify(state));\n } catch {\n // Ignore errors (e.g., quota exceeded)\n }\n};\n\nexport interface UseWindowStateOptions {\n id?: string;\n title?: string;\n opened?: boolean;\n collapsed?: boolean;\n persistState?: boolean;\n defaultPosition?: WindowPosition;\n defaultSize?: WindowSize;\n onClose?: () => void;\n onPositionChange?: (position: WindowPosition) => void;\n onSizeChange?: (size: WindowSize) => void;\n}\n\nexport function useWindowState(options: UseWindowStateOptions) {\n const {\n id,\n title,\n opened,\n collapsed,\n persistState = false,\n defaultPosition = { x: 20, y: 100 },\n defaultSize = { width: 400, height: 400 },\n onClose,\n onPositionChange,\n onSizeChange,\n } = options;\n\n const [isVisible, setIsVisible] = useState(opened ?? false);\n const [zIndex, setZIndex] = useState(200);\n const [isHydrated, setIsHydrated] = useState(false);\n\n const key = (id || title)?.toLocaleLowerCase().replace(/\\s+/g, '-') || 'window';\n\n // Initialize state with SSR-safe defaults first\n const [position, setPositionState] = useState<WindowPosition>(defaultPosition);\n const [size, setSizeState] = useState<WindowSize>(defaultSize);\n const [isCollapsed, setIsCollapsedState] = useState<boolean>(collapsed ?? false);\n\n // Effect for hydration - runs only on client\n useEffect(() => {\n if (!isHydrated) {\n setIsHydrated(true);\n\n if (persistState) {\n const persistedState = getPersistedWindowState(\n key,\n defaultPosition,\n defaultSize,\n collapsed ?? false\n );\n\n setPositionState(persistedState.position);\n setSizeState(persistedState.size);\n\n // Only use persisted collapsed state if collapsed prop is not explicitly set\n if (collapsed === undefined) {\n setIsCollapsedState(persistedState.collapsed);\n }\n }\n }\n }, [isHydrated, persistState, key, defaultPosition, defaultSize, collapsed]);\n\n const setPosition = useCallback(\n (newPosition: WindowPosition | ((prev: WindowPosition) => WindowPosition)) => {\n const pos = typeof newPosition === 'function' ? newPosition(position) : newPosition;\n setPositionState(pos);\n\n if (persistState && isHydrated) {\n const currentState = getPersistedWindowState(\n key,\n defaultPosition,\n defaultSize,\n collapsed ?? false\n );\n setPersistedWindowState(key, {\n ...currentState,\n position: pos,\n });\n }\n\n onPositionChange?.(pos);\n },\n [\n position,\n persistState,\n isHydrated,\n key,\n defaultPosition,\n defaultSize,\n collapsed,\n onPositionChange,\n ]\n );\n\n const setSize = useCallback(\n (newSize: WindowSize | ((prev: WindowSize) => WindowSize)) => {\n const sz = typeof newSize === 'function' ? newSize(size) : newSize;\n setSizeState(sz);\n\n if (persistState && isHydrated) {\n const currentState = getPersistedWindowState(\n key,\n defaultPosition,\n defaultSize,\n collapsed ?? false\n );\n setPersistedWindowState(key, {\n ...currentState,\n size: sz,\n });\n }\n\n onSizeChange?.(sz);\n },\n [size, persistState, isHydrated, key, defaultPosition, defaultSize, collapsed, onSizeChange]\n );\n\n const setIsCollapsed = useCallback(\n (newCollapsed: boolean | ((prev: boolean) => boolean)) => {\n const collapsedValue =\n typeof newCollapsed === 'function' ? newCollapsed(isCollapsed) : newCollapsed;\n setIsCollapsedState(collapsedValue);\n\n if (persistState && isHydrated) {\n const currentState = getPersistedWindowState(\n key,\n defaultPosition,\n defaultSize,\n collapsed ?? false\n );\n setPersistedWindowState(key, {\n ...currentState,\n collapsed: collapsedValue,\n });\n }\n },\n [isCollapsed, persistState, isHydrated, key, defaultPosition, defaultSize, collapsed]\n );\n\n const bringToFront = useCallback(() => {\n setZIndex(200);\n }, []);\n\n const handleClose = useCallback(() => {\n if (onClose) {\n return onClose();\n }\n setIsVisible(false);\n }, [onClose]);\n\n // Sync with props\n useEffect(() => {\n setIsVisible(opened ?? false);\n }, [opened]);\n\n // Sync collapsed state with props (props have priority)\n useEffect(() => {\n if (collapsed !== undefined) {\n setIsCollapsedState(collapsed);\n\n // Also persist if persistState is enabled and we're hydrated\n if (persistState && isHydrated) {\n const currentState = getPersistedWindowState(key, defaultPosition, defaultSize, false);\n setPersistedWindowState(key, {\n ...currentState,\n collapsed,\n });\n }\n }\n }, [collapsed, persistState, isHydrated, key, defaultPosition, defaultSize]);\n\n return {\n isCollapsed,\n setIsCollapsed,\n isVisible,\n setIsVisible,\n zIndex,\n setZIndex,\n position,\n size,\n setPosition,\n setSize,\n bringToFront,\n handleClose,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-window-state.mjs","sources":["../../../src/hooks/use-window-state.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { WindowPosition, WindowSize } from '../Window';\n\n// Separate z-index counters for portal (high, above page chrome) and container (low, local stacking)\nlet portalZIndex = 200;\nlet containerZIndex = 1;\n\ninterface WindowPersistedState {\n position: WindowPosition;\n size: WindowSize;\n collapsed: boolean;\n}\n\n// Manual localStorage functions for unified state\nconst getPersistedWindowState = (\n key: string,\n defaultPosition: WindowPosition,\n defaultSize: WindowSize,\n defaultCollapsed: boolean\n): WindowPersistedState => {\n if (typeof window === 'undefined') {\n return {\n position: defaultPosition,\n size: defaultSize,\n collapsed: defaultCollapsed,\n };\n }\n\n try {\n const item = window.localStorage.getItem(`${key}-window-state`);\n if (item) {\n const parsed = JSON.parse(item) as WindowPersistedState;\n return {\n position: parsed.position || defaultPosition,\n size: parsed.size || defaultSize,\n collapsed: parsed.collapsed ?? defaultCollapsed,\n };\n }\n } catch {\n // Ignore parsing errors\n }\n\n return {\n position: defaultPosition,\n size: defaultSize,\n collapsed: defaultCollapsed,\n };\n};\n\nconst setPersistedWindowState = (key: string, state: WindowPersistedState): void => {\n if (typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(`${key}-window-state`, JSON.stringify(state));\n } catch {\n // Ignore errors (e.g., quota exceeded)\n }\n};\n\nexport interface UseWindowStateOptions {\n id?: string;\n title?: string;\n opened?: boolean;\n collapsed?: boolean;\n persistState?: boolean;\n withinPortal?: boolean;\n\n // Controlled values (undefined = uncontrolled for that axis)\n x?: number | string;\n y?: number | string;\n width?: number | string;\n height?: number | string;\n\n // Uncontrolled defaults\n defaultX?: number | string;\n defaultY?: number | string;\n defaultWidth?: number | string;\n defaultHeight?: number | string;\n\n onClose?: () => void;\n onPositionChange?: (position: { x: number; y: number }) => void;\n onSizeChange?: (size: { width: number; height: number }) => void;\n}\n\nexport function useWindowState(options: UseWindowStateOptions) {\n const {\n id,\n title,\n opened,\n collapsed,\n persistState = false,\n withinPortal = true,\n // Controlled\n x: controlledX,\n y: controlledY,\n width: controlledWidth,\n height: controlledHeight,\n // Uncontrolled defaults\n defaultX = 20,\n defaultY = 100,\n defaultWidth = 400,\n defaultHeight = 400,\n onClose,\n onPositionChange,\n onSizeChange,\n } = options;\n\n const isXControlled = controlledX !== undefined;\n const isYControlled = controlledY !== undefined;\n const isWidthControlled = controlledWidth !== undefined;\n const isHeightControlled = controlledHeight !== undefined;\n\n const [isVisible, setIsVisible] = useState(opened ?? false);\n const [zIndex, setZIndex] = useState(withinPortal ? 200 : 1);\n const [isHydrated, setIsHydrated] = useState(false);\n\n const key = (id || title)?.toLocaleLowerCase().replace(/\\s+/g, '-') || 'window';\n\n // Compose default objects for localStorage compatibility\n const defaultPosition: WindowPosition = { x: defaultX, y: defaultY };\n const defaultSize: WindowSize = { width: defaultWidth, height: defaultHeight };\n\n // Internal state — used only when uncontrolled\n const [internalPosition, setInternalPositionState] = useState<WindowPosition>(defaultPosition);\n const [internalSize, setInternalSizeState] = useState<WindowSize>(defaultSize);\n const [isCollapsed, setIsCollapsedState] = useState<boolean>(collapsed ?? false);\n\n // Compute current position/size: controlled values override internal state\n const position: WindowPosition = {\n x: isXControlled ? controlledX : internalPosition.x,\n y: isYControlled ? controlledY : internalPosition.y,\n };\n\n const size: WindowSize = {\n width: isWidthControlled ? controlledWidth : internalSize.width,\n height: isHeightControlled ? controlledHeight : internalSize.height,\n };\n\n // Refs to avoid stale closures in callbacks\n const persistRef = useRef({\n persistState,\n isHydrated,\n key,\n defaultPosition,\n defaultSize,\n collapsed,\n isXControlled,\n isYControlled,\n isWidthControlled,\n isHeightControlled,\n });\n persistRef.current = {\n persistState,\n isHydrated,\n key,\n defaultPosition,\n defaultSize,\n collapsed,\n isXControlled,\n isYControlled,\n isWidthControlled,\n isHeightControlled,\n };\n\n const onPositionChangeRef = useRef(onPositionChange);\n onPositionChangeRef.current = onPositionChange;\n\n const onSizeChangeRef = useRef(onSizeChange);\n onSizeChangeRef.current = onSizeChange;\n\n const positionRef = useRef(position);\n positionRef.current = position;\n\n const sizeRef = useRef(size);\n sizeRef.current = size;\n\n const isCollapsedRef = useRef(isCollapsed);\n isCollapsedRef.current = isCollapsed;\n\n // ─── Hydration (localStorage) ───────────────────────────────────────\n\n useEffect(() => {\n if (!isHydrated) {\n setIsHydrated(true);\n\n if (persistState) {\n const persistedState = getPersistedWindowState(\n key,\n defaultPosition,\n defaultSize,\n collapsed ?? false\n );\n\n // Only hydrate uncontrolled values\n if (!isXControlled || !isYControlled) {\n setInternalPositionState(persistedState.position);\n }\n if (!isWidthControlled || !isHeightControlled) {\n setInternalSizeState(persistedState.size);\n }\n\n if (collapsed === undefined) {\n setIsCollapsedState(persistedState.collapsed);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- runs once on hydration; deps are initial values that should not re-trigger\n }, [isHydrated]);\n\n // ─── Debounced persistence ──────────────────────────────────────────\n\n const persistTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const pendingPersistRef = useRef<Partial<WindowPersistedState>>({});\n\n const flushPersist = useCallback(() => {\n const {\n persistState: ps,\n isHydrated: ih,\n key: k,\n defaultPosition: dp,\n defaultSize: ds,\n collapsed: c,\n } = persistRef.current;\n\n if (ps && ih) {\n const currentState = getPersistedWindowState(k, dp, ds, c ?? false);\n setPersistedWindowState(k, { ...currentState, ...pendingPersistRef.current });\n }\n pendingPersistRef.current = {};\n }, []);\n\n const persistSideEffect = useCallback(\n (update: Partial<WindowPersistedState>) => {\n if (!persistRef.current.persistState || !persistRef.current.isHydrated) {\n return;\n }\n pendingPersistRef.current = { ...pendingPersistRef.current, ...update };\n\n if (persistTimerRef.current) {\n clearTimeout(persistTimerRef.current);\n }\n persistTimerRef.current = setTimeout(flushPersist, 150);\n },\n [flushPersist]\n );\n\n useEffect(() => {\n return () => {\n if (persistTimerRef.current) {\n clearTimeout(persistTimerRef.current);\n flushPersist();\n }\n };\n }, [flushPersist]);\n\n // ─── Setters ────────────────────────────────────────────────────────\n\n const setPosition = useCallback(\n (newPosition: WindowPosition | ((prev: WindowPosition) => WindowPosition)) => {\n const pos =\n typeof newPosition === 'function' ? newPosition(positionRef.current) : newPosition;\n\n const { isXControlled: xCtrl, isYControlled: yCtrl } = persistRef.current;\n\n // Only update internal state for uncontrolled axes\n if (!xCtrl || !yCtrl) {\n setInternalPositionState((prev) => ({\n x: xCtrl ? prev.x : pos.x,\n y: yCtrl ? prev.y : pos.y,\n }));\n }\n\n persistSideEffect({ position: pos });\n onPositionChangeRef.current?.(pos as { x: number; y: number });\n },\n [persistSideEffect]\n );\n\n const setSize = useCallback(\n (newSize: WindowSize | ((prev: WindowSize) => WindowSize)) => {\n const sz = typeof newSize === 'function' ? newSize(sizeRef.current) : newSize;\n\n const { isWidthControlled: wCtrl, isHeightControlled: hCtrl } = persistRef.current;\n\n // Only update internal state for uncontrolled dimensions\n if (!wCtrl || !hCtrl) {\n setInternalSizeState((prev) => ({\n width: wCtrl ? prev.width : sz.width,\n height: hCtrl ? prev.height : sz.height,\n }));\n }\n\n persistSideEffect({ size: sz });\n onSizeChangeRef.current?.(sz as { width: number; height: number });\n },\n [persistSideEffect]\n );\n\n const setIsCollapsed = useCallback(\n (newCollapsed: boolean | ((prev: boolean) => boolean)) => {\n const collapsedValue =\n typeof newCollapsed === 'function' ? newCollapsed(isCollapsedRef.current) : newCollapsed;\n setIsCollapsedState(collapsedValue);\n persistSideEffect({ collapsed: collapsedValue });\n },\n [persistSideEffect]\n );\n\n const withinPortalRef = useRef(withinPortal);\n withinPortalRef.current = withinPortal;\n\n const bringToFront = useCallback(() => {\n if (withinPortalRef.current) {\n portalZIndex += 1;\n setZIndex(portalZIndex);\n } else {\n containerZIndex += 1;\n setZIndex(containerZIndex);\n }\n }, []);\n\n const handleClose = useCallback(() => {\n if (onClose) {\n return onClose();\n }\n setIsVisible(false);\n }, [onClose]);\n\n // ─── Sync with props ────────────────────────────────────────────────\n\n useEffect(() => {\n setIsVisible(opened ?? false);\n }, [opened]);\n\n useEffect(() => {\n if (collapsed !== undefined) {\n setIsCollapsedState(collapsed);\n\n if (persistState && isHydrated) {\n const currentState = getPersistedWindowState(key, defaultPosition, defaultSize, false);\n setPersistedWindowState(key, {\n ...currentState,\n collapsed,\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only re-persist when collapsed changes; other deps are stable config\n }, [collapsed]);\n\n return {\n isCollapsed,\n setIsCollapsed,\n isVisible,\n setIsVisible,\n zIndex,\n position,\n size,\n setPosition,\n setSize,\n bringToFront,\n handleClose,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
1
  export { Window } from './Window.mjs';
2
+ export { WindowGroup } from './WindowGroup.mjs';
3
+ export { useResponsiveValue } from './hooks/use-responsive-value.mjs';
2
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- .me_52c9647f{--window-handle-size:6px;--window-handle-length:40px;--window-handle-square:14px;background:var(--window-background);border-radius:var(--window-radius);box-shadow:var(--window-shadow);display:flex;flex-direction:column;overflow:hidden;padding:4px;position:fixed}.me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-8)}.me_a0cc2304{border-radius:calc(var(--window-radius) - 4px);display:flex;flex-direction:column;height:100%}[data-mantine-color-scheme=light] .me_a0cc2304{--window-container-border-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .me_a0cc2304{--window-container-border-color:var(--mantine-color-dark-5)}.me_a0cc2304{border:1px solid var(--window-container-border-color)}.me_b45e52ea{-webkit-touch-callout:none;align-items:center;color:var(--mantine-color-dark-1);display:flex;height:40px;justify-content:space-between;padding:var(--mantine-spacing-xs)}.me_b45e52ea[data-window-draggable=true]{touch-action:none;user-select:none;-webkit-user-select:none}.me_b45e52ea:active{cursor:default}.me_67cb25b{font-size:var(--mantine-font-size-sm);font-weight:600}[data-mantine-color-scheme=light] .me_67cb25b{color:var(--mantine-color-dark-5)}[data-mantine-color-scheme=dark] .me_67cb25b{color:var(--mantine-color-dark-1)}.me_7f4bd90d,.me_d29fc49c,.me_da736660{--ai-size:12px!important}.me_7f4bd90d svg,.me_d29fc49c svg,.me_da736660 svg{color:var(--mantine-color-dark-9);opacity:0;transition:opacity .35s ease}.me_7f4bd90d:hover svg,.me_d29fc49c:hover svg,.me_da736660:hover svg{opacity:1}.me_da736660 svg{transform:rotate(-45deg)}.me_e0bbcfbc{flex:1;overflow:auto;padding:var(--mantine-spacing-sm)}.me_65c46766{color:var(--mantine-color-green-4);font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;line-height:1.5;margin:0;white-space:pre-wrap;word-break:break-word}.me_64f83623{cursor:nwse-resize;height:var(--window-handle-square);left:0;width:var(--window-handle-square)}.me_64f83623,.me_df4c7ffc{position:absolute;top:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_df4c7ffc{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_df4c7ffc[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_3a64ef80{cursor:nesw-resize;height:var(--window-handle-square);top:0;width:var(--window-handle-square)}.me_3a64ef80,.me_3e0d7303{position:absolute;right:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_3e0d7303{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_3e0d7303[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}.me_53490258{cursor:nwse-resize;height:var(--window-handle-square);right:0;width:var(--window-handle-square)}.me_53490258,.me_68ae0624{bottom:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_68ae0624{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_68ae0624[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_b85a684b{bottom:0;cursor:nesw-resize;height:var(--window-handle-square);width:var(--window-handle-square)}.me_a3fb640,.me_b85a684b{left:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_a3fb640{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_a3fb640[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}
1
+ .me_52c9647f{--window-handle-size:6px;--window-handle-length:40px;--window-handle-square:14px;background:var(--window-background);border-radius:var(--window-radius);box-shadow:var(--window-shadow);display:flex;flex-direction:column;overflow:hidden;padding:4px;position:fixed}.me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-8)}.me_a0cc2304{border-radius:calc(var(--window-radius) - 4px);display:flex;flex-direction:column;height:100%}[data-mantine-color-scheme=light] .me_a0cc2304{--window-container-border-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .me_a0cc2304{--window-container-border-color:var(--mantine-color-dark-5)}.me_a0cc2304{border:1px solid var(--window-container-border-color)}.me_b45e52ea{-webkit-touch-callout:none;align-items:center;color:var(--mantine-color-dark-1);display:flex;height:40px;justify-content:space-between;padding:var(--mantine-spacing-xs)}.me_b45e52ea[data-window-draggable=true]{touch-action:none;user-select:none;-webkit-user-select:none}.me_b45e52ea:active{cursor:default}.me_67cb25b{font-size:var(--mantine-font-size-sm);font-weight:600}[data-mantine-color-scheme=light] .me_67cb25b{color:var(--mantine-color-dark-5)}[data-mantine-color-scheme=dark] .me_67cb25b{color:var(--mantine-color-dark-1)}.me_7f4bd90d,.me_d29fc49c,.me_da736660{--ai-size:12px!important}.me_7f4bd90d svg,.me_d29fc49c svg,.me_da736660 svg{color:var(--mantine-color-dark-9);opacity:0;transition:opacity .35s ease}.me_7f4bd90d:hover svg,.me_d29fc49c:hover svg,.me_da736660:hover svg{opacity:1}.me_da736660 svg{transform:rotate(-45deg)}.me_e0bbcfbc{flex:1;overflow:auto;padding:var(--mantine-spacing-sm)}.me_64f83623{cursor:nwse-resize;height:var(--window-handle-square);left:0;width:var(--window-handle-square)}.me_64f83623,.me_df4c7ffc{position:absolute;top:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_df4c7ffc{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_df4c7ffc[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_3a64ef80{cursor:nesw-resize;height:var(--window-handle-square);top:0;width:var(--window-handle-square)}.me_3a64ef80,.me_3e0d7303{position:absolute;right:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_3e0d7303{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_3e0d7303[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}.me_53490258{cursor:nwse-resize;height:var(--window-handle-square);right:0;width:var(--window-handle-square)}.me_53490258,.me_68ae0624{bottom:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_68ae0624{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_68ae0624[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_b85a684b{bottom:0;cursor:nesw-resize;height:var(--window-handle-square);width:var(--window-handle-square)}.me_a3fb640,.me_b85a684b{left:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_a3fb640{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_a3fb640[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}
@@ -1 +1 @@
1
- @layer mantine-window {.me_52c9647f{--window-handle-size:6px;--window-handle-length:40px;--window-handle-square:14px;background:var(--window-background);border-radius:var(--window-radius);box-shadow:var(--window-shadow);display:flex;flex-direction:column;overflow:hidden;padding:4px;position:fixed}.me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-8)}.me_a0cc2304{border-radius:calc(var(--window-radius) - 4px);display:flex;flex-direction:column;height:100%}[data-mantine-color-scheme=light] .me_a0cc2304{--window-container-border-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .me_a0cc2304{--window-container-border-color:var(--mantine-color-dark-5)}.me_a0cc2304{border:1px solid var(--window-container-border-color)}.me_b45e52ea{-webkit-touch-callout:none;align-items:center;color:var(--mantine-color-dark-1);display:flex;height:40px;justify-content:space-between;padding:var(--mantine-spacing-xs)}.me_b45e52ea[data-window-draggable=true]{touch-action:none;user-select:none;-webkit-user-select:none}.me_b45e52ea:active{cursor:default}.me_67cb25b{font-size:var(--mantine-font-size-sm);font-weight:600}[data-mantine-color-scheme=light] .me_67cb25b{color:var(--mantine-color-dark-5)}[data-mantine-color-scheme=dark] .me_67cb25b{color:var(--mantine-color-dark-1)}.me_7f4bd90d,.me_d29fc49c,.me_da736660{--ai-size:12px!important}.me_7f4bd90d svg,.me_d29fc49c svg,.me_da736660 svg{color:var(--mantine-color-dark-9);opacity:0;transition:opacity .35s ease}.me_7f4bd90d:hover svg,.me_d29fc49c:hover svg,.me_da736660:hover svg{opacity:1}.me_da736660 svg{transform:rotate(-45deg)}.me_e0bbcfbc{flex:1;overflow:auto;padding:var(--mantine-spacing-sm)}.me_65c46766{color:var(--mantine-color-green-4);font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;line-height:1.5;margin:0;white-space:pre-wrap;word-break:break-word}.me_64f83623{cursor:nwse-resize;height:var(--window-handle-square);left:0;width:var(--window-handle-square)}.me_64f83623,.me_df4c7ffc{position:absolute;top:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_df4c7ffc{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_df4c7ffc[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_3a64ef80{cursor:nesw-resize;height:var(--window-handle-square);top:0;width:var(--window-handle-square)}.me_3a64ef80,.me_3e0d7303{position:absolute;right:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_3e0d7303{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_3e0d7303[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}.me_53490258{cursor:nwse-resize;height:var(--window-handle-square);right:0;width:var(--window-handle-square)}.me_53490258,.me_68ae0624{bottom:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_68ae0624{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_68ae0624[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_b85a684b{bottom:0;cursor:nesw-resize;height:var(--window-handle-square);width:var(--window-handle-square)}.me_a3fb640,.me_b85a684b{left:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_a3fb640{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_a3fb640[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}}
1
+ @layer mantine-window {.me_52c9647f{--window-handle-size:6px;--window-handle-length:40px;--window-handle-square:14px;background:var(--window-background);border-radius:var(--window-radius);box-shadow:var(--window-shadow);display:flex;flex-direction:column;overflow:hidden;padding:4px;position:fixed}.me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .me_52c9647f:where([data-with-border]){border:calc(.0625rem*var(--mantine-scale)) solid var(--mantine-color-gray-8)}.me_a0cc2304{border-radius:calc(var(--window-radius) - 4px);display:flex;flex-direction:column;height:100%}[data-mantine-color-scheme=light] .me_a0cc2304{--window-container-border-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .me_a0cc2304{--window-container-border-color:var(--mantine-color-dark-5)}.me_a0cc2304{border:1px solid var(--window-container-border-color)}.me_b45e52ea{-webkit-touch-callout:none;align-items:center;color:var(--mantine-color-dark-1);display:flex;height:40px;justify-content:space-between;padding:var(--mantine-spacing-xs)}.me_b45e52ea[data-window-draggable=true]{touch-action:none;user-select:none;-webkit-user-select:none}.me_b45e52ea:active{cursor:default}.me_67cb25b{font-size:var(--mantine-font-size-sm);font-weight:600}[data-mantine-color-scheme=light] .me_67cb25b{color:var(--mantine-color-dark-5)}[data-mantine-color-scheme=dark] .me_67cb25b{color:var(--mantine-color-dark-1)}.me_7f4bd90d,.me_d29fc49c,.me_da736660{--ai-size:12px!important}.me_7f4bd90d svg,.me_d29fc49c svg,.me_da736660 svg{color:var(--mantine-color-dark-9);opacity:0;transition:opacity .35s ease}.me_7f4bd90d:hover svg,.me_d29fc49c:hover svg,.me_da736660:hover svg{opacity:1}.me_da736660 svg{transform:rotate(-45deg)}.me_e0bbcfbc{flex:1;overflow:auto;padding:var(--mantine-spacing-sm)}.me_64f83623{cursor:nwse-resize;height:var(--window-handle-square);left:0;width:var(--window-handle-square)}.me_64f83623,.me_df4c7ffc{position:absolute;top:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_df4c7ffc{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_df4c7ffc[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_3a64ef80{cursor:nesw-resize;height:var(--window-handle-square);top:0;width:var(--window-handle-square)}.me_3a64ef80,.me_3e0d7303{position:absolute;right:0;touch-action:none;-webkit-user-select:none;user-select:none}.me_3e0d7303{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_3e0d7303[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}.me_53490258{cursor:nwse-resize;height:var(--window-handle-square);right:0;width:var(--window-handle-square)}.me_53490258,.me_68ae0624{bottom:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_68ae0624{cursor:ns-resize;height:var(--window-handle-size);left:50%;transform:translateX(-50%);width:var(--window-handle-length)}.me_68ae0624[data-full-size=true]{left:var(--window-handle-square);right:var(--window-handle-square);transform:none;width:auto}.me_b85a684b{bottom:0;cursor:nesw-resize;height:var(--window-handle-square);width:var(--window-handle-square)}.me_a3fb640,.me_b85a684b{left:0;position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.me_a3fb640{cursor:ew-resize;height:var(--window-handle-length);top:50%;transform:translateY(-50%);width:var(--window-handle-size)}.me_a3fb640[data-full-size=true]{bottom:var(--window-handle-square);height:auto;top:var(--window-handle-square);transform:none}}
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ interface LayoutIconProps {
3
+ size?: number;
4
+ }
5
+ /** Snap left — left half highlighted */
6
+ export declare function SnapLeftIcon({ size }: LayoutIconProps): React.JSX.Element;
7
+ /** Snap right — right half highlighted */
8
+ export declare function SnapRightIcon({ size }: LayoutIconProps): React.JSX.Element;
9
+ /** Snap top — top half highlighted */
10
+ export declare function SnapTopIcon({ size }: LayoutIconProps): React.JSX.Element;
11
+ /** Snap bottom — bottom half highlighted */
12
+ export declare function SnapBottomIcon({ size }: LayoutIconProps): React.JSX.Element;
13
+ /** Fill — entire area highlighted */
14
+ export declare function FillIcon({ size }: LayoutIconProps): React.JSX.Element;
15
+ /** Arrange columns — two vertical columns */
16
+ export declare function ArrangeColumnsIcon({ size }: LayoutIconProps): React.JSX.Element;
17
+ /** Arrange rows — two horizontal rows */
18
+ export declare function ArrangeRowsIcon({ size }: LayoutIconProps): React.JSX.Element;
19
+ /** Tile — 2x2 grid */
20
+ export declare function TileIcon({ size }: LayoutIconProps): React.JSX.Element;
21
+ export {};