@a-type/ui 3.0.42 → 3.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/layouts/PageNav.js +1 -1
- package/dist/cjs/components/layouts/PageNav.js.map +1 -1
- package/dist/cjs/components/particles/ParticleLayer.js +2 -1
- package/dist/cjs/components/particles/ParticleLayer.js.map +1 -1
- package/dist/cjs/components/toasts/toasts.d.ts +1 -1
- package/dist/cjs/components/toasts/toasts.js +5 -1
- package/dist/cjs/components/toasts/toasts.js.map +1 -1
- package/dist/cjs/components/viewport/Viewport.js +1 -1
- package/dist/cjs/components/viewport/Viewport.js.map +1 -1
- package/dist/cjs/components/viewport/Viewport.stories.d.ts +1 -0
- package/dist/cjs/components/viewport/Viewport.stories.js +6 -1
- package/dist/cjs/components/viewport/Viewport.stories.js.map +1 -1
- package/dist/cjs/components/viewport/ViewportState.d.ts +1 -10
- package/dist/cjs/components/viewport/ViewportState.js +11 -13
- package/dist/cjs/components/viewport/ViewportState.js.map +1 -1
- package/dist/cjs/components/viewport/ViewportZoomControls.js +2 -2
- package/dist/cjs/components/viewport/ViewportZoomControls.js.map +1 -1
- package/dist/cjs/components/viewport/useViewportGestures.js +7 -10
- package/dist/cjs/components/viewport/useViewportGestures.js.map +1 -1
- package/dist/cjs/hooks/useOverrideTheme.js +1 -1
- package/dist/cjs/hooks/useOverrideTheme.js.map +1 -1
- package/dist/cjs/hooks/useSize.d.ts +1 -1
- package/dist/cjs/hooks/useSize.js.map +1 -1
- package/dist/cjs/hooks/useTitleBarColor.js +3 -0
- package/dist/cjs/hooks/useTitleBarColor.js.map +1 -1
- package/dist/cjs/hooks/useVisualViewportOffset.js +10 -1
- package/dist/cjs/hooks/useVisualViewportOffset.js.map +1 -1
- package/dist/css/main.css +1 -1
- package/dist/esm/components/layouts/PageNav.js +1 -1
- package/dist/esm/components/layouts/PageNav.js.map +1 -1
- package/dist/esm/components/particles/ParticleLayer.js +2 -1
- package/dist/esm/components/particles/ParticleLayer.js.map +1 -1
- package/dist/esm/components/toasts/toasts.d.ts +1 -1
- package/dist/esm/components/toasts/toasts.js +5 -1
- package/dist/esm/components/toasts/toasts.js.map +1 -1
- package/dist/esm/components/viewport/Viewport.js +1 -1
- package/dist/esm/components/viewport/Viewport.js.map +1 -1
- package/dist/esm/components/viewport/Viewport.stories.d.ts +1 -0
- package/dist/esm/components/viewport/Viewport.stories.js +5 -0
- package/dist/esm/components/viewport/Viewport.stories.js.map +1 -1
- package/dist/esm/components/viewport/ViewportState.d.ts +1 -10
- package/dist/esm/components/viewport/ViewportState.js +11 -13
- package/dist/esm/components/viewport/ViewportState.js.map +1 -1
- package/dist/esm/components/viewport/ViewportZoomControls.js +2 -2
- package/dist/esm/components/viewport/ViewportZoomControls.js.map +1 -1
- package/dist/esm/components/viewport/useViewportGestures.js +7 -10
- package/dist/esm/components/viewport/useViewportGestures.js.map +1 -1
- package/dist/esm/hooks/useOverrideTheme.js +1 -1
- package/dist/esm/hooks/useOverrideTheme.js.map +1 -1
- package/dist/esm/hooks/useSize.d.ts +1 -1
- package/dist/esm/hooks/useSize.js.map +1 -1
- package/dist/esm/hooks/useTitleBarColor.js +3 -0
- package/dist/esm/hooks/useTitleBarColor.js.map +1 -1
- package/dist/esm/hooks/useVisualViewportOffset.js +10 -1
- package/dist/esm/hooks/useVisualViewportOffset.js.map +1 -1
- package/package.json +1 -1
- package/src/components/layouts/PageNav.tsx +3 -1
- package/src/components/particles/ParticleLayer.tsx +3 -1
- package/src/components/toasts/toasts.tsx +6 -1
- package/src/components/viewport/Viewport.stories.tsx +25 -0
- package/src/components/viewport/Viewport.tsx +2 -0
- package/src/components/viewport/ViewportState.ts +12 -22
- package/src/components/viewport/ViewportZoomControls.tsx +2 -2
- package/src/components/viewport/useViewportGestures.ts +7 -10
- package/src/hooks/useOverrideTheme.ts +1 -1
- package/src/hooks/useSize.ts +1 -1
- package/src/hooks/useTitleBarColor.ts +3 -0
- package/src/hooks/useVisualViewportOffset.ts +38 -26
|
@@ -51,7 +51,7 @@ export function useViewportGestureControls(
|
|
|
51
51
|
if (memo === undefined) return d;
|
|
52
52
|
const diff = d - memo;
|
|
53
53
|
if (diff !== 0) {
|
|
54
|
-
viewport.
|
|
54
|
+
viewport.setZoom((v) => v * (1 + diff / PINCH_GESTURE_DAMPING), {
|
|
55
55
|
origin: 'direct',
|
|
56
56
|
centroid: { x: origin[0], y: origin[1] },
|
|
57
57
|
gestureComplete: last,
|
|
@@ -62,7 +62,7 @@ export function useViewportGestureControls(
|
|
|
62
62
|
onWheel: ({ delta: [x, y], event, last, metaKey, ctrlKey }) => {
|
|
63
63
|
if (ctrlKey || metaKey) {
|
|
64
64
|
const { value, type } = dampenedWheelZoom(-y);
|
|
65
|
-
viewport.
|
|
65
|
+
viewport.setZoom((v) => v * (1 + value), {
|
|
66
66
|
origin: type === 'wheel' ? 'control' : 'direct',
|
|
67
67
|
centroid: { x: event.clientX, y: event.clientY },
|
|
68
68
|
gestureComplete: last,
|
|
@@ -147,7 +147,7 @@ const CONTROLLED_KEYS = [
|
|
|
147
147
|
'ArrowLeft',
|
|
148
148
|
'ArrowRight',
|
|
149
149
|
];
|
|
150
|
-
const PAN_SPEED =
|
|
150
|
+
const PAN_SPEED = 0.5;
|
|
151
151
|
const ZOOM_SPEED = 0.001;
|
|
152
152
|
|
|
153
153
|
export function useKeyboardControls(viewport: ViewportState) {
|
|
@@ -195,9 +195,6 @@ export function useKeyboardControls(viewport: ViewportState) {
|
|
|
195
195
|
}, []);
|
|
196
196
|
|
|
197
197
|
useEffect(() => {
|
|
198
|
-
const { current: el } = elementRef;
|
|
199
|
-
if (!el) return;
|
|
200
|
-
|
|
201
198
|
// begin a loop which tracks delta time and applies it to
|
|
202
199
|
// pan velocity for smooth panning regardless of framerate
|
|
203
200
|
let lastFrameTime: number | null = null;
|
|
@@ -213,12 +210,12 @@ export function useKeyboardControls(viewport: ViewportState) {
|
|
|
213
210
|
lastFrameTime = now;
|
|
214
211
|
|
|
215
212
|
if (activeKeys.pressed.has('=') || activeKeys.pressed.has('+')) {
|
|
216
|
-
viewport.
|
|
213
|
+
viewport.setZoom((v) => v * (1 + delta * ZOOM_SPEED), {
|
|
217
214
|
origin: 'direct',
|
|
218
215
|
gestureComplete: true,
|
|
219
216
|
});
|
|
220
217
|
} else if (activeKeys.pressed.has('-')) {
|
|
221
|
-
viewport.
|
|
218
|
+
viewport.setZoom((v) => v * (1 + delta * -ZOOM_SPEED), {
|
|
222
219
|
origin: 'direct',
|
|
223
220
|
gestureComplete: true,
|
|
224
221
|
});
|
|
@@ -233,8 +230,8 @@ export function useKeyboardControls(viewport: ViewportState) {
|
|
|
233
230
|
: activeKeys.pressed.has('ArrowDown')
|
|
234
231
|
? 1
|
|
235
232
|
: 0;
|
|
236
|
-
velocity.x = delta * xInput * PAN_SPEED;
|
|
237
|
-
velocity.y = delta * yInput * PAN_SPEED;
|
|
233
|
+
velocity.x = (delta * xInput * PAN_SPEED) / viewport.zoom;
|
|
234
|
+
velocity.y = (delta * yInput * PAN_SPEED) / viewport.zoom;
|
|
238
235
|
if (velocity.x !== 0 || velocity.y !== 0) {
|
|
239
236
|
viewport.setPanRelative(velocity, {
|
|
240
237
|
origin: 'direct',
|
|
@@ -3,7 +3,7 @@ import { PaletteName } from '../uno/index.js';
|
|
|
3
3
|
|
|
4
4
|
export function useOverrideTheme(theme: PaletteName | null | undefined) {
|
|
5
5
|
useLayoutEffect(() => {
|
|
6
|
-
if (!theme) {
|
|
6
|
+
if (!theme || typeof document === 'undefined') {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
document.body.classList.add(`theme-override-${theme}`);
|
package/src/hooks/useSize.ts
CHANGED
|
@@ -107,7 +107,7 @@ export function useBounds<E extends HTMLElement>(
|
|
|
107
107
|
|
|
108
108
|
export function useBoundsCssVars<E extends HTMLElement>(
|
|
109
109
|
debounceMs?: number,
|
|
110
|
-
applyToRef?: RefObject<HTMLElement>,
|
|
110
|
+
applyToRef?: RefObject<HTMLElement | null>,
|
|
111
111
|
propertyNames?: {
|
|
112
112
|
left: string;
|
|
113
113
|
top: string;
|
|
@@ -18,6 +18,9 @@ if (typeof document !== 'undefined') {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function changeThemeColor(color: string) {
|
|
21
|
+
if (typeof document === 'undefined') {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
21
24
|
// evaluate css var if necessary
|
|
22
25
|
if (color.startsWith('var(')) {
|
|
23
26
|
const root = document.documentElement;
|
|
@@ -6,32 +6,35 @@ import { useStableCallback } from './useStableCallback.js';
|
|
|
6
6
|
* Applies bottom offset px as a CSS custom property to the document root.
|
|
7
7
|
*/
|
|
8
8
|
export function useVisualViewportOffset(disable?: boolean) {
|
|
9
|
-
useReactToViewportChanges(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
useReactToViewportChanges(
|
|
10
|
+
(viewport) => {
|
|
11
|
+
document.documentElement.style.setProperty(
|
|
12
|
+
'--viewport-bottom-offset',
|
|
13
|
+
`${window.innerHeight - viewport.height - viewport.offsetTop}px`,
|
|
14
|
+
);
|
|
15
|
+
document.documentElement.style.setProperty(
|
|
16
|
+
'--viewport-height',
|
|
17
|
+
`${viewport.height}px`,
|
|
18
|
+
);
|
|
19
|
+
document.documentElement.style.setProperty(
|
|
20
|
+
'--viewport-width',
|
|
21
|
+
`${viewport.width}px`,
|
|
22
|
+
);
|
|
23
|
+
document.documentElement.style.setProperty(
|
|
24
|
+
'--viewport-top-offset',
|
|
25
|
+
`${viewport.offsetTop}px`,
|
|
26
|
+
);
|
|
27
|
+
document.documentElement.style.setProperty(
|
|
28
|
+
'--viewport-left-offset',
|
|
29
|
+
`${viewport.offsetLeft}px`,
|
|
30
|
+
);
|
|
31
|
+
document.documentElement.style.setProperty(
|
|
32
|
+
'--keyboard-open',
|
|
33
|
+
viewport.height < window.innerHeight ? '1' : '0',
|
|
34
|
+
);
|
|
35
|
+
},
|
|
36
|
+
disable || typeof window === 'undefined',
|
|
37
|
+
);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
export function useIsKeyboardOpen() {
|
|
@@ -49,6 +52,9 @@ export function useIsKeyboardOpen() {
|
|
|
49
52
|
boolean | undefined
|
|
50
53
|
>(undefined);
|
|
51
54
|
useEffect(() => {
|
|
55
|
+
if (typeof window === 'undefined') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
52
58
|
function handleOpen() {
|
|
53
59
|
setSimulateKeyboardOpen(true);
|
|
54
60
|
}
|
|
@@ -65,6 +71,9 @@ export function useIsKeyboardOpen() {
|
|
|
65
71
|
|
|
66
72
|
const [isKeyboardOpen, setIsKeyboardOpen] = useState(false);
|
|
67
73
|
useEffect(() => {
|
|
74
|
+
if (typeof navigator === 'undefined' || typeof window === 'undefined') {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
68
77
|
if (!('virtualKeyboard' in navigator)) {
|
|
69
78
|
// no support
|
|
70
79
|
console.warn(
|
|
@@ -111,6 +120,9 @@ function useReactToViewportChanges(
|
|
|
111
120
|
const stableCb = useStableCallback(cb);
|
|
112
121
|
useEffect(() => {
|
|
113
122
|
if (disable) return;
|
|
123
|
+
if (typeof window === 'undefined') {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
114
126
|
|
|
115
127
|
const viewport = window.visualViewport;
|
|
116
128
|
if (!viewport) {
|