@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.
Files changed (68) hide show
  1. package/dist/cjs/components/layouts/PageNav.js +1 -1
  2. package/dist/cjs/components/layouts/PageNav.js.map +1 -1
  3. package/dist/cjs/components/particles/ParticleLayer.js +2 -1
  4. package/dist/cjs/components/particles/ParticleLayer.js.map +1 -1
  5. package/dist/cjs/components/toasts/toasts.d.ts +1 -1
  6. package/dist/cjs/components/toasts/toasts.js +5 -1
  7. package/dist/cjs/components/toasts/toasts.js.map +1 -1
  8. package/dist/cjs/components/viewport/Viewport.js +1 -1
  9. package/dist/cjs/components/viewport/Viewport.js.map +1 -1
  10. package/dist/cjs/components/viewport/Viewport.stories.d.ts +1 -0
  11. package/dist/cjs/components/viewport/Viewport.stories.js +6 -1
  12. package/dist/cjs/components/viewport/Viewport.stories.js.map +1 -1
  13. package/dist/cjs/components/viewport/ViewportState.d.ts +1 -10
  14. package/dist/cjs/components/viewport/ViewportState.js +11 -13
  15. package/dist/cjs/components/viewport/ViewportState.js.map +1 -1
  16. package/dist/cjs/components/viewport/ViewportZoomControls.js +2 -2
  17. package/dist/cjs/components/viewport/ViewportZoomControls.js.map +1 -1
  18. package/dist/cjs/components/viewport/useViewportGestures.js +7 -10
  19. package/dist/cjs/components/viewport/useViewportGestures.js.map +1 -1
  20. package/dist/cjs/hooks/useOverrideTheme.js +1 -1
  21. package/dist/cjs/hooks/useOverrideTheme.js.map +1 -1
  22. package/dist/cjs/hooks/useSize.d.ts +1 -1
  23. package/dist/cjs/hooks/useSize.js.map +1 -1
  24. package/dist/cjs/hooks/useTitleBarColor.js +3 -0
  25. package/dist/cjs/hooks/useTitleBarColor.js.map +1 -1
  26. package/dist/cjs/hooks/useVisualViewportOffset.js +10 -1
  27. package/dist/cjs/hooks/useVisualViewportOffset.js.map +1 -1
  28. package/dist/css/main.css +1 -1
  29. package/dist/esm/components/layouts/PageNav.js +1 -1
  30. package/dist/esm/components/layouts/PageNav.js.map +1 -1
  31. package/dist/esm/components/particles/ParticleLayer.js +2 -1
  32. package/dist/esm/components/particles/ParticleLayer.js.map +1 -1
  33. package/dist/esm/components/toasts/toasts.d.ts +1 -1
  34. package/dist/esm/components/toasts/toasts.js +5 -1
  35. package/dist/esm/components/toasts/toasts.js.map +1 -1
  36. package/dist/esm/components/viewport/Viewport.js +1 -1
  37. package/dist/esm/components/viewport/Viewport.js.map +1 -1
  38. package/dist/esm/components/viewport/Viewport.stories.d.ts +1 -0
  39. package/dist/esm/components/viewport/Viewport.stories.js +5 -0
  40. package/dist/esm/components/viewport/Viewport.stories.js.map +1 -1
  41. package/dist/esm/components/viewport/ViewportState.d.ts +1 -10
  42. package/dist/esm/components/viewport/ViewportState.js +11 -13
  43. package/dist/esm/components/viewport/ViewportState.js.map +1 -1
  44. package/dist/esm/components/viewport/ViewportZoomControls.js +2 -2
  45. package/dist/esm/components/viewport/ViewportZoomControls.js.map +1 -1
  46. package/dist/esm/components/viewport/useViewportGestures.js +7 -10
  47. package/dist/esm/components/viewport/useViewportGestures.js.map +1 -1
  48. package/dist/esm/hooks/useOverrideTheme.js +1 -1
  49. package/dist/esm/hooks/useOverrideTheme.js.map +1 -1
  50. package/dist/esm/hooks/useSize.d.ts +1 -1
  51. package/dist/esm/hooks/useSize.js.map +1 -1
  52. package/dist/esm/hooks/useTitleBarColor.js +3 -0
  53. package/dist/esm/hooks/useTitleBarColor.js.map +1 -1
  54. package/dist/esm/hooks/useVisualViewportOffset.js +10 -1
  55. package/dist/esm/hooks/useVisualViewportOffset.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/components/layouts/PageNav.tsx +3 -1
  58. package/src/components/particles/ParticleLayer.tsx +3 -1
  59. package/src/components/toasts/toasts.tsx +6 -1
  60. package/src/components/viewport/Viewport.stories.tsx +25 -0
  61. package/src/components/viewport/Viewport.tsx +2 -0
  62. package/src/components/viewport/ViewportState.ts +12 -22
  63. package/src/components/viewport/ViewportZoomControls.tsx +2 -2
  64. package/src/components/viewport/useViewportGestures.ts +7 -10
  65. package/src/hooks/useOverrideTheme.ts +1 -1
  66. package/src/hooks/useSize.ts +1 -1
  67. package/src/hooks/useTitleBarColor.ts +3 -0
  68. 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.relativeZoom(diff / PINCH_GESTURE_DAMPING, {
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.relativeZoom(value, {
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 = 1;
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.relativeZoom(delta * ZOOM_SPEED, {
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.relativeZoom(delta * -ZOOM_SPEED, {
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}`);
@@ -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((viewport) => {
10
- document.documentElement.style.setProperty(
11
- '--viewport-bottom-offset',
12
- `${window.innerHeight - viewport.height - viewport.offsetTop}px`,
13
- );
14
- document.documentElement.style.setProperty(
15
- '--viewport-height',
16
- `${viewport.height}px`,
17
- );
18
- document.documentElement.style.setProperty(
19
- '--viewport-width',
20
- `${viewport.width}px`,
21
- );
22
- document.documentElement.style.setProperty(
23
- '--viewport-top-offset',
24
- `${viewport.offsetTop}px`,
25
- );
26
- document.documentElement.style.setProperty(
27
- '--viewport-left-offset',
28
- `${viewport.offsetLeft}px`,
29
- );
30
- document.documentElement.style.setProperty(
31
- '--keyboard-open',
32
- viewport.height < window.innerHeight ? '1' : '0',
33
- );
34
- }, disable);
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) {