@joewinke/jatui 0.1.31 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +22 -0
- package/dist/actions/attention.d.ts +24 -0
- package/dist/actions/attention.js +94 -0
- package/dist/actions/collapse.js +29 -15
- package/dist/actions/floating.d.ts +53 -0
- package/dist/actions/floating.js +158 -0
- package/dist/actions/listNav.js +137 -108
- package/dist/actions/railNav.js +89 -72
- package/dist/actions/staggerEntrance.d.ts +28 -0
- package/dist/actions/staggerEntrance.js +71 -0
- package/dist/actions/tooltip.d.ts +28 -0
- package/dist/actions/tooltip.js +186 -0
- package/dist/assets/sounds/README.md +47 -0
- package/dist/assets/sounds/error.d.ts +1 -0
- package/dist/assets/sounds/error.js +4 -0
- package/dist/assets/sounds/notify.d.ts +1 -0
- package/dist/assets/sounds/notify.js +4 -0
- package/dist/assets/sounds/pop.d.ts +1 -0
- package/dist/assets/sounds/pop.js +4 -0
- package/dist/assets/sounds/send.d.ts +1 -0
- package/dist/assets/sounds/send.js +4 -0
- package/dist/assets/sounds/success.d.ts +1 -0
- package/dist/assets/sounds/success.js +4 -0
- package/dist/assets/sounds/toggle.d.ts +1 -0
- package/dist/assets/sounds/toggle.js +4 -0
- package/dist/components/AnimatedNumber.svelte +112 -0
- package/dist/components/AnimatedNumber.svelte.d.ts +8 -0
- package/dist/components/Badge.svelte +75 -4
- package/dist/components/Badge.svelte.d.ts +6 -1
- package/dist/components/Button.svelte +196 -21
- package/dist/components/Button.svelte.d.ts +10 -1
- package/dist/components/Carousel.svelte +265 -0
- package/dist/components/Carousel.svelte.d.ts +21 -0
- package/dist/components/ChipInput.svelte +63 -3
- package/dist/components/Collapse.svelte +70 -14
- package/dist/components/Collapse.svelte.d.ts +11 -0
- package/dist/components/ColorSelector.svelte +21 -24
- package/dist/components/CommandPalette.svelte +475 -0
- package/dist/components/CommandPalette.svelte.d.ts +3 -0
- package/dist/components/ContextMenu.svelte +9 -73
- package/dist/components/CopyButton.svelte +156 -0
- package/dist/components/CopyButton.svelte.d.ts +12 -0
- package/dist/components/HoldToConfirm.svelte +183 -0
- package/dist/components/HoldToConfirm.svelte.d.ts +11 -0
- package/dist/components/KeyboardShortcutsOverlay.svelte +54 -8
- package/dist/components/KeyboardShortcutsOverlay.svelte.d.ts +3 -0
- package/dist/components/PasswordMeter.svelte +87 -0
- package/dist/components/PasswordMeter.svelte.d.ts +8 -0
- package/dist/components/PinInput.svelte +186 -0
- package/dist/components/PinInput.svelte.d.ts +13 -0
- package/dist/components/QuantityStepper.svelte +185 -0
- package/dist/components/QuantityStepper.svelte.d.ts +12 -0
- package/dist/components/Skeleton.svelte +123 -0
- package/dist/components/Skeleton.svelte.d.ts +12 -0
- package/dist/components/SpeechForm.svelte +37 -0
- package/dist/components/StatusBadge.svelte +31 -3
- package/dist/components/StatusBadge.svelte.d.ts +0 -5
- package/dist/components/Tabs.svelte +270 -0
- package/dist/components/Tabs.svelte.d.ts +15 -0
- package/dist/components/TextInput.svelte +138 -38
- package/dist/components/TextInput.svelte.d.ts +9 -1
- package/dist/components/VoicePlayer.svelte +51 -0
- package/dist/components/basic/Alert.svelte +36 -0
- package/dist/components/basic/Alert.svelte.d.ts +9 -0
- package/dist/components/basic/Breadcrumb.svelte +27 -0
- package/dist/components/basic/Breadcrumb.svelte.d.ts +11 -0
- package/dist/components/basic/ButtonGroup.svelte +15 -0
- package/dist/components/basic/ButtonGroup.svelte.d.ts +8 -0
- package/dist/components/basic/Checkbox.svelte +85 -0
- package/dist/components/basic/Checkbox.svelte.d.ts +15 -0
- package/dist/components/basic/Empty.svelte +17 -0
- package/dist/components/basic/Empty.svelte.d.ts +8 -0
- package/dist/components/basic/Kbd.svelte +16 -0
- package/dist/components/basic/Kbd.svelte.d.ts +8 -0
- package/dist/components/basic/Pagination.svelte +104 -0
- package/dist/components/basic/Pagination.svelte.d.ts +12 -0
- package/dist/components/basic/RadioGroup.svelte +71 -0
- package/dist/components/basic/RadioGroup.svelte.d.ts +18 -0
- package/dist/components/basic/Separator.svelte +19 -0
- package/dist/components/basic/Separator.svelte.d.ts +8 -0
- package/dist/components/basic/Slider.svelte +72 -0
- package/dist/components/basic/Slider.svelte.d.ts +17 -0
- package/dist/components/basic/Switch.svelte +88 -0
- package/dist/components/basic/Switch.svelte.d.ts +14 -0
- package/dist/components/basic/Toggle.svelte +43 -0
- package/dist/components/basic/Toggle.svelte.d.ts +14 -0
- package/dist/components/graph/GraphCanvas.svelte +103 -0
- package/dist/components/graph/GraphCanvas.svelte.d.ts +22 -0
- package/dist/components/graph/JatuiNode.svelte +128 -0
- package/dist/components/graph/JatuiNode.svelte.d.ts +14 -0
- package/dist/components/graph/theme.d.ts +27 -0
- package/dist/components/graph/theme.js +136 -0
- package/dist/components/markup.js +62 -59
- package/dist/components/messaging/MessageItem.svelte +92 -0
- package/dist/components/messaging/MessageItem.svelte.d.ts +5 -0
- package/dist/components/messaging/TypingIndicator.svelte +63 -0
- package/dist/components/messaging/TypingIndicator.svelte.d.ts +7 -0
- package/dist/components/pipeline/PipelineColumn.svelte +44 -3
- package/dist/components/progress/ProgressBar.svelte +189 -0
- package/dist/components/progress/ProgressBar.svelte.d.ts +17 -0
- package/dist/components/progress/ProgressRing.svelte +138 -0
- package/dist/components/progress/ProgressRing.svelte.d.ts +12 -0
- package/dist/components/progress/Steps.svelte +195 -0
- package/dist/components/progress/Steps.svelte.d.ts +14 -0
- package/dist/components/session-nav/transcriptModel.js +66 -49
- package/dist/components/shell/NavigationMenu.svelte +422 -0
- package/dist/components/shell/NavigationMenu.svelte.d.ts +43 -0
- package/dist/components/shell/Sidebar.svelte +276 -0
- package/dist/components/shell/Sidebar.svelte.d.ts +32 -0
- package/dist/components/shell/SidebarGroup.svelte +180 -0
- package/dist/components/shell/SidebarGroup.svelte.d.ts +19 -0
- package/dist/components/shell/SidebarItem.svelte +170 -0
- package/dist/components/shell/SidebarItem.svelte.d.ts +24 -0
- package/dist/components/shell/shell.d.ts +30 -0
- package/dist/components/shell/shell.js +65 -0
- package/dist/components/table/DataTable.svelte +364 -0
- package/dist/components/table/DataTable.svelte.d.ts +4 -0
- package/dist/components/table/flexRender.d.ts +31 -0
- package/dist/components/table/flexRender.js +32 -0
- package/dist/components/table/types.d.ts +28 -0
- package/dist/components/table/types.js +1 -0
- package/dist/components/toast/ToastHost.svelte +21 -0
- package/dist/components/toast/ToastHost.svelte.d.ts +3 -0
- package/dist/components/toast/ToastItem.svelte +287 -0
- package/dist/components/toast/ToastItem.svelte.d.ts +9 -0
- package/dist/data/emojis.js +4 -4
- package/dist/dnd/autoScroll.js +12 -10
- package/dist/dnd/createDndBoard.svelte.js +110 -76
- package/dist/dnd/createDndBoard.test.js +161 -85
- package/dist/dnd/draggable.js +23 -15
- package/dist/dnd/dropTarget.js +29 -15
- package/dist/dnd/index.d.ts +0 -1
- package/dist/dnd/index.js +0 -1
- package/dist/dnd/types.d.ts +0 -9
- package/dist/dnd/types.js +14 -2
- package/dist/index.d.ts +60 -6
- package/dist/index.js +73 -6
- package/dist/showcase/AnimatedBeam.svelte +183 -0
- package/dist/showcase/AnimatedBeam.svelte.d.ts +26 -0
- package/dist/showcase/AuroraDrift.svelte +74 -0
- package/dist/showcase/AuroraDrift.svelte.d.ts +9 -0
- package/dist/showcase/BentoCard.svelte +50 -0
- package/dist/showcase/BentoCard.svelte.d.ts +14 -0
- package/dist/showcase/BentoGrid.svelte +43 -0
- package/dist/showcase/BentoGrid.svelte.d.ts +12 -0
- package/dist/showcase/BorderBeam.svelte +79 -0
- package/dist/showcase/BorderBeam.svelte.d.ts +12 -0
- package/dist/showcase/ClipWipe.svelte +82 -0
- package/dist/showcase/ClipWipe.svelte.d.ts +12 -0
- package/dist/showcase/Confetti.svelte +71 -0
- package/dist/showcase/Confetti.svelte.d.ts +10 -0
- package/dist/showcase/CursorSpotlight.svelte +85 -0
- package/dist/showcase/CursorSpotlight.svelte.d.ts +9 -0
- package/dist/showcase/DeviceMock.svelte +186 -0
- package/dist/showcase/DeviceMock.svelte.d.ts +11 -0
- package/dist/showcase/Dock.svelte +123 -0
- package/dist/showcase/Dock.svelte.d.ts +17 -0
- package/dist/showcase/FlipCard.svelte +103 -0
- package/dist/showcase/FlipCard.svelte.d.ts +10 -0
- package/dist/showcase/FocusReveal.svelte +83 -0
- package/dist/showcase/FocusReveal.svelte.d.ts +11 -0
- package/dist/showcase/Globe.svelte +202 -0
- package/dist/showcase/Globe.svelte.d.ts +16 -0
- package/dist/showcase/KenBurns.svelte +105 -0
- package/dist/showcase/KenBurns.svelte.d.ts +13 -0
- package/dist/showcase/Marquee.svelte +89 -0
- package/dist/showcase/Marquee.svelte.d.ts +9 -0
- package/dist/showcase/ParallaxTilt.svelte +98 -0
- package/dist/showcase/ParallaxTilt.svelte.d.ts +10 -0
- package/dist/showcase/ScrambleText.svelte +98 -0
- package/dist/showcase/ScrambleText.svelte.d.ts +11 -0
- package/dist/showcase/ShineSweep.svelte +81 -0
- package/dist/showcase/ShineSweep.svelte.d.ts +9 -0
- package/dist/showcase/Terminal.svelte +230 -0
- package/dist/showcase/Terminal.svelte.d.ts +18 -0
- package/dist/showcase/TextSplitReveal.svelte +146 -0
- package/dist/showcase/TextSplitReveal.svelte.d.ts +13 -0
- package/dist/showcase/TextWave.svelte +55 -0
- package/dist/showcase/TextWave.svelte.d.ts +8 -0
- package/dist/showcase/TypewriterText.svelte +130 -0
- package/dist/showcase/TypewriterText.svelte.d.ts +9 -0
- package/dist/showcase/backdrop/GrainGradient.svelte +126 -0
- package/dist/showcase/backdrop/GrainGradient.svelte.d.ts +23 -0
- package/dist/showcase/backdrop/MeshGradient.svelte +104 -0
- package/dist/showcase/backdrop/MeshGradient.svelte.d.ts +20 -0
- package/dist/showcase/backdrop/Metaballs.svelte +116 -0
- package/dist/showcase/backdrop/Metaballs.svelte.d.ts +18 -0
- package/dist/showcase/backdrop/NeuroNoise.svelte +115 -0
- package/dist/showcase/backdrop/NeuroNoise.svelte.d.ts +20 -0
- package/dist/showcase/backdrop/ShowcaseBackdrop.svelte +48 -0
- package/dist/showcase/backdrop/ShowcaseBackdrop.svelte.d.ts +12 -0
- package/dist/showcase/generative/GenerativeBackdrop.svelte +234 -0
- package/dist/showcase/generative/GenerativeBackdrop.svelte.d.ts +9 -0
- package/dist/showcase/generative/intent.d.ts +7 -0
- package/dist/showcase/generative/intent.js +67 -0
- package/dist/showcase/generative/manifest.d.ts +9 -0
- package/dist/showcase/generative/manifest.js +97 -0
- package/dist/showcase/generative/types.d.ts +48 -0
- package/dist/showcase/generative/types.js +8 -0
- package/dist/showcase/index.d.ts +36 -0
- package/dist/showcase/index.js +46 -0
- package/dist/showcase/scroll/SmoothScroll.svelte +49 -0
- package/dist/showcase/scroll/SmoothScroll.svelte.d.ts +12 -0
- package/dist/showcase/scroll/scrollProgress.d.ts +24 -0
- package/dist/showcase/scroll/scrollProgress.js +65 -0
- package/dist/showcase/scroll/scrollReveal.d.ts +30 -0
- package/dist/showcase/scroll/scrollReveal.js +70 -0
- package/dist/stores/commandPalette.svelte.d.ts +24 -0
- package/dist/stores/commandPalette.svelte.js +82 -0
- package/dist/stores/confirmDialog.svelte.js +5 -5
- package/dist/stores/inputDialog.svelte.js +5 -5
- package/dist/stores/toast.svelte.d.ts +28 -0
- package/dist/stores/toast.svelte.js +33 -0
- package/dist/styles/motion.css +46 -0
- package/dist/styles/tokens.css +31 -0
- package/dist/transitions/glide.d.ts +31 -0
- package/dist/transitions/glide.js +58 -0
- package/dist/types/booking.js +4 -4
- package/dist/types/comments.js +2 -2
- package/dist/types/messaging.js +3 -3
- package/dist/types/pipeline.js +2 -2
- package/dist/utils/currency.js +4 -2
- package/dist/utils/daisyuiColors.js +27 -25
- package/dist/utils/dateFormatters.d.ts +20 -0
- package/dist/utils/dateFormatters.js +65 -44
- package/dist/utils/googleMapsLoader.js +100 -46
- package/dist/utils/mentionParser.js +30 -30
- package/dist/utils/phone.js +27 -21
- package/dist/utils/phoneFormat.js +9 -9
- package/dist/utils/sound.d.ts +6 -0
- package/dist/utils/sound.js +113 -0
- package/dist/utils/splitText.d.ts +25 -0
- package/dist/utils/splitText.js +94 -0
- package/dist/utils/taskUtils.js +1 -1
- package/dist/utils/themeWipe.d.ts +21 -0
- package/dist/utils/themeWipe.js +94 -0
- package/dist/utils/viewTransition.d.ts +23 -0
- package/dist/utils/viewTransition.js +75 -0
- package/package.json +56 -4
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { dismissToast, type Toast } from '../../stores/toast.svelte.js';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
toast: Toast;
|
|
6
|
+
index: number;
|
|
7
|
+
total: number;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
let { toast, index, total }: Props = $props();
|
|
11
|
+
|
|
12
|
+
// Stack compression: older toasts (lower index) scale down and fade behind newer ones
|
|
13
|
+
// index 0 = oldest (back), index total-1 = newest (front)
|
|
14
|
+
const stackDepth = $derived(total - 1 - index);
|
|
15
|
+
const stackScale = $derived(Math.max(0.88, 1 - stackDepth * 0.04));
|
|
16
|
+
const stackOpacity = $derived(stackDepth >= 3 ? 0 : 1 - stackDepth * 0.1);
|
|
17
|
+
|
|
18
|
+
// Drag-to-dismiss state
|
|
19
|
+
let dragX = $state(0);
|
|
20
|
+
let isDragging = $state(false);
|
|
21
|
+
let startX = 0;
|
|
22
|
+
let startVelocityX = 0;
|
|
23
|
+
let lastX = 0;
|
|
24
|
+
let lastTime = 0;
|
|
25
|
+
|
|
26
|
+
// Entrance animation
|
|
27
|
+
let mounted = $state(false);
|
|
28
|
+
let exiting = $state(false);
|
|
29
|
+
|
|
30
|
+
$effect(() => {
|
|
31
|
+
requestAnimationFrame(() => {
|
|
32
|
+
mounted = true;
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Undo countdown
|
|
37
|
+
let undoProgress = $state(1);
|
|
38
|
+
let undoTimer: ReturnType<typeof setInterval> | null = null;
|
|
39
|
+
let undoDone = $state(false);
|
|
40
|
+
let hovered = $state(false);
|
|
41
|
+
let focused = $state(false);
|
|
42
|
+
|
|
43
|
+
const paused = $derived(hovered || focused);
|
|
44
|
+
|
|
45
|
+
$effect(() => {
|
|
46
|
+
if (!toast.onUndo) return;
|
|
47
|
+
const totalMs = toast.durationMs;
|
|
48
|
+
const steps = 60;
|
|
49
|
+
const stepMs = totalMs / steps;
|
|
50
|
+
let elapsed = 0;
|
|
51
|
+
|
|
52
|
+
const tick = () => {
|
|
53
|
+
if (paused) return;
|
|
54
|
+
elapsed += stepMs;
|
|
55
|
+
undoProgress = Math.max(0, 1 - elapsed / totalMs);
|
|
56
|
+
if (undoProgress <= 0) {
|
|
57
|
+
clearInterval(undoTimer!);
|
|
58
|
+
undoTimer = null;
|
|
59
|
+
undoDone = true;
|
|
60
|
+
triggerDismiss();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
undoTimer = setInterval(tick, stepMs);
|
|
65
|
+
return () => {
|
|
66
|
+
if (undoTimer) clearInterval(undoTimer);
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Auto-dismiss for non-undo toasts
|
|
71
|
+
let dismissTimer: ReturnType<typeof setTimeout> | null = null;
|
|
72
|
+
|
|
73
|
+
$effect(() => {
|
|
74
|
+
if (toast.onUndo) return;
|
|
75
|
+
const schedule = () => {
|
|
76
|
+
dismissTimer = setTimeout(() => {
|
|
77
|
+
if (!hovered && !focused) triggerDismiss();
|
|
78
|
+
else {
|
|
79
|
+
// Re-check on unhover
|
|
80
|
+
const resume = () => {
|
|
81
|
+
if (!hovered && !focused) triggerDismiss();
|
|
82
|
+
};
|
|
83
|
+
document.addEventListener('pointerleave', resume, { once: true });
|
|
84
|
+
}
|
|
85
|
+
}, toast.durationMs);
|
|
86
|
+
};
|
|
87
|
+
schedule();
|
|
88
|
+
return () => {
|
|
89
|
+
if (dismissTimer) clearTimeout(dismissTimer);
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Re-start timer when un-paused
|
|
94
|
+
$effect(() => {
|
|
95
|
+
if (paused && dismissTimer) {
|
|
96
|
+
clearTimeout(dismissTimer);
|
|
97
|
+
dismissTimer = null;
|
|
98
|
+
} else if (!paused && !dismissTimer && !toast.onUndo) {
|
|
99
|
+
dismissTimer = setTimeout(triggerDismiss, toast.durationMs);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
function triggerDismiss() {
|
|
104
|
+
exiting = true;
|
|
105
|
+
setTimeout(() => dismissToast(toast.id), 220);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function handleUndo() {
|
|
109
|
+
if (undoTimer) clearInterval(undoTimer);
|
|
110
|
+
toast.onUndo?.();
|
|
111
|
+
triggerDismiss();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Drag handlers
|
|
115
|
+
function onPointerDown(e: PointerEvent) {
|
|
116
|
+
if ((e.target as HTMLElement).closest('button')) return;
|
|
117
|
+
isDragging = true;
|
|
118
|
+
startX = e.clientX;
|
|
119
|
+
lastX = e.clientX;
|
|
120
|
+
lastTime = e.timeStamp;
|
|
121
|
+
dragX = 0;
|
|
122
|
+
startVelocityX = 0;
|
|
123
|
+
(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function onPointerMove(e: PointerEvent) {
|
|
127
|
+
if (!isDragging) return;
|
|
128
|
+
const now = e.timeStamp;
|
|
129
|
+
const dt = now - lastTime;
|
|
130
|
+
if (dt > 0) {
|
|
131
|
+
startVelocityX = (e.clientX - lastX) / dt;
|
|
132
|
+
}
|
|
133
|
+
lastX = e.clientX;
|
|
134
|
+
lastTime = now;
|
|
135
|
+
dragX = e.clientX - startX;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function onPointerUp(e: PointerEvent) {
|
|
139
|
+
if (!isDragging) return;
|
|
140
|
+
isDragging = false;
|
|
141
|
+
const THRESHOLD = 100;
|
|
142
|
+
// Velocity-based fling: >0.5px/ms or past threshold
|
|
143
|
+
if (Math.abs(dragX) > THRESHOLD || Math.abs(startVelocityX) > 0.5) {
|
|
144
|
+
const dir = dragX > 0 ? 1 : -1;
|
|
145
|
+
dragX = dir * window.innerWidth;
|
|
146
|
+
exiting = true;
|
|
147
|
+
setTimeout(() => dismissToast(toast.id), 300);
|
|
148
|
+
} else {
|
|
149
|
+
// Snap back with spring
|
|
150
|
+
dragX = 0;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// DaisyUI alert class per type
|
|
155
|
+
const alertClass: Record<string, string> = {
|
|
156
|
+
info: 'alert-info',
|
|
157
|
+
success: 'alert-success',
|
|
158
|
+
warning: 'alert-warning',
|
|
159
|
+
error: 'alert-error'
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// ARIA role per type
|
|
163
|
+
const ariaRole = $derived(toast.type === 'error' ? 'alert' : 'status');
|
|
164
|
+
const ariaLive = $derived(toast.type === 'error' ? 'assertive' : 'polite');
|
|
165
|
+
|
|
166
|
+
// Entrance/exit transform
|
|
167
|
+
const itemTransform = $derived(
|
|
168
|
+
isDragging
|
|
169
|
+
? `translateX(${dragX}px) rotate(${dragX * 0.02}deg)`
|
|
170
|
+
: exiting
|
|
171
|
+
? `translateY(20px) scale(0.9)`
|
|
172
|
+
: mounted
|
|
173
|
+
? `translateX(0) rotate(0deg)`
|
|
174
|
+
: `translateY(40px) scale(0.92)`
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
const itemOpacity = $derived(
|
|
178
|
+
isDragging
|
|
179
|
+
? Math.max(0, 1 - Math.abs(dragX) / 200)
|
|
180
|
+
: exiting
|
|
181
|
+
? 0
|
|
182
|
+
: mounted
|
|
183
|
+
? 1
|
|
184
|
+
: 0
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
const dragTransition = $derived(
|
|
188
|
+
isDragging
|
|
189
|
+
? 'none'
|
|
190
|
+
: exiting
|
|
191
|
+
? 'transform var(--motion-enter) var(--motion-glide), opacity var(--motion-enter) var(--motion-glide)'
|
|
192
|
+
: 'transform var(--motion-enter) var(--motion-spring), opacity var(--motion-fast) var(--motion-glide)'
|
|
193
|
+
);
|
|
194
|
+
</script>
|
|
195
|
+
|
|
196
|
+
<li
|
|
197
|
+
class="toast-item pointer-events-auto w-full"
|
|
198
|
+
style:transform={itemTransform}
|
|
199
|
+
style:opacity={itemOpacity}
|
|
200
|
+
style:transition={dragTransition}
|
|
201
|
+
role={ariaRole}
|
|
202
|
+
aria-live={ariaLive}
|
|
203
|
+
onmouseenter={() => (hovered = true)}
|
|
204
|
+
onmouseleave={() => (hovered = false)}
|
|
205
|
+
onfocusin={() => (focused = true)}
|
|
206
|
+
onfocusout={() => (focused = false)}
|
|
207
|
+
onpointerdown={onPointerDown}
|
|
208
|
+
onpointermove={onPointerMove}
|
|
209
|
+
onpointerup={onPointerUp}
|
|
210
|
+
>
|
|
211
|
+
<div
|
|
212
|
+
class="alert {alertClass[toast.type]} shadow-sm relative overflow-hidden gap-3 pr-3"
|
|
213
|
+
style:transform="scale({stackScale})"
|
|
214
|
+
style:opacity={stackOpacity}
|
|
215
|
+
style:transition="transform var(--motion-move) var(--motion-glide), opacity var(--motion-move) var(--motion-glide)"
|
|
216
|
+
>
|
|
217
|
+
<!-- Undo countdown bar -->
|
|
218
|
+
{#if toast.onUndo && !undoDone}
|
|
219
|
+
<span
|
|
220
|
+
class="toast-progress absolute bottom-0 left-0 h-0.5 w-full origin-left bg-current opacity-40"
|
|
221
|
+
style:animation-duration="{toast.durationMs}ms"
|
|
222
|
+
style:animation-play-state={paused ? 'paused' : 'running'}
|
|
223
|
+
></span>
|
|
224
|
+
{/if}
|
|
225
|
+
|
|
226
|
+
<span class="flex-1 text-sm">{toast.message}</span>
|
|
227
|
+
|
|
228
|
+
{#if toast.onUndo}
|
|
229
|
+
<button
|
|
230
|
+
type="button"
|
|
231
|
+
class="btn btn-ghost btn-xs font-semibold"
|
|
232
|
+
onclick={handleUndo}
|
|
233
|
+
>
|
|
234
|
+
Undo
|
|
235
|
+
</button>
|
|
236
|
+
{:else if toast.action}
|
|
237
|
+
<button
|
|
238
|
+
type="button"
|
|
239
|
+
class="btn btn-ghost btn-xs font-semibold"
|
|
240
|
+
onclick={() => { toast.action!.onClick(); triggerDismiss(); }}
|
|
241
|
+
>
|
|
242
|
+
{toast.action.label}
|
|
243
|
+
</button>
|
|
244
|
+
{/if}
|
|
245
|
+
|
|
246
|
+
<button
|
|
247
|
+
type="button"
|
|
248
|
+
class="btn btn-ghost btn-xs btn-square"
|
|
249
|
+
aria-label="Dismiss notification"
|
|
250
|
+
onclick={triggerDismiss}
|
|
251
|
+
>
|
|
252
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
|
253
|
+
<path d="M18 6L6 18M6 6l12 12"/>
|
|
254
|
+
</svg>
|
|
255
|
+
</button>
|
|
256
|
+
</div>
|
|
257
|
+
</li>
|
|
258
|
+
|
|
259
|
+
<style>
|
|
260
|
+
.toast-item {
|
|
261
|
+
list-style: none;
|
|
262
|
+
touch-action: pan-y;
|
|
263
|
+
user-select: none;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.toast-progress {
|
|
267
|
+
animation-name: drain;
|
|
268
|
+
animation-timing-function: linear;
|
|
269
|
+
animation-fill-mode: forwards;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
@keyframes drain {
|
|
273
|
+
from { transform: scaleX(1); }
|
|
274
|
+
to { transform: scaleX(0); }
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@media (prefers-reduced-motion: reduce) {
|
|
278
|
+
.toast-progress {
|
|
279
|
+
animation: none;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.toast-item,
|
|
283
|
+
.toast-item > div {
|
|
284
|
+
transition: none !important;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Toast } from '../../stores/toast.svelte.js';
|
|
2
|
+
type Props = {
|
|
3
|
+
toast: Toast;
|
|
4
|
+
index: number;
|
|
5
|
+
total: number;
|
|
6
|
+
};
|
|
7
|
+
declare const ToastItem: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type ToastItem = ReturnType<typeof ToastItem>;
|
|
9
|
+
export default ToastItem;
|
package/dist/data/emojis.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Each emoji has a character and searchable name.
|
|
4
4
|
* Based on Unicode CLDR emoji ordering, minus most flags.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
6
|
+
export var EMOJI_DATA = [
|
|
7
7
|
{
|
|
8
8
|
label: 'Smileys & Emotion',
|
|
9
9
|
emojis: [
|
|
@@ -1186,11 +1186,11 @@ export const EMOJI_DATA = [
|
|
|
1186
1186
|
},
|
|
1187
1187
|
];
|
|
1188
1188
|
/** Flat array of all emojis for search */
|
|
1189
|
-
export
|
|
1189
|
+
export var ALL_EMOJIS = EMOJI_DATA.flatMap(function (g) { return g.emojis; });
|
|
1190
1190
|
/** Search emojis by name, returns matching entries */
|
|
1191
1191
|
export function searchEmojis(query) {
|
|
1192
1192
|
if (!query.trim())
|
|
1193
1193
|
return [];
|
|
1194
|
-
|
|
1195
|
-
return ALL_EMOJIS.filter((e)
|
|
1194
|
+
var terms = query.toLowerCase().split(/\s+/);
|
|
1195
|
+
return ALL_EMOJIS.filter(function (e) { return terms.every(function (t) { return e.name.includes(t); }); });
|
|
1196
1196
|
}
|
package/dist/dnd/autoScroll.js
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export var autoScroll = function (node, params) {
|
|
3
|
+
var current = params !== null && params !== void 0 ? params : {};
|
|
4
4
|
function register() {
|
|
5
5
|
return autoScrollForElements({
|
|
6
6
|
element: node,
|
|
7
|
-
canScroll: (
|
|
8
|
-
|
|
7
|
+
canScroll: function (_a) {
|
|
8
|
+
var _b;
|
|
9
|
+
var source = _a.source;
|
|
10
|
+
if (!((_b = current.types) === null || _b === void 0 ? void 0 : _b.length))
|
|
9
11
|
return true;
|
|
10
12
|
return current.types.includes(source.data.type);
|
|
11
13
|
},
|
|
12
|
-
getAllowedAxis: ()
|
|
13
|
-
getConfiguration: ()
|
|
14
|
+
getAllowedAxis: function () { var _a; return (_a = current.axis) !== null && _a !== void 0 ? _a : 'all'; },
|
|
15
|
+
getConfiguration: function () { var _a; return ({ maxScrollSpeed: (_a = current.speed) !== null && _a !== void 0 ? _a : 'standard' }); },
|
|
14
16
|
});
|
|
15
17
|
}
|
|
16
|
-
|
|
18
|
+
var cleanup = register();
|
|
17
19
|
return {
|
|
18
|
-
update(next) {
|
|
19
|
-
current = next
|
|
20
|
+
update: function (next) {
|
|
21
|
+
current = next !== null && next !== void 0 ? next : {};
|
|
20
22
|
cleanup();
|
|
21
23
|
cleanup = register();
|
|
22
24
|
},
|
|
23
|
-
destroy: ()
|
|
25
|
+
destroy: function () { return cleanup(); },
|
|
24
26
|
};
|
|
25
27
|
};
|
|
@@ -1,28 +1,40 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
1
10
|
import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
|
|
2
11
|
import { extractClosestEdge, attachClosestEdge, } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
3
12
|
import { SvelteMap } from 'svelte/reactivity';
|
|
4
13
|
import { announce } from './announce';
|
|
5
14
|
import { makeItemData, isItemData, } from './types';
|
|
6
|
-
|
|
15
|
+
var SHADOW_KEY = '__dnd-shadow__';
|
|
7
16
|
export function createDndBoard(opts) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
var _a, _b;
|
|
18
|
+
var edges = (_a = opts.edges) !== null && _a !== void 0 ? _a : ['top', 'bottom'];
|
|
19
|
+
var hover = (_b = opts.hover) !== null && _b !== void 0 ? _b : 'indicator';
|
|
20
|
+
var mirror = new SvelteMap();
|
|
21
|
+
var dragging = $state(null);
|
|
22
|
+
var proposal = $state(null);
|
|
23
|
+
var seq = new Map();
|
|
24
|
+
var inFlight = 0;
|
|
25
|
+
var seedQueued = false;
|
|
16
26
|
function seed() {
|
|
17
27
|
mirror.clear();
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
var src = opts.items();
|
|
29
|
+
var entries = src instanceof Map
|
|
20
30
|
? src
|
|
21
31
|
: new Map(Object.entries(src));
|
|
22
|
-
for (
|
|
23
|
-
|
|
32
|
+
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
|
|
33
|
+
var _a = entries_1[_i], id = _a[0], list = _a[1];
|
|
34
|
+
mirror.set(id, __spreadArray([], list, true));
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
|
-
$effect(()
|
|
37
|
+
$effect(function () {
|
|
26
38
|
opts.items();
|
|
27
39
|
if (dragging || inFlight > 0) {
|
|
28
40
|
seedQueued = true;
|
|
@@ -31,52 +43,57 @@ export function createDndBoard(opts) {
|
|
|
31
43
|
seed();
|
|
32
44
|
});
|
|
33
45
|
function placementFrom(dropTargets) {
|
|
34
|
-
|
|
46
|
+
var _a;
|
|
47
|
+
var inner = dropTargets[0];
|
|
35
48
|
if (!inner)
|
|
36
49
|
return null;
|
|
37
|
-
|
|
50
|
+
var d = inner.data;
|
|
38
51
|
if (typeof d.container !== 'string')
|
|
39
52
|
return null;
|
|
40
|
-
|
|
53
|
+
var list = (_a = mirror.get(d.container)) !== null && _a !== void 0 ? _a : [];
|
|
41
54
|
if (typeof d.index !== 'number')
|
|
42
55
|
return { container: d.container, index: list.length };
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
var edge = extractClosestEdge(d);
|
|
57
|
+
var after = edge === 'bottom' || edge === 'right';
|
|
45
58
|
return { container: d.container, index: d.index + (after ? 1 : 0) };
|
|
46
59
|
}
|
|
47
60
|
function syncShadow(next) {
|
|
48
|
-
|
|
49
|
-
|
|
61
|
+
var _a;
|
|
62
|
+
var _b;
|
|
63
|
+
for (var _i = 0, mirror_1 = mirror; _i < mirror_1.length; _i++) {
|
|
64
|
+
var _c = mirror_1[_i], cid = _c[0], list_1 = _c[1];
|
|
65
|
+
var idx = list_1.findIndex(function (item) { return item[SHADOW_KEY]; });
|
|
50
66
|
if (idx !== -1) {
|
|
51
|
-
|
|
52
|
-
mirror.set(cid,
|
|
67
|
+
list_1.splice(idx, 1);
|
|
68
|
+
mirror.set(cid, list_1);
|
|
53
69
|
break;
|
|
54
70
|
}
|
|
55
71
|
}
|
|
56
72
|
if (!next || !dragging)
|
|
57
73
|
return;
|
|
58
|
-
|
|
59
|
-
|
|
74
|
+
var list = __spreadArray([], ((_b = mirror.get(next.container)) !== null && _b !== void 0 ? _b : []), true);
|
|
75
|
+
var shadowItem = (_a = {}, _a[SHADOW_KEY] = true, _a.key = "".concat(SHADOW_KEY, "-").concat(dragging.key), _a);
|
|
60
76
|
list.splice(Math.min(next.index, list.length), 0, shadowItem);
|
|
61
77
|
mirror.set(next.container, list);
|
|
62
78
|
}
|
|
63
79
|
function consider(next) {
|
|
64
|
-
if (next
|
|
80
|
+
if ((next === null || next === void 0 ? void 0 : next.container) === (proposal === null || proposal === void 0 ? void 0 : proposal.container) && (next === null || next === void 0 ? void 0 : next.index) === (proposal === null || proposal === void 0 ? void 0 : proposal.index))
|
|
65
81
|
return;
|
|
66
82
|
proposal = next;
|
|
67
83
|
if (hover === 'shadow')
|
|
68
84
|
syncShadow(next);
|
|
69
85
|
}
|
|
70
86
|
function applyToMirror(move) {
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
var _a, _b;
|
|
88
|
+
var fromList = __spreadArray([], ((_a = mirror.get(move.from.container)) !== null && _a !== void 0 ? _a : []), true);
|
|
89
|
+
var toList = move.from.container === move.to.container
|
|
73
90
|
? fromList
|
|
74
|
-
: [
|
|
75
|
-
|
|
91
|
+
: __spreadArray([], ((_b = mirror.get(move.to.container)) !== null && _b !== void 0 ? _b : []), true);
|
|
92
|
+
var srcIdx = fromList.findIndex(function (it) { return opts.key(it) === opts.key(move.item); });
|
|
76
93
|
if (srcIdx === -1)
|
|
77
94
|
return;
|
|
78
95
|
fromList.splice(srcIdx, 1);
|
|
79
|
-
|
|
96
|
+
var destIdx = move.to.index;
|
|
80
97
|
if (move.from.container === move.to.container && move.to.index > move.from.index) {
|
|
81
98
|
destIdx = Math.max(0, destIdx - 1);
|
|
82
99
|
}
|
|
@@ -87,21 +104,24 @@ export function createDndBoard(opts) {
|
|
|
87
104
|
}
|
|
88
105
|
}
|
|
89
106
|
function rollback(move) {
|
|
90
|
-
|
|
91
|
-
|
|
107
|
+
var _a;
|
|
108
|
+
for (var _i = 0, mirror_2 = mirror; _i < mirror_2.length; _i++) {
|
|
109
|
+
var _b = mirror_2[_i], cid = _b[0], list = _b[1];
|
|
110
|
+
var idx = list.findIndex(function (it) { return opts.key(it) === opts.key(move.item); });
|
|
92
111
|
if (idx !== -1) {
|
|
93
112
|
list.splice(idx, 1);
|
|
94
113
|
mirror.set(cid, list);
|
|
95
114
|
break;
|
|
96
115
|
}
|
|
97
116
|
}
|
|
98
|
-
|
|
117
|
+
var fromList = __spreadArray([], ((_a = mirror.get(move.from.container)) !== null && _a !== void 0 ? _a : []), true);
|
|
99
118
|
fromList.splice(Math.min(move.from.index, fromList.length), 0, move.item);
|
|
100
119
|
mirror.set(move.from.container, fromList);
|
|
101
120
|
}
|
|
102
121
|
function finalize(dropped) {
|
|
103
|
-
|
|
104
|
-
|
|
122
|
+
var _a;
|
|
123
|
+
var drag = dragging;
|
|
124
|
+
var to = dropped ? proposal : null;
|
|
105
125
|
dragging = null;
|
|
106
126
|
consider(null);
|
|
107
127
|
if (!drag)
|
|
@@ -114,21 +134,22 @@ export function createDndBoard(opts) {
|
|
|
114
134
|
}
|
|
115
135
|
return;
|
|
116
136
|
}
|
|
117
|
-
|
|
137
|
+
var move = { item: drag.item, from: drag.from, to: to };
|
|
118
138
|
applyToMirror(move);
|
|
119
139
|
if (opts.announce)
|
|
120
140
|
announce(opts.announce(move));
|
|
121
|
-
|
|
141
|
+
var token = ((_a = seq.get(drag.key)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
122
142
|
seq.set(drag.key, token);
|
|
123
143
|
inFlight++;
|
|
124
144
|
opts
|
|
125
145
|
.commit(move)
|
|
126
|
-
.catch((error)
|
|
146
|
+
.catch(function (error) {
|
|
147
|
+
var _a;
|
|
127
148
|
if (seq.get(drag.key) === token)
|
|
128
149
|
rollback(move);
|
|
129
|
-
opts.onError
|
|
150
|
+
(_a = opts.onError) === null || _a === void 0 ? void 0 : _a.call(opts, error, move);
|
|
130
151
|
})
|
|
131
|
-
.finally(()
|
|
152
|
+
.finally(function () {
|
|
132
153
|
inFlight--;
|
|
133
154
|
if (inFlight === 0 && seedQueued && !dragging) {
|
|
134
155
|
seedQueued = false;
|
|
@@ -136,48 +157,61 @@ export function createDndBoard(opts) {
|
|
|
136
157
|
}
|
|
137
158
|
});
|
|
138
159
|
}
|
|
139
|
-
$effect(()
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
$effect(function () {
|
|
161
|
+
return monitorForElements({
|
|
162
|
+
canMonitor: function (_a) {
|
|
163
|
+
var source = _a.source;
|
|
164
|
+
return isItemData(source.data, opts.type);
|
|
165
|
+
},
|
|
166
|
+
onDragStart: function (_a) {
|
|
167
|
+
var source = _a.source;
|
|
168
|
+
var d = source.data;
|
|
169
|
+
dragging = {
|
|
170
|
+
key: d.key,
|
|
171
|
+
item: d.item,
|
|
172
|
+
from: { container: d.container, index: d.index },
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
onDropTargetChange: function (_a) {
|
|
176
|
+
var location = _a.location;
|
|
177
|
+
consider(placementFrom(location.current.dropTargets));
|
|
178
|
+
},
|
|
179
|
+
onDrag: function (_a) {
|
|
180
|
+
var location = _a.location;
|
|
181
|
+
consider(placementFrom(location.current.dropTargets));
|
|
182
|
+
},
|
|
183
|
+
onDrop: function (_a) {
|
|
184
|
+
var location = _a.location;
|
|
185
|
+
finalize(location.current.dropTargets.length > 0);
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
});
|
|
159
189
|
return {
|
|
160
|
-
get: (container)
|
|
161
|
-
containers: ()
|
|
190
|
+
get: function (container) { var _a; return (_a = mirror.get(container)) !== null && _a !== void 0 ? _a : []; },
|
|
191
|
+
containers: function () { return __spreadArray([], mirror.keys(), true); },
|
|
162
192
|
get dragging() {
|
|
163
193
|
return dragging;
|
|
164
194
|
},
|
|
165
195
|
get proposal() {
|
|
166
196
|
return proposal;
|
|
167
197
|
},
|
|
168
|
-
isSource: (item)
|
|
169
|
-
isShadow: (item)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
198
|
+
isSource: function (item) { return (dragging === null || dragging === void 0 ? void 0 : dragging.key) === opts.key(item); },
|
|
199
|
+
isShadow: function (item) {
|
|
200
|
+
return !!item[SHADOW_KEY];
|
|
201
|
+
},
|
|
202
|
+
item: function (item, container, index) { return ({
|
|
203
|
+
data: function () { return makeItemData({ type: opts.type, key: opts.key(item), item: item, container: container, index: index }); },
|
|
204
|
+
}); },
|
|
205
|
+
itemTarget: function (container, index) { return ({
|
|
206
|
+
data: function (feedback) {
|
|
207
|
+
return attachClosestEdge({ type: "".concat(opts.type, "-target"), container: container, index: index }, { input: feedback.input, element: feedback.element, allowedEdges: edges });
|
|
208
|
+
},
|
|
209
|
+
accepts: function (d) { return isItemData(d, opts.type); },
|
|
176
210
|
sticky: true,
|
|
177
|
-
}),
|
|
178
|
-
containerTarget: (container)
|
|
179
|
-
data: ()
|
|
180
|
-
accepts: (d)
|
|
181
|
-
}),
|
|
211
|
+
}); },
|
|
212
|
+
containerTarget: function (container) { return ({
|
|
213
|
+
data: function () { return ({ type: "".concat(opts.type, "-target"), container: container }); },
|
|
214
|
+
accepts: function (d) { return isItemData(d, opts.type); },
|
|
215
|
+
}); },
|
|
182
216
|
};
|
|
183
217
|
}
|