react-cheminfo 0.12.0 → 0.13.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/README.md +16 -14
- package/lib/chrome/ui/NavLink.d.ts.map +1 -1
- package/lib/chrome/ui/NavLink.js +12 -3
- package/lib/chrome/ui/NavLink.js.map +1 -1
- package/lib/ui.d.ts +0 -2
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +0 -1
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/chrome/ui/NavLink.tsx +16 -2
- package/src/ui.ts +0 -6
package/README.md
CHANGED
|
@@ -30,16 +30,18 @@ would mean two Blueprint style trees in one page.
|
|
|
30
30
|
Subpaths are **bundle boundaries, not taxonomy**: a feature gets its own door
|
|
31
31
|
only when it drags a heavy dependency behind it.
|
|
32
32
|
|
|
33
|
-
| Import | Holds | Costs
|
|
34
|
-
| ---------------------------------- | ------------------------------------------------- |
|
|
35
|
-
| `react-cheminfo/core` | every framework-free helper — 140 value exports | nothing
|
|
36
|
-
| `react-cheminfo/ui` | every React component and hook — 60 value exports | React
|
|
37
|
-
| `react-cheminfo/vite` | the prerender plugin and the OG card | nothing; React on the card
|
|
38
|
-
| `react-cheminfo/orbital` | the 3D atomic-orbital viewer | React, molstar
|
|
39
|
-
| `react-cheminfo/
|
|
40
|
-
| `react-cheminfo/
|
|
41
|
-
| `react-cheminfo/
|
|
42
|
-
| `react-cheminfo/
|
|
33
|
+
| Import | Holds | Costs |
|
|
34
|
+
| ---------------------------------- | ------------------------------------------------- | ------------------------------------------------ |
|
|
35
|
+
| `react-cheminfo/core` | every framework-free helper — 140 value exports | nothing |
|
|
36
|
+
| `react-cheminfo/ui` | every React component and hook — 60 value exports | React |
|
|
37
|
+
| `react-cheminfo/vite` | the prerender plugin and the OG card | nothing; React on the card |
|
|
38
|
+
| `react-cheminfo/orbital` | the 3D atomic-orbital viewer | React, molstar |
|
|
39
|
+
| `react-cheminfo/molecule3d` | the 3D molecule viewer and its toolbar | React, molstar |
|
|
40
|
+
| `react-cheminfo/structure` | the structure editor and renderer | React, react-ocl, OCL |
|
|
41
|
+
| `react-cheminfo/slides` | the deck format and the slideshow player | React, react-markdown |
|
|
42
|
+
| `react-cheminfo/spectra` | the spectra processing settings editors | React; types only from spectra-processor, ml-pca |
|
|
43
|
+
| `react-cheminfo/styles/chrome.css` | the shared tokens and site-header stylesheet | nothing |
|
|
44
|
+
| `react-cheminfo/styles/slides.css` | the deck stylesheet, themed on the site's colours | nothing |
|
|
43
45
|
|
|
44
46
|
A backend serving an RIS endpoint, a prerender script writing a sitemap, and
|
|
45
47
|
every unit test of that logic therefore load no React at all — and a worker
|
|
@@ -62,19 +64,19 @@ through a wildcard subpath exactly as `react-science` serves its own.
|
|
|
62
64
|
|
|
63
65
|
| Area | `…/core` | `…/ui` |
|
|
64
66
|
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
65
|
-
| **Site identity** | `siteById`, `findSiteByHost`, `siteTokensCss
|
|
67
|
+
| **Site identity** | `siteById`, `findSiteByHost`, `siteTokensCss` | `SiteMark`, `Wordmark`, `SiteTheme`, `SiteTile`, `EcosystemButton`, `EcosystemLinks` |
|
|
66
68
|
| **Chrome** | — | `SiteHeader`, `SiteFooter`, `NavLink`, `NavMenuButton`, `MenuButton`, `useCompactHeader` |
|
|
67
69
|
| **Citation** | `formatCitation`, `formatCitations`, `citationSegments`, `downloadCitation`, `citedReferences`, `doiUrl` | `CiteButton`, `CitationMenu`, `CitationPreview` |
|
|
68
70
|
| **Share & embed** | `parseShareConfig`, `applyShareConfig`, `buildShareUrl`, `buildEmbedCode`, `isHidden`, `visibleShareParts`, `applySharePreset`, `findSharePreset`, the param codecs, `syncPreferencesWithUrl`, `applyPreferencesFromSearch`, `writePreferencesToSearch` | `ShareDialog`, `ShareButton`, `HiddenPartsProvider`, `PagePart`, `useIsHidden` |
|
|
69
|
-
| **Routing & head** | `createTabRouter`, `
|
|
71
|
+
| **Routing & head** | `createTabRouter`, `readRoute`, `writeRoute`, `subscribeToRoute`, `adoptLegacyHashAddress`, `writeDocumentMeta` | `useTabRoute` |
|
|
70
72
|
| **Indexing** | `injectPageMeta`, `pageHeadTags`, `pageDocumentMeta`, `fill`, `PAGE_HEAD_MARKER`, `PAGE_BODY_MARKER`, `robotsTxt`, `sitemapXml`, `noscriptIndex`, `structuredDataScript`, `assertRoutes`, `routeFor`, `homeRoute` | `cheminfoPrerender`, `ogCardHtml`, `OG_WIDTH`, `OG_HEIGHT` (all `/vite`) |
|
|
71
73
|
| **Pedagogy** | `parseGlossaryMarkers`, `localStorageProgressStore`, `progressSummary`, `finishValidation` | `GlossaryText`, `SyntaxTooltip`, `HintLadder`, `ExerciseActions`, `ExerciseProgressHeader`, `TutorialStepStrip`, `ReferenceGrid`, `TestCaseList` |
|
|
72
74
|
| **Clipboard & files** | `writeToClipboard`, `downloadBlob`, `downloadText`, `sanitizeFileName`, `toDelimited`, `readDelimited`, `downloadFigure`, `figureSvg`, `figurePng`, `figureSize` | `CopyButton`, `CodeBlock`, `DelimitedTextDialog`, `FigureDownload` |
|
|
73
75
|
| **Formatting & colour** | `formatInteger`, `formatDecimal`, `formatBytes`, `pluralize`, `readableInk`, `contrastRatio`, `COLOR_SCALES`, `resolveColorScale`, `formatColorScale`, `colorAt`, `swatchAt`, `sampleScale`, `colorScaleGradient`, `rgbToHsv` | `ColorScaleLegend`, `ColorScaleSelect`, `ColorScaleEditor`, `ColorScaleBar` |
|
|
74
76
|
| **Widgets** | `CREDITS`, `credits` | `ErrorBoundary`, `CollapsibleSection`, `CapsuleFilter`, `HelpTooltip`, `CreditsList` |
|
|
75
|
-
| **Hooks & state** | `createWorkerChannel
|
|
77
|
+
| **Hooks & state** | `createWorkerChannel`, `persistBucket`, `persistSignalBucket` | `useDebouncedValue`, `useContainerSize`, `useListKeyboardNavigation`, `useDisclosure` |
|
|
76
78
|
| **Chemistry** | `atomicOrbitalsOf`, `configurationOf`, `classifyMolfile`, `readStructure` | `AtomicOrbitalViewer` (`/orbital`), `StructureEditor`, `Structure` (`/structure`) |
|
|
77
|
-
| **Spectra** | `FILTER_CATALOG`, `filterMenu`, `settingsProblems`, `normalizationFilters`, `addFilter`, `moveFilter`, `setFilterOption`, `principalComponentChoices`, `clampPrincipalComponents`, `EMPTY_SETTINGS`
|
|
79
|
+
| **Spectra** | `FILTER_CATALOG`, `filterMenu`, `settingsProblems`, `normalizationFilters`, `addFilter`, `moveFilter`, `setFilterOption`, `principalComponentChoices`, `clampPrincipalComponents`, `EMPTY_SETTINGS` (all `/spectra`) | `SpectraSettingsEditor`, `FilterChainEditor`, `PrincipalComponentSelect` (all `/spectra`) |
|
|
78
80
|
| **About** | `resolveAbout`, `aboutProblems` | `AboutPage` |
|
|
79
81
|
| **Slideshows** | `parseTalk`, `splitDemoLinks`, `slideActionForKey`, `parseTalkOrigin`, `buildTalkManifest` (all `/slides`) | `Slideshow`, `SlideView`, `TalkList`, `BackToSlides` (all `/slides`), `cheminfoTalks` (`/vite`) |
|
|
80
82
|
| **Token guard** | `findTokenViolations` | `cheminfo-check-tokens` (the bin) |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavLink.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"NavLink.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAyDzD"}
|
package/lib/chrome/ui/NavLink.js
CHANGED
|
@@ -10,7 +10,8 @@ import { isModifiedClick } from "./navItem.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export function NavLink(props) {
|
|
12
12
|
const { item, active = false, className } = props;
|
|
13
|
-
const { href, external = false, onSelect, title, disabled = false, icon, } = item;
|
|
13
|
+
const { href, external = false, onSelect, title, disabled = false, icon, label, } = item;
|
|
14
|
+
const ariaLabel = accessibleName(label, icon !== undefined, title);
|
|
14
15
|
const classes = [
|
|
15
16
|
'nav-link',
|
|
16
17
|
icon === undefined ? null : 'nav-link--icon',
|
|
@@ -21,9 +22,9 @@ export function NavLink(props) {
|
|
|
21
22
|
.filter((part) => part !== null)
|
|
22
23
|
.join(' ');
|
|
23
24
|
if (href === undefined || disabled) {
|
|
24
|
-
return (_jsx("button", { type: "button", className: classes, title: title, "aria-label":
|
|
25
|
+
return (_jsx("button", { type: "button", className: classes, title: title, "aria-label": ariaLabel, disabled: disabled, onClick: disabled ? undefined : onSelect, children: _jsx(NavLinkBody, { item: item }) }));
|
|
25
26
|
}
|
|
26
|
-
return (_jsx("a", { className: classes, href: href, title: title, "aria-label":
|
|
27
|
+
return (_jsx("a", { className: classes, href: href, title: title, "aria-label": ariaLabel, target: external ? '_blank' : undefined, rel: external ? 'noreferrer' : undefined, onClick: (event) => {
|
|
27
28
|
if (onSelect === undefined || external || isModifiedClick(event)) {
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
@@ -37,4 +38,12 @@ function NavLinkBody(props) {
|
|
|
37
38
|
// then is the label wrapped where the stylesheet can reach it.
|
|
38
39
|
return (_jsxs(_Fragment, { children: [icon === undefined ? (label) : (_jsxs(_Fragment, { children: [_jsx(Icon, { icon: icon, size: 14 }), _jsx("span", { className: "nav-link__label", children: label })] })), after] }));
|
|
39
40
|
}
|
|
41
|
+
// Visible text names the entry by itself. Beside a glyph it is repeated as the
|
|
42
|
+
// label, because a narrow bar hides that text; anything else falls back to the
|
|
43
|
+
// title, which otherwise stays the tooltip.
|
|
44
|
+
function accessibleName(label, hasIcon, title) {
|
|
45
|
+
if (typeof label !== 'string' && typeof label !== 'number')
|
|
46
|
+
return title;
|
|
47
|
+
return hasIcon ? String(label) : undefined;
|
|
48
|
+
}
|
|
40
49
|
//# sourceMappingURL=NavLink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavLink.js","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmB/C;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,EACJ,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,IAAI,
|
|
1
|
+
{"version":3,"file":"NavLink.js","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":"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"}
|
package/lib/ui.d.ts
CHANGED
|
@@ -23,6 +23,4 @@ export * from './scatter/ui/index.ts';
|
|
|
23
23
|
export * from './scatter3d/ui/index.ts';
|
|
24
24
|
export * from './share/ui/index.ts';
|
|
25
25
|
export * from './shared/ui/index.ts';
|
|
26
|
-
export type { BucketRead, PersistBucketOptions, PersistedBucket, } from './state/core/index.ts';
|
|
27
|
-
export { persistBucket } from './state/core/index.ts';
|
|
28
26
|
//# sourceMappingURL=ui.d.ts.map
|
package/lib/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
package/lib/ui.js
CHANGED
package/lib/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-cheminfo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "React components, hooks and framework-free helpers shared by the cheminfo sites: site chrome, citations, sharing, routing, pedagogy, charts, and the structure, orbital and 3D molecule viewers",
|
|
6
6
|
"author": "Luc Patiny",
|
|
@@ -37,7 +37,9 @@ export function NavLink(props: NavLinkProps): ReactElement {
|
|
|
37
37
|
title,
|
|
38
38
|
disabled = false,
|
|
39
39
|
icon,
|
|
40
|
+
label,
|
|
40
41
|
} = item;
|
|
42
|
+
const ariaLabel = accessibleName(label, icon !== undefined, title);
|
|
41
43
|
|
|
42
44
|
const classes = [
|
|
43
45
|
'nav-link',
|
|
@@ -55,7 +57,7 @@ export function NavLink(props: NavLinkProps): ReactElement {
|
|
|
55
57
|
type="button"
|
|
56
58
|
className={classes}
|
|
57
59
|
title={title}
|
|
58
|
-
aria-label={
|
|
60
|
+
aria-label={ariaLabel}
|
|
59
61
|
disabled={disabled}
|
|
60
62
|
onClick={disabled ? undefined : onSelect}
|
|
61
63
|
>
|
|
@@ -69,7 +71,7 @@ export function NavLink(props: NavLinkProps): ReactElement {
|
|
|
69
71
|
className={classes}
|
|
70
72
|
href={href}
|
|
71
73
|
title={title}
|
|
72
|
-
aria-label={
|
|
74
|
+
aria-label={ariaLabel}
|
|
73
75
|
target={external ? '_blank' : undefined}
|
|
74
76
|
rel={external ? 'noreferrer' : undefined}
|
|
75
77
|
onClick={(event) => {
|
|
@@ -104,3 +106,15 @@ function NavLinkBody(props: { item: NavItem }): ReactNode {
|
|
|
104
106
|
</>
|
|
105
107
|
);
|
|
106
108
|
}
|
|
109
|
+
|
|
110
|
+
// Visible text names the entry by itself. Beside a glyph it is repeated as the
|
|
111
|
+
// label, because a narrow bar hides that text; anything else falls back to the
|
|
112
|
+
// title, which otherwise stays the tooltip.
|
|
113
|
+
function accessibleName(
|
|
114
|
+
label: ReactNode,
|
|
115
|
+
hasIcon: boolean,
|
|
116
|
+
title: string | undefined,
|
|
117
|
+
): string | undefined {
|
|
118
|
+
if (typeof label !== 'string' && typeof label !== 'number') return title;
|
|
119
|
+
return hasIcon ? String(label) : undefined;
|
|
120
|
+
}
|
package/src/ui.ts
CHANGED
|
@@ -23,9 +23,3 @@ export * from './scatter/ui/index.ts';
|
|
|
23
23
|
export * from './scatter3d/ui/index.ts';
|
|
24
24
|
export * from './share/ui/index.ts';
|
|
25
25
|
export * from './shared/ui/index.ts';
|
|
26
|
-
export type {
|
|
27
|
-
BucketRead,
|
|
28
|
-
PersistBucketOptions,
|
|
29
|
-
PersistedBucket,
|
|
30
|
-
} from './state/core/index.ts';
|
|
31
|
-
export { persistBucket } from './state/core/index.ts';
|