@adecore/ui 0.31.12 → 0.32.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/dist/AccentSwatches.js +290 -13
- package/dist/Banner.js +90 -9
- package/dist/Button.js +114 -22
- package/dist/ButtonGroup.js +62 -8
- package/dist/Checkbox.js +73 -4
- package/dist/ChoiceCards.js +205 -11
- package/dist/CloseButton.js +87 -7
- package/dist/ColorSwatch.js +132 -15
- package/dist/ColorWheelPicker.js +305 -71
- package/dist/ColumnResizeHandle.js +43 -8
- package/dist/DisabledReason.js +27 -8
- package/dist/DockShell.js +144 -37
- package/dist/EmptyState.js +95 -6
- package/dist/ErrorBoundary.js +254 -31
- package/dist/Field.js +349 -31
- package/dist/FileIcon.js +67 -6
- package/dist/Icon.js +38 -6
- package/dist/IconButton.js +176 -20
- package/dist/IconPicker.js +344 -73
- package/dist/Input.js +233 -14
- package/dist/Kbd.js +150 -10
- package/dist/LazyBoundary.js +14 -5
- package/dist/ListRow.js +75 -15
- package/dist/Meter.js +108 -5
- package/dist/MiddleTruncate.js +126 -45
- package/dist/PanelEmpty.js +64 -5
- package/dist/PanelHeader.js +95 -13
- package/dist/Pill.js +114 -19
- package/dist/ProjectSwitcher.js +225 -12
- package/dist/PromptDialog.js +352 -37
- package/dist/SectionLabel.js +62 -8
- package/dist/SegmentBar.js +197 -36
- package/dist/Segmented.js +130 -23
- package/dist/Select.js +310 -19
- package/dist/SelectSearch.js +344 -29
- package/dist/Separator.js +35 -4
- package/dist/ShortcutHints.js +146 -76
- package/dist/Skeleton.js +31 -4
- package/dist/Slider.js +172 -10
- package/dist/SlidingColumn.js +194 -34
- package/dist/Spinner.js +100 -3
- package/dist/Stepper.js +232 -11
- package/dist/Surface.js +62 -8
- package/dist/Switch.js +60 -6
- package/dist/TextMenu.js +212 -17
- package/dist/Tile.js +149 -5
- package/dist/Toasts.js +391 -33
- package/dist/Tooltip.js +153 -16
- package/dist/UIProvider.js +62 -15
- package/dist/Waveform.js +362 -93
- package/dist/Wipe.js +259 -34
- package/dist/ZoomControls.js +356 -14
- package/dist/class-name.js +1 -1
- package/dist/clipboard.js +15 -17
- package/dist/context-menu/index.parts.js +1 -1
- package/dist/dialog/index.parts.js +1 -1
- package/dist/dialog/parts.js +378 -29
- package/dist/dialog-layer.js +51 -18
- package/dist/error-boundary.js +19 -19
- package/dist/error-message.js +1 -1
- package/dist/field-context.js +7 -5
- package/dist/file-icon.js +23 -21
- package/dist/file-tree/helpers.js +133 -119
- package/dist/file-tree/index.parts.js +3 -3
- package/dist/file-tree/parts.js +418 -127
- package/dist/file-tree/style.js +1 -1
- package/dist/file-tree/use-file-tree-shift.js +43 -30
- package/dist/file-tree/use-file-tree.js +60 -18
- package/dist/file-tree/use-slots.js +220 -192
- package/dist/floating.js +2 -2
- package/dist/format/datetime.js +88 -38
- package/dist/format/duration.js +59 -53
- package/dist/format/index.js +1 -1
- package/dist/format/locale.js +76 -56
- package/dist/format/number.js +77 -61
- package/dist/format/regions.js +4 -2
- package/dist/format/time-zone.js +1 -1
- package/dist/icon-button-size.js +12 -2
- package/dist/icon-picker.js +70 -61
- package/dist/index.js +57 -57
- package/dist/key-value-list/index.parts.js +1 -1
- package/dist/key-value-list/parts.js +256 -22
- package/dist/lazy-landings.js +10 -10
- package/dist/lazy.js +84 -71
- package/dist/locales/en.js +80 -80
- package/dist/locales/nl.js +80 -80
- package/dist/locales.js +10 -7
- package/dist/menu/index.parts.js +1 -1
- package/dist/menu/parts.js +882 -44
- package/dist/merge-refs.js +8 -9
- package/dist/middle-truncate.js +24 -25
- package/dist/modality.js +27 -19
- package/dist/placement.js +11 -20
- package/dist/platform.js +6 -6
- package/dist/popover/index.parts.js +1 -1
- package/dist/popover/parts.js +173 -11
- package/dist/popup-layer.js +38 -17
- package/dist/prefetch.js +78 -79
- package/dist/preview-card/index.parts.js +1 -1
- package/dist/project-switcher-row.js +153 -12
- package/dist/select-row.js +69 -5
- package/dist/select-shared.js +6 -6
- package/dist/selection.js +16 -16
- package/dist/seti-icons.js +413 -413
- package/dist/settings/ConfirmDialog.js +55 -8
- package/dist/settings/DetailHeader.js +72 -4
- package/dist/settings/MasterDetail.js +119 -7
- package/dist/settings/SettingsDialog.js +820 -80
- package/dist/settings/SettingsRow.js +205 -18
- package/dist/settings/SettingsSection.js +96 -6
- package/dist/settings/index.js +7 -7
- package/dist/settings/target.js +7 -2
- package/dist/shortcut-hints.js +73 -55
- package/dist/shortcut.js +140 -104
- package/dist/step-places.js +1 -1
- package/dist/tabs/index.parts.js +1 -1
- package/dist/tabs/overflow.js +18 -18
- package/dist/tabs/parts.js +780 -166
- package/dist/testing/dedupe.js +82 -75
- package/dist/testing/fake-source.js +12 -12
- package/dist/testing/index.js +1 -1
- package/dist/toast-store.js +65 -46
- package/dist/tree/index.parts.js +1 -1
- package/dist/tree/parts.js +721 -94
- package/dist/tree/shift.js +28 -22
- package/dist/tree/style.js +2 -2
- package/dist/tree/use-tree-shift.js +178 -117
- package/dist/useAsyncAction.js +23 -19
- package/dist/useColumnResize.js +36 -34
- package/dist/useContentSize.js +62 -18
- package/dist/useMeasuredWidth.js +14 -3
- package/dist/useNow.js +73 -30
- package/dist/wipe-split.js +14 -14
- package/dist/workspace/DropPreview.js +60 -7
- package/dist/workspace/SplitView.js +1025 -441
- package/dist/workspace/TabStrip.js +810 -191
- package/dist/workspace/Workspace.js +276 -26
- package/dist/workspace/context.js +8 -3
- package/dist/workspace/geometry.js +173 -150
- package/dist/workspace/model.js +313 -250
- package/dist/workspace/preview.js +61 -61
- package/dist/zoom.js +2 -2
- package/package.json +1 -1
- package/src/ErrorBoundary.tsx +1 -1
- package/src/Field.tsx +4 -3
- package/src/IconPicker.tsx +3 -3
- package/src/LazyBoundary.tsx +2 -0
- package/src/MiddleTruncate.tsx +2 -2
- package/src/SegmentBar.tsx +2 -2
- package/src/Toasts.tsx +3 -1
- package/src/Tooltip.tsx +7 -10
- package/src/Waveform.tsx +3 -3
- package/src/file-tree/parts.tsx +6 -9
- package/src/file-tree/use-file-tree-shift.tsx +6 -9
- package/src/lazy.tsx +4 -0
- package/src/locales/en.ts +4 -4
- package/src/locales/nl.ts +5 -5
- package/src/settings/SettingsDialog.tsx +1 -1
- package/src/tree/parts.tsx +5 -8
- package/src/useContentSize.ts +3 -3
- package/src/workspace/SplitView.tsx +2 -2
- package/src/workspace/TabStrip.tsx +2 -3
- package/src/workspace/Workspace.tsx +2 -5
package/dist/testing/dedupe.js
CHANGED
|
@@ -15,110 +15,117 @@ const SHARED = ['react', 'react-dom', 'i18next', 'react-i18next', '@base-ui/reac
|
|
|
15
15
|
const NAME = '@adecore/ui';
|
|
16
16
|
/* The package root, from `src/testing` or `dist/testing` alike. */
|
|
17
17
|
const library = realpathSync(join(import.meta.dir, '..', '..'));
|
|
18
|
-
const manifestOf =
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const manifestOf = folder => {
|
|
19
|
+
const path = join(folder, 'package.json');
|
|
20
|
+
return existsSync(path) ? JSON.parse(readFileSync(path, 'utf8')) : null;
|
|
21
21
|
};
|
|
22
|
-
const dependsOnLibrary =
|
|
22
|
+
const dependsOnLibrary = manifest => manifest !== null && [manifest.dependencies, manifest.devDependencies, manifest.peerDependencies].some(deps => deps !== undefined && NAME in deps);
|
|
23
23
|
const membersOf = (root, manifest) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const workspaces = manifest?.workspaces;
|
|
25
|
+
const patterns = (Array.isArray(workspaces) ? workspaces : workspaces?.packages) ?? [];
|
|
26
|
+
return patterns.flatMap(pattern => [...new Glob(`${pattern}/package.json`).scanSync({
|
|
27
|
+
cwd: root,
|
|
28
|
+
onlyFiles: true
|
|
29
|
+
})]).map(path => join(root, dirname(path)));
|
|
29
30
|
};
|
|
30
31
|
/*
|
|
31
32
|
* Where the app's copies are found: the folder the tests run in, then each workspace of it that
|
|
32
33
|
* depends on the library. With an isolated install the root of a monorepo has no React of its own.
|
|
33
34
|
*/
|
|
34
35
|
const appFolders = () => {
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const root = process.cwd();
|
|
37
|
+
return [root, ...membersOf(root, manifestOf(root)).filter(folder => dependsOnLibrary(manifestOf(folder)))];
|
|
37
38
|
};
|
|
38
39
|
/* Where the checkout keeps its copies: the library's other packages in the same monorepo bring their own. */
|
|
39
40
|
const checkoutFolders = () => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
41
|
+
for (let folder = dirname(library); dirname(folder) !== folder; folder = dirname(folder)) {
|
|
42
|
+
const manifest = manifestOf(folder);
|
|
43
|
+
if (manifest?.workspaces !== undefined) {
|
|
44
|
+
const members = membersOf(folder, manifest);
|
|
45
|
+
return members.includes(library) ? [folder, ...members] : [library];
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
}
|
|
48
|
+
return [library];
|
|
48
49
|
};
|
|
49
50
|
/* The packages a name of the list stands for in a folder: itself, or every package of the scope for `@scope/*`. */
|
|
50
51
|
const namesIn = (folder, pattern) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
? readdirSync(path)
|
|
58
|
-
.filter((entry) => !entry.startsWith('.'))
|
|
59
|
-
.map((entry) => `${scope}/${entry}`)
|
|
60
|
-
: [];
|
|
52
|
+
if (!pattern.endsWith('/*')) {
|
|
53
|
+
return [pattern];
|
|
54
|
+
}
|
|
55
|
+
const scope = pattern.slice(0, -2);
|
|
56
|
+
const path = join(folder, 'node_modules', scope);
|
|
57
|
+
return existsSync(path) ? readdirSync(path).filter(entry => !entry.startsWith('.')).map(entry => `${scope}/${entry}`) : [];
|
|
61
58
|
};
|
|
62
59
|
/* The copy of a package that `from` resolves to, walking up the node_modules folders as Node does. */
|
|
63
60
|
const copyFrom = (from, name) => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
61
|
+
for (let folder = from;; folder = dirname(folder)) {
|
|
62
|
+
const candidate = join(folder, 'node_modules', name);
|
|
63
|
+
if (existsSync(candidate)) {
|
|
64
|
+
return realpathSync(candidate);
|
|
65
|
+
}
|
|
66
|
+
if (dirname(folder) === folder) {
|
|
67
|
+
return null;
|
|
72
68
|
}
|
|
69
|
+
}
|
|
73
70
|
};
|
|
74
71
|
const findCopies = () => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
const checkout = checkoutFolders();
|
|
73
|
+
const inside = path => path === checkout[0] || path.startsWith(`${checkout[0]}${sep}`);
|
|
74
|
+
// A run inside the checkout is the library's own; a node_modules above it belongs to no app.
|
|
75
|
+
if (inside(realpathSync(process.cwd()))) {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
const folders = appFolders();
|
|
79
|
+
const added = folders.flatMap(folder => {
|
|
80
|
+
const names = manifestOf(folder)?.adecore?.dedupe;
|
|
81
|
+
return Array.isArray(names) ? names.filter(name => typeof name === 'string') : [];
|
|
82
|
+
});
|
|
83
|
+
const names = new Set([...SHARED, ...added].flatMap(pattern => checkout.flatMap(folder => namesIn(folder, pattern))));
|
|
84
|
+
return [...names].flatMap(name => {
|
|
85
|
+
const ours = folders.map(folder => copyFrom(folder, name)).find(copy => copy !== null && !inside(copy));
|
|
86
|
+
if (ours === undefined) {
|
|
87
|
+
return [];
|
|
80
88
|
}
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
return [...names].flatMap((name) => {
|
|
88
|
-
const ours = folders.map((folder) => copyFrom(folder, name)).find((copy) => copy !== null && !inside(copy));
|
|
89
|
-
if (ours === undefined) {
|
|
90
|
-
return [];
|
|
91
|
-
}
|
|
92
|
-
const theirs = new Set(checkout
|
|
93
|
-
.map((folder) => join(folder, 'node_modules', name))
|
|
94
|
-
.filter((path) => existsSync(path))
|
|
95
|
-
.map((path) => realpathSync(path)));
|
|
96
|
-
return [...theirs].filter((real) => real !== ours).map((real) => ({ theirs: `${real}${sep}`, ours: `${ours}${sep}` }));
|
|
97
|
-
});
|
|
89
|
+
const theirs = new Set(checkout.map(folder => join(folder, 'node_modules', name)).filter(path => existsSync(path)).map(path => realpathSync(path)));
|
|
90
|
+
return [...theirs].filter(real => real !== ours).map(real => ({
|
|
91
|
+
theirs: `${real}${sep}`,
|
|
92
|
+
ours: `${ours}${sep}`
|
|
93
|
+
}));
|
|
94
|
+
});
|
|
98
95
|
};
|
|
99
96
|
// From the registry the package manager already decided what to share; a copy nested in the library is on purpose.
|
|
100
97
|
const copies = library.split(sep).includes('node_modules') ? [] : findCopies();
|
|
101
|
-
const escape =
|
|
98
|
+
const escape = text => text.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
|
|
102
99
|
let transpiler = null;
|
|
103
100
|
/*
|
|
104
101
|
* Re-exports the app's file without running it: `require` refuses an ES module of the app that is
|
|
105
102
|
* still loading. `export *` skips the default, which CommonJS always has and an ES module only when it says so.
|
|
106
103
|
*/
|
|
107
|
-
const standIn =
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
104
|
+
const standIn = path => {
|
|
105
|
+
transpiler ??= new Bun.Transpiler({
|
|
106
|
+
loader: 'js'
|
|
107
|
+
});
|
|
108
|
+
const {
|
|
109
|
+
exports,
|
|
110
|
+
imports
|
|
111
|
+
} = transpiler.scan(readFileSync(path, 'utf8'));
|
|
112
|
+
const esm = exports.length > 0 || imports.some(entry => entry.kind === 'import-statement');
|
|
113
|
+
const target = JSON.stringify(path);
|
|
114
|
+
return [`export * from ${target};`, ...(!esm || exports.includes('default') ? [`export { default } from ${target};`] : [])].join('\n');
|
|
113
115
|
};
|
|
114
116
|
if (copies.length > 0) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
117
|
+
plugin({
|
|
118
|
+
name: 'adecore-ui-dedupe',
|
|
119
|
+
setup(build) {
|
|
120
|
+
build.onLoad({
|
|
121
|
+
filter: new RegExp(`^(${copies.map(copy => escape(copy.theirs)).join('|')})`)
|
|
122
|
+
}, args => {
|
|
123
|
+
const copy = copies.find(candidate => args.path.startsWith(candidate.theirs));
|
|
124
|
+
return {
|
|
125
|
+
contents: standIn(copy.ours + args.path.slice(copy.theirs.length)),
|
|
126
|
+
loader: 'js'
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { FORMAT_LANGUAGE } from '../format/regions.js';
|
|
2
2
|
/* A source a test sets by hand: English, the region of the language, and no system locale of a shell. */
|
|
3
3
|
export const fakeFormatSource = () => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
4
|
+
let language = 'en';
|
|
5
|
+
let region = FORMAT_LANGUAGE;
|
|
6
|
+
return {
|
|
7
|
+
language: () => language,
|
|
8
|
+
region: () => region,
|
|
9
|
+
subscribe: () => () => {},
|
|
10
|
+
set: settings => {
|
|
11
|
+
language = settings.language ?? language;
|
|
12
|
+
region = settings.region ?? region;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
};
|
package/dist/testing/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* Fakes for an app's own tests. Nothing here belongs in a bundle that ships. */
|
|
2
|
-
export { fakeFormatSource } from './fake-source.js';
|
|
2
|
+
export { fakeFormatSource } from './fake-source.js';
|
package/dist/toast-store.js
CHANGED
|
@@ -10,52 +10,71 @@ export const elapsedOf = (deadline, now) => Math.min(Math.max(now - deadline.sta
|
|
|
10
10
|
* one id from progress to its outcome, so a person never watches two cards for one thing.
|
|
11
11
|
*/
|
|
12
12
|
export const createToastStore = () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const timers = new Map();
|
|
14
|
+
let counter = 0;
|
|
15
|
+
return create((set, get) => {
|
|
16
|
+
const stop = id => {
|
|
17
|
+
clearTimeout(timers.get(id));
|
|
18
|
+
timers.delete(id);
|
|
19
|
+
};
|
|
20
|
+
/* A toast that went well takes itself away, and so does the offer to undo; a failure and a running action stay. */
|
|
21
|
+
const schedule = (id, kind, persist) => {
|
|
22
|
+
stop(id);
|
|
23
|
+
const lifetime = kind === 'deleted' ? UNDO_MS : kind === 'success' && !persist ? SUCCESS_MS : null;
|
|
24
|
+
if (lifetime === null) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
timers.set(id, setTimeout(() => {
|
|
28
|
+
timers.delete(id);
|
|
29
|
+
get().dismiss(id);
|
|
30
|
+
}, lifetime));
|
|
31
|
+
const start = Date.now();
|
|
32
|
+
return {
|
|
33
|
+
start,
|
|
34
|
+
end: start + lifetime
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
toasts: [],
|
|
39
|
+
show(toast) {
|
|
40
|
+
counter += 1;
|
|
41
|
+
const id = toast.id ?? `toast-${counter}`;
|
|
42
|
+
const next = {
|
|
43
|
+
...toast,
|
|
44
|
+
id,
|
|
45
|
+
deadline: schedule(id, toast.kind, toast.persist === true)
|
|
19
46
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
const toasts = get().toasts;
|
|
48
|
+
set({
|
|
49
|
+
toasts: toasts.some(entry => entry.id === id) ? toasts.map(entry => entry.id === id ? next : entry) : [...toasts, next]
|
|
50
|
+
});
|
|
51
|
+
return id;
|
|
52
|
+
},
|
|
53
|
+
update(id, patch) {
|
|
54
|
+
const current = get().toasts.find(entry => entry.id === id);
|
|
55
|
+
if (current === undefined) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const merged = {
|
|
59
|
+
...current,
|
|
60
|
+
...patch
|
|
33
61
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
counter += 1;
|
|
38
|
-
const id = toast.id ?? `toast-${counter}`;
|
|
39
|
-
const next = { ...toast, id, deadline: schedule(id, toast.kind, toast.persist === true) };
|
|
40
|
-
const toasts = get().toasts;
|
|
41
|
-
set({ toasts: toasts.some((entry) => entry.id === id) ? toasts.map((entry) => (entry.id === id ? next : entry)) : [...toasts, next] });
|
|
42
|
-
return id;
|
|
43
|
-
},
|
|
44
|
-
update(id, patch) {
|
|
45
|
-
const current = get().toasts.find((entry) => entry.id === id);
|
|
46
|
-
if (current === undefined) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const merged = { ...current, ...patch };
|
|
50
|
-
const next = { ...merged, deadline: schedule(id, merged.kind, merged.persist === true) };
|
|
51
|
-
set({ toasts: get().toasts.map((entry) => (entry.id === id ? next : entry)) });
|
|
52
|
-
},
|
|
53
|
-
dismiss(id) {
|
|
54
|
-
stop(id);
|
|
55
|
-
const gone = get().toasts.find((entry) => entry.id === id);
|
|
56
|
-
set({ toasts: get().toasts.filter((entry) => entry.id !== id) });
|
|
57
|
-
gone?.onClose?.();
|
|
58
|
-
}
|
|
62
|
+
const next = {
|
|
63
|
+
...merged,
|
|
64
|
+
deadline: schedule(id, merged.kind, merged.persist === true)
|
|
59
65
|
};
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
set({
|
|
67
|
+
toasts: get().toasts.map(entry => entry.id === id ? next : entry)
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
dismiss(id) {
|
|
71
|
+
stop(id);
|
|
72
|
+
const gone = get().toasts.find(entry => entry.id === id);
|
|
73
|
+
set({
|
|
74
|
+
toasts: get().toasts.filter(entry => entry.id !== id)
|
|
75
|
+
});
|
|
76
|
+
gone?.onClose?.();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
};
|
package/dist/tree/index.parts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { TreeRoot as Root, TreeRow as Row, TreeChevron as Chevron, TreeChevronSlot as ChevronSlot, TreeLabel as Label, TreeDecoration as Decoration, TreeControl as Control, TreeCheckbox as Checkbox } from
|
|
1
|
+
export { TreeRoot as Root, TreeRow as Row, TreeChevron as Chevron, TreeChevronSlot as ChevronSlot, TreeLabel as Label, TreeDecoration as Decoration, TreeControl as Control, TreeCheckbox as Checkbox } from "./parts.js";
|