@joewinke/jatui 0.2.2 → 0.2.3
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/components/CommandPalette.svelte +1 -1
- package/dist/components/ConfirmDialog.svelte +1 -1
- package/dist/components/InputDialog.svelte +1 -1
- package/dist/components/shell/Sidebar.svelte +1 -1
- package/dist/components/shell/Sidebar.svelte.d.ts +1 -1
- package/dist/components/shell/shell.js +63 -60
- package/dist/components/table/DataTable.svelte +10 -1
- package/dist/components/toast/ToastHost.svelte +1 -1
- package/dist/components/toast/ToastItem.svelte +1 -1
- package/dist/components/toast/ToastItem.svelte.d.ts +1 -1
- package/dist/dnd/createDndBoard.js +329 -0
- package/dist/dnd/index.d.ts +2 -2
- package/dist/dnd/index.js +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +4 -4
- package/dist/stores/commandPalette.js +116 -0
- package/dist/stores/confirmDialog.js +37 -0
- package/dist/stores/inputDialog.js +37 -0
- package/dist/stores/toast.js +53 -0
- package/package.json +2 -2
- package/dist/dnd/createDndBoard.svelte.js +0 -217
- package/dist/stores/commandPalette.svelte.js +0 -82
- package/dist/stores/confirmDialog.svelte.js +0 -31
- package/dist/stores/inputDialog.svelte.js +0 -32
- package/dist/stores/toast.svelte.js +0 -33
- /package/dist/dnd/{createDndBoard.svelte.d.ts → createDndBoard.d.ts} +0 -0
- /package/dist/stores/{commandPalette.svelte.d.ts → commandPalette.d.ts} +0 -0
- /package/dist/stores/{confirmDialog.svelte.d.ts → confirmDialog.d.ts} +0 -0
- /package/dist/stores/{inputDialog.svelte.d.ts → inputDialog.d.ts} +0 -0
- /package/dist/stores/{toast.svelte.d.ts → toast.d.ts} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { tick } from 'svelte';
|
|
3
3
|
import { fly, fade } from 'svelte/transition';
|
|
4
4
|
import { cubicOut } from 'svelte/easing';
|
|
5
|
-
import { commandPalette, type CommandItem } from '../stores/commandPalette.
|
|
5
|
+
import { commandPalette, type CommandItem } from '../stores/commandPalette.js';
|
|
6
6
|
|
|
7
7
|
// Respect prefers-reduced-motion
|
|
8
8
|
const reducedMotion =
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { fly, fade } from 'svelte/transition';
|
|
3
3
|
import { cubicOut } from 'svelte/easing';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
|
-
import { getPending, confirmDialog, cancelDialog } from '../stores/confirmDialog
|
|
5
|
+
import { getPending, confirmDialog, cancelDialog } from '../stores/confirmDialog';
|
|
6
6
|
|
|
7
7
|
const pending = $derived(getPending());
|
|
8
8
|
const opts = $derived(pending?.options ?? null);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { fly, fade } from 'svelte/transition';
|
|
3
3
|
import { cubicOut } from 'svelte/easing';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
|
-
import { getPendingInput, submitInput, cancelInput } from '../stores/inputDialog
|
|
5
|
+
import { getPendingInput, submitInput, cancelInput } from '../stores/inputDialog';
|
|
6
6
|
|
|
7
7
|
const pending = $derived(getPendingInput());
|
|
8
8
|
const opts = $derived(pending?.options ?? null);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* icon — icon-only rail (no width transition — labels/groups hide via class swap)
|
|
8
8
|
* collapsed — completely hidden; mobile uses a Drawer overlay
|
|
9
9
|
*
|
|
10
|
-
* Pass a sidebarState from createSidebarState() (shell.ts) for persistence
|
|
10
|
+
* Pass a sidebarState from createSidebarState() (shell.svelte.ts) for persistence
|
|
11
11
|
* and active-item tracking. Without it, the sidebar is stateless.
|
|
12
12
|
*/
|
|
13
13
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* icon — icon-only rail (no width transition — labels/groups hide via class swap)
|
|
7
7
|
* collapsed — completely hidden; mobile uses a Drawer overlay
|
|
8
8
|
*
|
|
9
|
-
* Pass a sidebarState from createSidebarState() (shell.ts) for persistence
|
|
9
|
+
* Pass a sidebarState from createSidebarState() (shell.svelte.ts) for persistence
|
|
10
10
|
* and active-item tracking. Without it, the sidebar is stateless.
|
|
11
11
|
*/
|
|
12
12
|
import type { Snippet } from 'svelte';
|
|
@@ -1,65 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
* or prop drilling.
|
|
5
|
-
*
|
|
6
|
-
* Persistence: localStorage (fallback to cookie via document.cookie) keyed
|
|
7
|
-
* on `storageKey`. Set storageKey = '' to disable persistence.
|
|
8
|
-
*/
|
|
1
|
+
/* shell.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
9
4
|
function readStorage(key) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
5
|
+
if (!key || typeof window === 'undefined') return null;
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
return localStorage.getItem(key);
|
|
9
|
+
} catch(_a) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
18
12
|
}
|
|
13
|
+
|
|
19
14
|
function writeStorage(key, value) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
15
|
+
if (!key || typeof window === 'undefined') return;
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
localStorage.setItem(key, value);
|
|
19
|
+
} catch(_a) {
|
|
20
|
+
// silently fail if storage unavailable
|
|
21
|
+
}
|
|
28
22
|
}
|
|
23
|
+
|
|
29
24
|
export function createSidebarState(options) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
var storageKey = (_a = options === null || options === void 0 ? void 0 : options.storageKey) !== null && _a !== void 0 ? _a : 'jatui-sidebar';
|
|
27
|
+
var defaultMode = (_b = options === null || options === void 0 ? void 0 : options.defaultMode) !== null && _b !== void 0 ? _b : 'expanded';
|
|
28
|
+
var storedMode = readStorage(storageKey);
|
|
29
|
+
var validModes = ['expanded', 'collapsed', 'icon'];
|
|
30
|
+
var initialMode = storedMode && validModes.includes(storedMode) ? storedMode : defaultMode;
|
|
31
|
+
var mode = $.state($.proxy(initialMode));
|
|
32
|
+
var activeId = $.state($.proxy((_c = options === null || options === void 0 ? void 0 : options.defaultActiveId) !== null && _c !== void 0 ? _c : ''));
|
|
33
|
+
var mobileOpen = $.state(false);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
get mode() {
|
|
37
|
+
return $.safe_get(mode);
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
get activeId() {
|
|
41
|
+
return $.safe_get(activeId);
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
get mobileOpen() {
|
|
45
|
+
return $.safe_get(mobileOpen);
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
setMode(m) {
|
|
49
|
+
$.set(mode, m, true);
|
|
50
|
+
writeStorage(storageKey, m);
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
toggleCollapse() {
|
|
54
|
+
var next = $.safe_get(mode) === 'expanded' ? 'icon' : 'expanded';
|
|
55
|
+
|
|
56
|
+
$.set(mode, next, true);
|
|
57
|
+
writeStorage(storageKey, next);
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
setActive(id) {
|
|
61
|
+
$.set(activeId, id, true);
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
setMobileOpen(open) {
|
|
65
|
+
$.set(mobileOpen, open, true);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -80,7 +80,16 @@
|
|
|
80
80
|
getPaginationRowModel: paginated ? getPaginationRowModel() : undefined,
|
|
81
81
|
renderFallbackValue: '',
|
|
82
82
|
};
|
|
83
|
-
|
|
83
|
+
const instance = createTable(opts);
|
|
84
|
+
// createTable takes a fully-resolved state — unlike the framework adapters it does
|
|
85
|
+
// not fill in defaults, so feature state we never touch (columnPinning, columnVisibility,
|
|
86
|
+
// …) lands undefined and getHeaderGroups() dies reading columnPinning.left. Merge the
|
|
87
|
+
// instance defaults under our reactive slices, the same way the TanStack adapters do.
|
|
88
|
+
instance.setOptions((prev) => ({
|
|
89
|
+
...prev,
|
|
90
|
+
state: { ...instance.initialState, ...opts.state },
|
|
91
|
+
}));
|
|
92
|
+
return instance;
|
|
84
93
|
});
|
|
85
94
|
|
|
86
95
|
const headerGroups = $derived(table.getHeaderGroups());
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/* createDndBoard.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
4
|
+
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
5
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
6
|
+
if (ar || !(i in from)) {
|
|
7
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
8
|
+
|
|
9
|
+
ar[i] = from[i];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
|
|
17
|
+
import { extractClosestEdge, attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
18
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
19
|
+
import { announce } from './announce';
|
|
20
|
+
import { makeItemData, isItemData } from './types';
|
|
21
|
+
|
|
22
|
+
var SHADOW_KEY = '__dnd-shadow__';
|
|
23
|
+
|
|
24
|
+
export function createDndBoard(opts) {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
var edges = (_a = opts.edges) !== null && _a !== void 0 ? _a : ['top', 'bottom'];
|
|
27
|
+
var hover = (_b = opts.hover) !== null && _b !== void 0 ? _b : 'indicator';
|
|
28
|
+
var mirror = new SvelteMap();
|
|
29
|
+
var dragging = $.state(null);
|
|
30
|
+
var proposal = $.state(null);
|
|
31
|
+
var seq = new Map();
|
|
32
|
+
var inFlight = 0;
|
|
33
|
+
var seedQueued = false;
|
|
34
|
+
|
|
35
|
+
function seed() {
|
|
36
|
+
mirror.clear();
|
|
37
|
+
|
|
38
|
+
var src = opts.items();
|
|
39
|
+
var entries = src instanceof Map ? src : new Map(Object.entries(src));
|
|
40
|
+
|
|
41
|
+
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
|
|
42
|
+
var _a = entries_1[_i], id = _a[0], list = _a[1];
|
|
43
|
+
|
|
44
|
+
mirror.set(id, __spreadArray([], list, true));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
$.user_effect(function () {
|
|
49
|
+
opts.items();
|
|
50
|
+
|
|
51
|
+
if ($.safe_get(dragging) || inFlight > 0) {
|
|
52
|
+
seedQueued = true;
|
|
53
|
+
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
seed();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
function placementFrom(dropTargets) {
|
|
61
|
+
var _a;
|
|
62
|
+
var inner = dropTargets[0];
|
|
63
|
+
|
|
64
|
+
if (!inner) return null;
|
|
65
|
+
|
|
66
|
+
var d = inner.data;
|
|
67
|
+
|
|
68
|
+
if (typeof d.container !== 'string') return null;
|
|
69
|
+
|
|
70
|
+
var list = (_a = mirror.get(d.container)) !== null && _a !== void 0 ? _a : [];
|
|
71
|
+
|
|
72
|
+
if (typeof d.index !== 'number') return { container: d.container, index: list.length };
|
|
73
|
+
|
|
74
|
+
var edge = extractClosestEdge(d);
|
|
75
|
+
var after = edge === 'bottom' || edge === 'right';
|
|
76
|
+
|
|
77
|
+
return { container: d.container, index: d.index + (after ? 1 : 0) };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function syncShadow(next) {
|
|
81
|
+
var _a;
|
|
82
|
+
var _b;
|
|
83
|
+
|
|
84
|
+
for (var _i = 0, mirror_1 = mirror; _i < mirror_1.length; _i++) {
|
|
85
|
+
var _c = mirror_1[_i], cid = _c[0], list_1 = _c[1];
|
|
86
|
+
|
|
87
|
+
var idx = list_1.findIndex(function (item) {
|
|
88
|
+
return item[SHADOW_KEY];
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
if (idx !== -1) {
|
|
92
|
+
list_1.splice(idx, 1);
|
|
93
|
+
mirror.set(cid, list_1);
|
|
94
|
+
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (!next || !$.safe_get(dragging)) return;
|
|
100
|
+
|
|
101
|
+
var list = __spreadArray([], (_b = mirror.get(next.container)) !== null && _b !== void 0 ? _b : [], true);
|
|
102
|
+
|
|
103
|
+
var shadowItem = (
|
|
104
|
+
_a = {},
|
|
105
|
+
_a[SHADOW_KEY] = true,
|
|
106
|
+
_a.key = ("").concat(SHADOW_KEY, "-").concat($.safe_get(dragging).key),
|
|
107
|
+
_a
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
list.splice(Math.min(next.index, list.length), 0, shadowItem);
|
|
111
|
+
mirror.set(next.container, list);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function consider(next) {
|
|
115
|
+
if ((next === null || next === void 0 ? void 0 : next.container) === ($.safe_get(proposal) === null || $.safe_get(proposal) === void 0 ? void 0 : $.safe_get(proposal).container) && (next === null || next === void 0 ? void 0 : next.index) === ($.safe_get(proposal) === null || $.safe_get(proposal) === void 0 ? void 0 : $.safe_get(proposal).index)) return;
|
|
116
|
+
|
|
117
|
+
$.set(proposal, next, true);
|
|
118
|
+
|
|
119
|
+
if (hover === 'shadow') syncShadow(next);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function applyToMirror(move) {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
var fromList = __spreadArray([], (_a = mirror.get(move.from.container)) !== null && _a !== void 0 ? _a : [], true);
|
|
125
|
+
|
|
126
|
+
var toList = move.from.container === move.to.container
|
|
127
|
+
? fromList
|
|
128
|
+
: __spreadArray([], (_b = mirror.get(move.to.container)) !== null && _b !== void 0 ? _b : [], true);
|
|
129
|
+
|
|
130
|
+
var srcIdx = fromList.findIndex(function (it) {
|
|
131
|
+
return opts.key(it) === opts.key(move.item);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
if (srcIdx === -1) return;
|
|
135
|
+
|
|
136
|
+
fromList.splice(srcIdx, 1);
|
|
137
|
+
|
|
138
|
+
var destIdx = move.to.index;
|
|
139
|
+
|
|
140
|
+
if (move.from.container === move.to.container && move.to.index > move.from.index) {
|
|
141
|
+
destIdx = Math.max(0, destIdx - 1);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
toList.splice(Math.min(destIdx, toList.length), 0, move.item);
|
|
145
|
+
mirror.set(move.from.container, fromList);
|
|
146
|
+
|
|
147
|
+
if (move.from.container !== move.to.container) {
|
|
148
|
+
mirror.set(move.to.container, toList);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function rollback(move) {
|
|
153
|
+
var _a;
|
|
154
|
+
|
|
155
|
+
for (var _i = 0, mirror_2 = mirror; _i < mirror_2.length; _i++) {
|
|
156
|
+
var _b = mirror_2[_i], cid = _b[0], list = _b[1];
|
|
157
|
+
|
|
158
|
+
var idx = list.findIndex(function (it) {
|
|
159
|
+
return opts.key(it) === opts.key(move.item);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (idx !== -1) {
|
|
163
|
+
list.splice(idx, 1);
|
|
164
|
+
mirror.set(cid, list);
|
|
165
|
+
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
var fromList = __spreadArray([], (_a = mirror.get(move.from.container)) !== null && _a !== void 0 ? _a : [], true);
|
|
171
|
+
|
|
172
|
+
fromList.splice(Math.min(move.from.index, fromList.length), 0, move.item);
|
|
173
|
+
mirror.set(move.from.container, fromList);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function finalize(dropped) {
|
|
177
|
+
var _a;
|
|
178
|
+
var drag = $.safe_get(dragging);
|
|
179
|
+
var to = dropped ? $.safe_get(proposal) : null;
|
|
180
|
+
|
|
181
|
+
$.set(dragging, null);
|
|
182
|
+
consider(null);
|
|
183
|
+
|
|
184
|
+
if (!drag) return;
|
|
185
|
+
|
|
186
|
+
if (!to || to.container === drag.from.container && to.index === drag.from.index) {
|
|
187
|
+
if (seedQueued && inFlight === 0) {
|
|
188
|
+
seedQueued = false;
|
|
189
|
+
seed();
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
var move = { item: drag.item, from: drag.from, to };
|
|
196
|
+
|
|
197
|
+
applyToMirror(move);
|
|
198
|
+
|
|
199
|
+
if (opts.announce) announce(opts.announce(move));
|
|
200
|
+
|
|
201
|
+
var token = ((_a = seq.get(drag.key)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
202
|
+
|
|
203
|
+
seq.set(drag.key, token);
|
|
204
|
+
inFlight++;
|
|
205
|
+
|
|
206
|
+
opts.commit(move).catch(function (error) {
|
|
207
|
+
var _a;
|
|
208
|
+
|
|
209
|
+
if (seq.get(drag.key) === token) rollback(move);
|
|
210
|
+
|
|
211
|
+
(_a = opts.onError) === null || _a === void 0 ? void 0 : _a.call(opts, error, move);
|
|
212
|
+
}).finally(function () {
|
|
213
|
+
inFlight--;
|
|
214
|
+
|
|
215
|
+
if (inFlight === 0 && seedQueued && !$.safe_get(dragging)) {
|
|
216
|
+
seedQueued = false;
|
|
217
|
+
seed();
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
$.user_effect(function () {
|
|
223
|
+
return monitorForElements({
|
|
224
|
+
canMonitor(_a) {
|
|
225
|
+
var source = _a.source;
|
|
226
|
+
|
|
227
|
+
return isItemData(source.data, opts.type);
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
onDragStart(_a) {
|
|
231
|
+
var source = _a.source;
|
|
232
|
+
var d = source.data;
|
|
233
|
+
|
|
234
|
+
$.set(
|
|
235
|
+
dragging,
|
|
236
|
+
{
|
|
237
|
+
key: d.key,
|
|
238
|
+
item: d.item,
|
|
239
|
+
from: { container: d.container, index: d.index }
|
|
240
|
+
},
|
|
241
|
+
true
|
|
242
|
+
);
|
|
243
|
+
},
|
|
244
|
+
|
|
245
|
+
onDropTargetChange(_a) {
|
|
246
|
+
var location = _a.location;
|
|
247
|
+
|
|
248
|
+
consider(placementFrom(location.current.dropTargets));
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
onDrag(_a) {
|
|
252
|
+
var location = _a.location;
|
|
253
|
+
|
|
254
|
+
consider(placementFrom(location.current.dropTargets));
|
|
255
|
+
},
|
|
256
|
+
|
|
257
|
+
onDrop(_a) {
|
|
258
|
+
var location = _a.location;
|
|
259
|
+
|
|
260
|
+
finalize(location.current.dropTargets.length > 0);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
return {
|
|
266
|
+
get(container) {
|
|
267
|
+
var _a;
|
|
268
|
+
|
|
269
|
+
return (_a = mirror.get(container)) !== null && _a !== void 0 ? _a : [];
|
|
270
|
+
},
|
|
271
|
+
|
|
272
|
+
containers() {
|
|
273
|
+
return __spreadArray([], mirror.keys(), true);
|
|
274
|
+
},
|
|
275
|
+
|
|
276
|
+
get dragging() {
|
|
277
|
+
return $.safe_get(dragging);
|
|
278
|
+
},
|
|
279
|
+
|
|
280
|
+
get proposal() {
|
|
281
|
+
return $.safe_get(proposal);
|
|
282
|
+
},
|
|
283
|
+
|
|
284
|
+
isSource(item) {
|
|
285
|
+
return ($.safe_get(dragging) === null || $.safe_get(dragging) === void 0 ? void 0 : $.safe_get(dragging).key) === opts.key(item);
|
|
286
|
+
},
|
|
287
|
+
|
|
288
|
+
isShadow(item) {
|
|
289
|
+
return !!item[SHADOW_KEY];
|
|
290
|
+
},
|
|
291
|
+
|
|
292
|
+
item(item, container, index) {
|
|
293
|
+
return {
|
|
294
|
+
data() {
|
|
295
|
+
return makeItemData({ type: opts.type, key: opts.key(item), item, container, index });
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
},
|
|
299
|
+
|
|
300
|
+
itemTarget(container, index) {
|
|
301
|
+
return {
|
|
302
|
+
data(feedback) {
|
|
303
|
+
return attachClosestEdge({ type: ("").concat(opts.type, "-target"), container, index }, {
|
|
304
|
+
input: feedback.input,
|
|
305
|
+
element: feedback.element,
|
|
306
|
+
allowedEdges: edges
|
|
307
|
+
});
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
accepts(d) {
|
|
311
|
+
return isItemData(d, opts.type);
|
|
312
|
+
},
|
|
313
|
+
sticky: true
|
|
314
|
+
};
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
containerTarget(container) {
|
|
318
|
+
return {
|
|
319
|
+
data() {
|
|
320
|
+
return { type: ("").concat(opts.type, "-target"), container };
|
|
321
|
+
},
|
|
322
|
+
|
|
323
|
+
accepts(d) {
|
|
324
|
+
return isItemData(d, opts.type);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
}
|
package/dist/dnd/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { draggable } from './draggable';
|
|
|
2
2
|
export type { DraggableParams } from './draggable';
|
|
3
3
|
export { dropTarget } from './dropTarget';
|
|
4
4
|
export type { DropTargetParams } from './dropTarget';
|
|
5
|
-
export { createDndBoard } from './createDndBoard
|
|
6
|
-
export type { BoardMove, DndBoardOptions } from './createDndBoard
|
|
5
|
+
export { createDndBoard } from './createDndBoard';
|
|
6
|
+
export type { BoardMove, DndBoardOptions } from './createDndBoard';
|
|
7
7
|
export { default as DropIndicator } from './DropIndicator.svelte';
|
|
8
8
|
export { autoScroll } from './autoScroll';
|
|
9
9
|
export type { AutoScrollParams } from './autoScroll';
|
package/dist/dnd/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { draggable } from './draggable';
|
|
2
2
|
export { dropTarget } from './dropTarget';
|
|
3
|
-
export { createDndBoard } from './createDndBoard
|
|
3
|
+
export { createDndBoard } from './createDndBoard';
|
|
4
4
|
export { default as DropIndicator } from './DropIndicator.svelte';
|
|
5
5
|
export { autoScroll } from './autoScroll';
|
|
6
6
|
export { announce, cleanupAnnouncements } from './announce';
|
package/dist/index.d.ts
CHANGED
|
@@ -15,11 +15,11 @@ export { default as UserAvatar } from './components/UserAvatar.svelte';
|
|
|
15
15
|
export { default as SidebarUserFooter } from './components/SidebarUserFooter.svelte';
|
|
16
16
|
export { default as TaskTypeIcon } from './components/TaskTypeIcon.svelte';
|
|
17
17
|
export { default as ConfirmDialog } from './components/ConfirmDialog.svelte';
|
|
18
|
-
export { showConfirm, confirmDialog, cancelDialog, getPending } from './stores/confirmDialog
|
|
19
|
-
export type { ConfirmOptions } from './stores/confirmDialog
|
|
18
|
+
export { showConfirm, confirmDialog, cancelDialog, getPending } from './stores/confirmDialog';
|
|
19
|
+
export type { ConfirmOptions } from './stores/confirmDialog';
|
|
20
20
|
export { default as InputDialog } from './components/InputDialog.svelte';
|
|
21
|
-
export { showInput, submitInput, cancelInput, getPendingInput } from './stores/inputDialog
|
|
22
|
-
export type { InputOptions } from './stores/inputDialog
|
|
21
|
+
export { showInput, submitInput, cancelInput, getPendingInput } from './stores/inputDialog';
|
|
22
|
+
export type { InputOptions } from './stores/inputDialog';
|
|
23
23
|
export { default as SearchDropdown } from './components/SearchDropdown.svelte';
|
|
24
24
|
export { default as FilterDropdown } from './components/FilterDropdown.svelte';
|
|
25
25
|
export { default as ContextMenu } from './components/ContextMenu.svelte';
|
|
@@ -158,16 +158,16 @@ export { play as playSound, registerSound, isSoundEnabled, setSoundEnabled } fro
|
|
|
158
158
|
export { splitText } from './utils/splitText';
|
|
159
159
|
export type { SplitBy, SplitTextOptions, SplitTextResult } from './utils/splitText';
|
|
160
160
|
export { default as ToastHost } from './components/toast/ToastHost.svelte';
|
|
161
|
-
export { showToast, dismissToast, getToasts } from './stores/toast
|
|
162
|
-
export type { Toast, ToastType, ToastOptions, DismissHandle } from './stores/toast
|
|
161
|
+
export { showToast, dismissToast, getToasts } from './stores/toast';
|
|
162
|
+
export type { Toast, ToastType, ToastOptions, DismissHandle } from './stores/toast';
|
|
163
163
|
export { default as Skeleton } from './components/Skeleton.svelte';
|
|
164
164
|
export { default as ProgressBar } from './components/progress/ProgressBar.svelte';
|
|
165
165
|
export { default as ProgressRing } from './components/progress/ProgressRing.svelte';
|
|
166
166
|
export { default as Steps } from './components/progress/Steps.svelte';
|
|
167
167
|
export { default as Tabs } from './components/Tabs.svelte';
|
|
168
168
|
export { default as CommandPalette } from './components/CommandPalette.svelte';
|
|
169
|
-
export { commandPalette } from './stores/commandPalette
|
|
170
|
-
export type { CommandItem } from './stores/commandPalette
|
|
169
|
+
export { commandPalette } from './stores/commandPalette';
|
|
170
|
+
export type { CommandItem } from './stores/commandPalette';
|
|
171
171
|
export { default as AnimatedNumber } from './components/AnimatedNumber.svelte';
|
|
172
172
|
export { default as CopyButton } from './components/CopyButton.svelte';
|
|
173
173
|
export { default as HoldToConfirm } from './components/HoldToConfirm.svelte';
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,9 @@ export { default as SidebarUserFooter } from './components/SidebarUserFooter.sve
|
|
|
14
14
|
export { default as TaskTypeIcon } from './components/TaskTypeIcon.svelte';
|
|
15
15
|
// Components — from JAT IDE
|
|
16
16
|
export { default as ConfirmDialog } from './components/ConfirmDialog.svelte';
|
|
17
|
-
export { showConfirm, confirmDialog, cancelDialog, getPending } from './stores/confirmDialog
|
|
17
|
+
export { showConfirm, confirmDialog, cancelDialog, getPending } from './stores/confirmDialog';
|
|
18
18
|
export { default as InputDialog } from './components/InputDialog.svelte';
|
|
19
|
-
export { showInput, submitInput, cancelInput, getPendingInput } from './stores/inputDialog
|
|
19
|
+
export { showInput, submitInput, cancelInput, getPendingInput } from './stores/inputDialog';
|
|
20
20
|
export { default as SearchDropdown } from './components/SearchDropdown.svelte';
|
|
21
21
|
export { default as FilterDropdown } from './components/FilterDropdown.svelte';
|
|
22
22
|
export { default as ContextMenu } from './components/ContextMenu.svelte';
|
|
@@ -165,7 +165,7 @@ export { play as playSound, registerSound, isSoundEnabled, setSoundEnabled } fro
|
|
|
165
165
|
export { splitText } from './utils/splitText';
|
|
166
166
|
// Toast system
|
|
167
167
|
export { default as ToastHost } from './components/toast/ToastHost.svelte';
|
|
168
|
-
export { showToast, dismissToast, getToasts } from './stores/toast
|
|
168
|
+
export { showToast, dismissToast, getToasts } from './stores/toast';
|
|
169
169
|
// Loading & progress family
|
|
170
170
|
export { default as Skeleton } from './components/Skeleton.svelte';
|
|
171
171
|
export { default as ProgressBar } from './components/progress/ProgressBar.svelte';
|
|
@@ -174,7 +174,7 @@ export { default as Steps } from './components/progress/Steps.svelte';
|
|
|
174
174
|
// Navigation & overlays
|
|
175
175
|
export { default as Tabs } from './components/Tabs.svelte';
|
|
176
176
|
export { default as CommandPalette } from './components/CommandPalette.svelte';
|
|
177
|
-
export { commandPalette } from './stores/commandPalette
|
|
177
|
+
export { commandPalette } from './stores/commandPalette';
|
|
178
178
|
// Micro primitives
|
|
179
179
|
export { default as AnimatedNumber } from './components/AnimatedNumber.svelte';
|
|
180
180
|
export { default as CopyButton } from './components/CopyButton.svelte';
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* commandPalette.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
4
|
+
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
5
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
6
|
+
if (ar || !(i in from)) {
|
|
7
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
8
|
+
|
|
9
|
+
ar[i] = from[i];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var RECENT_KEY = 'jatui:cmd-palette:recent';
|
|
17
|
+
var MAX_RECENT = 8;
|
|
18
|
+
|
|
19
|
+
function createCommandPaletteStore() {
|
|
20
|
+
var open = $.state(false);
|
|
21
|
+
var groups = $.state($.proxy([]));
|
|
22
|
+
var recentIds = $.state($.proxy([]));
|
|
23
|
+
|
|
24
|
+
// Load recent from localStorage on first access
|
|
25
|
+
function loadRecent() {
|
|
26
|
+
if (typeof localStorage === 'undefined') return;
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
var raw = localStorage.getItem(RECENT_KEY);
|
|
30
|
+
|
|
31
|
+
$.set(recentIds, raw ? JSON.parse(raw) : [], true);
|
|
32
|
+
} catch(_a) {
|
|
33
|
+
$.set(recentIds, [], true);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function saveRecent(ids) {
|
|
38
|
+
if (typeof localStorage === 'undefined') return;
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
localStorage.setItem(RECENT_KEY, JSON.stringify(ids));
|
|
42
|
+
} catch(_a) {
|
|
43
|
+
// ignore storage errors
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function recordRecent(id) {
|
|
48
|
+
var updated = __spreadArray(
|
|
49
|
+
[id],
|
|
50
|
+
$.safe_get(recentIds).filter(function (r) {
|
|
51
|
+
return r !== id;
|
|
52
|
+
}),
|
|
53
|
+
true
|
|
54
|
+
).slice(0, MAX_RECENT);
|
|
55
|
+
|
|
56
|
+
$.set(recentIds, updated, true);
|
|
57
|
+
saveRecent(updated);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
get open() {
|
|
62
|
+
return $.safe_get(open);
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
get groups() {
|
|
66
|
+
return $.safe_get(groups);
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
get recentIds() {
|
|
70
|
+
return $.safe_get(recentIds);
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
registerCommands(groupLabel, items) {
|
|
74
|
+
var existing = $.safe_get(groups).find(function (g) {
|
|
75
|
+
return g.label === groupLabel;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (existing) {
|
|
79
|
+
existing.items = items;
|
|
80
|
+
} else {
|
|
81
|
+
$.set(groups, __spreadArray(__spreadArray([], $.safe_get(groups), true), [{ label: groupLabel, items }], false), true);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
openPalette() {
|
|
86
|
+
loadRecent();
|
|
87
|
+
$.set(open, true);
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
closePalette() {
|
|
91
|
+
$.set(open, false);
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
runCommand(item) {
|
|
95
|
+
recordRecent(item.id);
|
|
96
|
+
$.set(open, false);
|
|
97
|
+
item.action();
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
getRecentItems() {
|
|
101
|
+
var allItems = $.safe_get(groups).flatMap(function (g) {
|
|
102
|
+
return g.items;
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
return $.safe_get(recentIds).map(function (id) {
|
|
106
|
+
return allItems.find(function (i) {
|
|
107
|
+
return i.id === id;
|
|
108
|
+
});
|
|
109
|
+
}).filter(function (i) {
|
|
110
|
+
return !!i;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export var commandPalette = createCommandPaletteStore();
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* confirmDialog.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
4
|
+
var pending = $.state(null);
|
|
5
|
+
|
|
6
|
+
export function getPending() {
|
|
7
|
+
return $.safe_get(pending);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function showConfirm(options) {
|
|
11
|
+
// If a dialog is already open, cancel it first.
|
|
12
|
+
if ($.safe_get(pending)) {
|
|
13
|
+
$.safe_get(pending).resolve(false);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return new Promise(function (resolve) {
|
|
17
|
+
$.set(pending, { options, resolve }, true);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function confirmDialog() {
|
|
22
|
+
if (!$.safe_get(pending)) return;
|
|
23
|
+
|
|
24
|
+
var p = $.safe_get(pending);
|
|
25
|
+
|
|
26
|
+
$.set(pending, null);
|
|
27
|
+
p.resolve(true);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function cancelDialog() {
|
|
31
|
+
if (!$.safe_get(pending)) return;
|
|
32
|
+
|
|
33
|
+
var p = $.safe_get(pending);
|
|
34
|
+
|
|
35
|
+
$.set(pending, null);
|
|
36
|
+
p.resolve(false);
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* inputDialog.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
4
|
+
var pending = $.state(null);
|
|
5
|
+
|
|
6
|
+
export function getPendingInput() {
|
|
7
|
+
return $.safe_get(pending);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function showInput(options) {
|
|
11
|
+
// If a dialog is already open, cancel it first.
|
|
12
|
+
if ($.safe_get(pending)) {
|
|
13
|
+
$.safe_get(pending).resolve(null);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return new Promise(function (resolve) {
|
|
17
|
+
$.set(pending, { options, resolve }, true);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function submitInput(value) {
|
|
22
|
+
if (!$.safe_get(pending)) return;
|
|
23
|
+
|
|
24
|
+
var p = $.safe_get(pending);
|
|
25
|
+
|
|
26
|
+
$.set(pending, null);
|
|
27
|
+
p.resolve(value);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function cancelInput() {
|
|
31
|
+
if (!$.safe_get(pending)) return;
|
|
32
|
+
|
|
33
|
+
var p = $.safe_get(pending);
|
|
34
|
+
|
|
35
|
+
$.set(pending, null);
|
|
36
|
+
p.resolve(null);
|
|
37
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* toast.svelte.js generated by Svelte v5.53.11 */
|
|
2
|
+
import * as $ from 'svelte/internal/client';
|
|
3
|
+
|
|
4
|
+
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
5
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
6
|
+
if (ar || !(i in from)) {
|
|
7
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
8
|
+
|
|
9
|
+
ar[i] = from[i];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var nextId = 0;
|
|
17
|
+
var toasts = $.state($.proxy([]));
|
|
18
|
+
|
|
19
|
+
export function getToasts() {
|
|
20
|
+
return $.safe_get(toasts);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function showToast(options) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
var id = ++nextId;
|
|
26
|
+
|
|
27
|
+
var toast = {
|
|
28
|
+
id,
|
|
29
|
+
type: (_a = options.type) !== null && _a !== void 0 ? _a : 'info',
|
|
30
|
+
message: options.message,
|
|
31
|
+
action: options.action,
|
|
32
|
+
durationMs: (_b = options.durationMs) !== null && _b !== void 0 ? _b : 5000,
|
|
33
|
+
onUndo: options.onUndo
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
$.set(toasts, __spreadArray(__spreadArray([], $.safe_get(toasts), true), [toast], false), true);
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
dismiss() {
|
|
40
|
+
return dismissToast(id);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function dismissToast(id) {
|
|
46
|
+
$.set(
|
|
47
|
+
toasts,
|
|
48
|
+
$.safe_get(toasts).filter(function (t) {
|
|
49
|
+
return t.id !== id;
|
|
50
|
+
}),
|
|
51
|
+
true
|
|
52
|
+
);
|
|
53
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@joewinke/jatui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared Svelte 5 component library for JAT projects",
|
|
6
6
|
"type": "module",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"build": "vite build",
|
|
68
68
|
"build:site": "npm run package && vite build",
|
|
69
69
|
"preview": "vite preview",
|
|
70
|
-
"package": "svelte-package --input src/lib --output dist",
|
|
70
|
+
"package": "svelte-package --input src/lib --output dist && node scripts/compile-rune-modules.mjs",
|
|
71
71
|
"check:demos": "node scripts/check-demo-coverage.mjs",
|
|
72
72
|
"guard": "node scripts/check-demo-coverage.mjs",
|
|
73
73
|
"prepublishOnly": "npm run package"
|
|
@@ -1,217 +0,0 @@
|
|
|
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
|
-
};
|
|
10
|
-
import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
|
|
11
|
-
import { extractClosestEdge, attachClosestEdge, } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
12
|
-
import { SvelteMap } from 'svelte/reactivity';
|
|
13
|
-
import { announce } from './announce';
|
|
14
|
-
import { makeItemData, isItemData, } from './types';
|
|
15
|
-
var SHADOW_KEY = '__dnd-shadow__';
|
|
16
|
-
export function createDndBoard(opts) {
|
|
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;
|
|
26
|
-
function seed() {
|
|
27
|
-
mirror.clear();
|
|
28
|
-
var src = opts.items();
|
|
29
|
-
var entries = src instanceof Map
|
|
30
|
-
? src
|
|
31
|
-
: new Map(Object.entries(src));
|
|
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
|
-
}
|
|
36
|
-
}
|
|
37
|
-
$effect(function () {
|
|
38
|
-
opts.items();
|
|
39
|
-
if (dragging || inFlight > 0) {
|
|
40
|
-
seedQueued = true;
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
seed();
|
|
44
|
-
});
|
|
45
|
-
function placementFrom(dropTargets) {
|
|
46
|
-
var _a;
|
|
47
|
-
var inner = dropTargets[0];
|
|
48
|
-
if (!inner)
|
|
49
|
-
return null;
|
|
50
|
-
var d = inner.data;
|
|
51
|
-
if (typeof d.container !== 'string')
|
|
52
|
-
return null;
|
|
53
|
-
var list = (_a = mirror.get(d.container)) !== null && _a !== void 0 ? _a : [];
|
|
54
|
-
if (typeof d.index !== 'number')
|
|
55
|
-
return { container: d.container, index: list.length };
|
|
56
|
-
var edge = extractClosestEdge(d);
|
|
57
|
-
var after = edge === 'bottom' || edge === 'right';
|
|
58
|
-
return { container: d.container, index: d.index + (after ? 1 : 0) };
|
|
59
|
-
}
|
|
60
|
-
function syncShadow(next) {
|
|
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]; });
|
|
66
|
-
if (idx !== -1) {
|
|
67
|
-
list_1.splice(idx, 1);
|
|
68
|
-
mirror.set(cid, list_1);
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
if (!next || !dragging)
|
|
73
|
-
return;
|
|
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);
|
|
76
|
-
list.splice(Math.min(next.index, list.length), 0, shadowItem);
|
|
77
|
-
mirror.set(next.container, list);
|
|
78
|
-
}
|
|
79
|
-
function consider(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))
|
|
81
|
-
return;
|
|
82
|
-
proposal = next;
|
|
83
|
-
if (hover === 'shadow')
|
|
84
|
-
syncShadow(next);
|
|
85
|
-
}
|
|
86
|
-
function applyToMirror(move) {
|
|
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
|
|
90
|
-
? fromList
|
|
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); });
|
|
93
|
-
if (srcIdx === -1)
|
|
94
|
-
return;
|
|
95
|
-
fromList.splice(srcIdx, 1);
|
|
96
|
-
var destIdx = move.to.index;
|
|
97
|
-
if (move.from.container === move.to.container && move.to.index > move.from.index) {
|
|
98
|
-
destIdx = Math.max(0, destIdx - 1);
|
|
99
|
-
}
|
|
100
|
-
toList.splice(Math.min(destIdx, toList.length), 0, move.item);
|
|
101
|
-
mirror.set(move.from.container, fromList);
|
|
102
|
-
if (move.from.container !== move.to.container) {
|
|
103
|
-
mirror.set(move.to.container, toList);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function rollback(move) {
|
|
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); });
|
|
111
|
-
if (idx !== -1) {
|
|
112
|
-
list.splice(idx, 1);
|
|
113
|
-
mirror.set(cid, list);
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
var fromList = __spreadArray([], ((_a = mirror.get(move.from.container)) !== null && _a !== void 0 ? _a : []), true);
|
|
118
|
-
fromList.splice(Math.min(move.from.index, fromList.length), 0, move.item);
|
|
119
|
-
mirror.set(move.from.container, fromList);
|
|
120
|
-
}
|
|
121
|
-
function finalize(dropped) {
|
|
122
|
-
var _a;
|
|
123
|
-
var drag = dragging;
|
|
124
|
-
var to = dropped ? proposal : null;
|
|
125
|
-
dragging = null;
|
|
126
|
-
consider(null);
|
|
127
|
-
if (!drag)
|
|
128
|
-
return;
|
|
129
|
-
if (!to ||
|
|
130
|
-
(to.container === drag.from.container && to.index === drag.from.index)) {
|
|
131
|
-
if (seedQueued && inFlight === 0) {
|
|
132
|
-
seedQueued = false;
|
|
133
|
-
seed();
|
|
134
|
-
}
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
var move = { item: drag.item, from: drag.from, to: to };
|
|
138
|
-
applyToMirror(move);
|
|
139
|
-
if (opts.announce)
|
|
140
|
-
announce(opts.announce(move));
|
|
141
|
-
var token = ((_a = seq.get(drag.key)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
142
|
-
seq.set(drag.key, token);
|
|
143
|
-
inFlight++;
|
|
144
|
-
opts
|
|
145
|
-
.commit(move)
|
|
146
|
-
.catch(function (error) {
|
|
147
|
-
var _a;
|
|
148
|
-
if (seq.get(drag.key) === token)
|
|
149
|
-
rollback(move);
|
|
150
|
-
(_a = opts.onError) === null || _a === void 0 ? void 0 : _a.call(opts, error, move);
|
|
151
|
-
})
|
|
152
|
-
.finally(function () {
|
|
153
|
-
inFlight--;
|
|
154
|
-
if (inFlight === 0 && seedQueued && !dragging) {
|
|
155
|
-
seedQueued = false;
|
|
156
|
-
seed();
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
}
|
|
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
|
-
});
|
|
189
|
-
return {
|
|
190
|
-
get: function (container) { var _a; return (_a = mirror.get(container)) !== null && _a !== void 0 ? _a : []; },
|
|
191
|
-
containers: function () { return __spreadArray([], mirror.keys(), true); },
|
|
192
|
-
get dragging() {
|
|
193
|
-
return dragging;
|
|
194
|
-
},
|
|
195
|
-
get proposal() {
|
|
196
|
-
return proposal;
|
|
197
|
-
},
|
|
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); },
|
|
210
|
-
sticky: true,
|
|
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
|
-
}); },
|
|
216
|
-
};
|
|
217
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
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
|
-
};
|
|
10
|
-
var RECENT_KEY = 'jatui:cmd-palette:recent';
|
|
11
|
-
var MAX_RECENT = 8;
|
|
12
|
-
function createCommandPaletteStore() {
|
|
13
|
-
var open = $state(false);
|
|
14
|
-
var groups = $state([]);
|
|
15
|
-
var recentIds = $state([]);
|
|
16
|
-
// Load recent from localStorage on first access
|
|
17
|
-
function loadRecent() {
|
|
18
|
-
if (typeof localStorage === 'undefined')
|
|
19
|
-
return;
|
|
20
|
-
try {
|
|
21
|
-
var raw = localStorage.getItem(RECENT_KEY);
|
|
22
|
-
recentIds = raw ? JSON.parse(raw) : [];
|
|
23
|
-
}
|
|
24
|
-
catch (_a) {
|
|
25
|
-
recentIds = [];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function saveRecent(ids) {
|
|
29
|
-
if (typeof localStorage === 'undefined')
|
|
30
|
-
return;
|
|
31
|
-
try {
|
|
32
|
-
localStorage.setItem(RECENT_KEY, JSON.stringify(ids));
|
|
33
|
-
}
|
|
34
|
-
catch (_a) {
|
|
35
|
-
// ignore storage errors
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function recordRecent(id) {
|
|
39
|
-
var updated = __spreadArray([id], recentIds.filter(function (r) { return r !== id; }), true).slice(0, MAX_RECENT);
|
|
40
|
-
recentIds = updated;
|
|
41
|
-
saveRecent(updated);
|
|
42
|
-
}
|
|
43
|
-
return {
|
|
44
|
-
get open() {
|
|
45
|
-
return open;
|
|
46
|
-
},
|
|
47
|
-
get groups() {
|
|
48
|
-
return groups;
|
|
49
|
-
},
|
|
50
|
-
get recentIds() {
|
|
51
|
-
return recentIds;
|
|
52
|
-
},
|
|
53
|
-
registerCommands: function (groupLabel, items) {
|
|
54
|
-
var existing = groups.find(function (g) { return g.label === groupLabel; });
|
|
55
|
-
if (existing) {
|
|
56
|
-
existing.items = items;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
groups = __spreadArray(__spreadArray([], groups, true), [{ label: groupLabel, items: items }], false);
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
openPalette: function () {
|
|
63
|
-
loadRecent();
|
|
64
|
-
open = true;
|
|
65
|
-
},
|
|
66
|
-
closePalette: function () {
|
|
67
|
-
open = false;
|
|
68
|
-
},
|
|
69
|
-
runCommand: function (item) {
|
|
70
|
-
recordRecent(item.id);
|
|
71
|
-
open = false;
|
|
72
|
-
item.action();
|
|
73
|
-
},
|
|
74
|
-
getRecentItems: function () {
|
|
75
|
-
var allItems = groups.flatMap(function (g) { return g.items; });
|
|
76
|
-
return recentIds
|
|
77
|
-
.map(function (id) { return allItems.find(function (i) { return i.id === id; }); })
|
|
78
|
-
.filter(function (i) { return !!i; });
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
export var commandPalette = createCommandPaletteStore();
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global promise-based confirm dialog.
|
|
3
|
-
* Usage: const ok = await showConfirm({ title: '...', body: '...' })
|
|
4
|
-
*/
|
|
5
|
-
var pending = $state(null);
|
|
6
|
-
export function getPending() {
|
|
7
|
-
return pending;
|
|
8
|
-
}
|
|
9
|
-
export function showConfirm(options) {
|
|
10
|
-
// If a dialog is already open, cancel it first.
|
|
11
|
-
if (pending) {
|
|
12
|
-
pending.resolve(false);
|
|
13
|
-
}
|
|
14
|
-
return new Promise(function (resolve) {
|
|
15
|
-
pending = { options: options, resolve: resolve };
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
export function confirmDialog() {
|
|
19
|
-
if (!pending)
|
|
20
|
-
return;
|
|
21
|
-
var p = pending;
|
|
22
|
-
pending = null;
|
|
23
|
-
p.resolve(true);
|
|
24
|
-
}
|
|
25
|
-
export function cancelDialog() {
|
|
26
|
-
if (!pending)
|
|
27
|
-
return;
|
|
28
|
-
var p = pending;
|
|
29
|
-
pending = null;
|
|
30
|
-
p.resolve(false);
|
|
31
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global promise-based input dialog.
|
|
3
|
-
* Usage: const value = await showInput({ title: '...', placeholder: '...' })
|
|
4
|
-
* Returns the typed string if confirmed, null if cancelled.
|
|
5
|
-
*/
|
|
6
|
-
var pending = $state(null);
|
|
7
|
-
export function getPendingInput() {
|
|
8
|
-
return pending;
|
|
9
|
-
}
|
|
10
|
-
export function showInput(options) {
|
|
11
|
-
// If a dialog is already open, cancel it first.
|
|
12
|
-
if (pending) {
|
|
13
|
-
pending.resolve(null);
|
|
14
|
-
}
|
|
15
|
-
return new Promise(function (resolve) {
|
|
16
|
-
pending = { options: options, resolve: resolve };
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
export function submitInput(value) {
|
|
20
|
-
if (!pending)
|
|
21
|
-
return;
|
|
22
|
-
var p = pending;
|
|
23
|
-
pending = null;
|
|
24
|
-
p.resolve(value);
|
|
25
|
-
}
|
|
26
|
-
export function cancelInput() {
|
|
27
|
-
if (!pending)
|
|
28
|
-
return;
|
|
29
|
-
var p = pending;
|
|
30
|
-
pending = null;
|
|
31
|
-
p.resolve(null);
|
|
32
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
-
};
|
|
10
|
-
var nextId = 0;
|
|
11
|
-
var toasts = $state([]);
|
|
12
|
-
export function getToasts() {
|
|
13
|
-
return toasts;
|
|
14
|
-
}
|
|
15
|
-
export function showToast(options) {
|
|
16
|
-
var _a, _b;
|
|
17
|
-
var id = ++nextId;
|
|
18
|
-
var toast = {
|
|
19
|
-
id: id,
|
|
20
|
-
type: (_a = options.type) !== null && _a !== void 0 ? _a : 'info',
|
|
21
|
-
message: options.message,
|
|
22
|
-
action: options.action,
|
|
23
|
-
durationMs: (_b = options.durationMs) !== null && _b !== void 0 ? _b : 5000,
|
|
24
|
-
onUndo: options.onUndo
|
|
25
|
-
};
|
|
26
|
-
toasts = __spreadArray(__spreadArray([], toasts, true), [toast], false);
|
|
27
|
-
return {
|
|
28
|
-
dismiss: function () { return dismissToast(id); }
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
export function dismissToast(id) {
|
|
32
|
-
toasts = toasts.filter(function (t) { return t.id !== id; });
|
|
33
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|