cursedbelt 5.96.0 → 5.97.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/react/components/AppShell.js +6 -1
- package/dist/react/components/AppShell.js.map +1 -1
- package/dist/react/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/react/components/ConfirmDialog.js +1 -1
- package/dist/react/components/ConfirmDialog.js.map +1 -1
- package/dist/react/components/PaneSplit.d.ts +11 -2
- package/dist/react/components/PaneSplit.d.ts.map +1 -1
- package/dist/react/components/PaneSplit.js +12 -11
- package/dist/react/components/PaneSplit.js.map +1 -1
- package/dist/react/components/PanelGrid.d.ts +14 -8
- package/dist/react/components/PanelGrid.d.ts.map +1 -1
- package/dist/react/components/PanelGrid.js +10 -3
- package/dist/react/components/PanelGrid.js.map +1 -1
- package/dist/react/components/SplitPane.d.ts +3 -9
- package/dist/react/components/SplitPane.d.ts.map +1 -1
- package/dist/react/components/SplitPane.js +0 -3
- package/dist/react/components/SplitPane.js.map +1 -1
- package/dist/react/components/TagsEditor.d.ts +15 -0
- package/dist/react/components/TagsEditor.d.ts.map +1 -0
- package/dist/react/components/TagsEditor.js +93 -0
- package/dist/react/components/TagsEditor.js.map +1 -0
- package/dist/react/components/TagsPromptDialog.d.ts +25 -0
- package/dist/react/components/TagsPromptDialog.d.ts.map +1 -0
- package/dist/react/components/TagsPromptDialog.js +38 -0
- package/dist/react/components/TagsPromptDialog.js.map +1 -0
- package/dist/react/components/paneSplit.css +8 -0
- package/dist/react/file-tree/FolderViewMenus.d.ts.map +1 -1
- package/dist/react/file-tree/FolderViewMenus.js +2 -0
- package/dist/react/file-tree/FolderViewMenus.js.map +1 -1
- package/dist/react/file-tree/useFolderView.d.ts +11 -1
- package/dist/react/file-tree/useFolderView.d.ts.map +1 -1
- package/dist/react/file-tree/useFolderView.js +3 -2
- package/dist/react/file-tree/useFolderView.js.map +1 -1
- package/dist/react/filter-rail/railResize.d.ts +16 -5
- package/dist/react/filter-rail/railResize.d.ts.map +1 -1
- package/dist/react/filter-rail/railResize.js +27 -9
- package/dist/react/filter-rail/railResize.js.map +1 -1
- package/dist/react/filter-rail/railWidth.d.ts +10 -5
- package/dist/react/filter-rail/railWidth.d.ts.map +1 -1
- package/dist/react/filter-rail/railWidth.js +13 -8
- package/dist/react/filter-rail/railWidth.js.map +1 -1
- package/dist/react/hooks/longPressContextMenu.d.ts +10 -1
- package/dist/react/hooks/longPressContextMenu.d.ts.map +1 -1
- package/dist/react/hooks/longPressContextMenu.js +37 -3
- package/dist/react/hooks/longPressContextMenu.js.map +1 -1
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +4 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/lib/paneReach.d.ts +36 -0
- package/dist/react/lib/paneReach.d.ts.map +1 -0
- package/dist/react/lib/paneReach.js +72 -0
- package/dist/react/lib/paneReach.js.map +1 -0
- package/dist/react/lib/tagList.d.ts +16 -0
- package/dist/react/lib/tagList.d.ts.map +1 -0
- package/dist/react/lib/tagList.js +30 -0
- package/dist/react/lib/tagList.js.map +1 -0
- package/dist/react/master-detail/MasterDetail.d.ts +6 -3
- package/dist/react/master-detail/MasterDetail.d.ts.map +1 -1
- package/dist/react/master-detail/MasterDetail.js +3 -2
- package/dist/react/master-detail/MasterDetail.js.map +1 -1
- package/dist/react/media/FocusViewer.d.ts +8 -1
- package/dist/react/media/FocusViewer.d.ts.map +1 -1
- package/dist/react/media/FocusViewer.js +10 -1
- package/dist/react/media/FocusViewer.js.map +1 -1
- package/dist/react/media/FrameGrabber.d.ts +3 -1
- package/dist/react/media/FrameGrabber.d.ts.map +1 -1
- package/dist/react/media/FrameGrabber.js +10 -5
- package/dist/react/media/FrameGrabber.js.map +1 -1
- package/dist/react/media/VideoChapterEditor.d.ts +3 -1
- package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
- package/dist/react/media/VideoChapterEditor.js +14 -6
- package/dist/react/media/VideoChapterEditor.js.map +1 -1
- package/dist/react/media/VideoCutEditor.d.ts +3 -1
- package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
- package/dist/react/media/VideoCutEditor.js +14 -6
- package/dist/react/media/VideoCutEditor.js.map +1 -1
- package/dist/react/media/VideoTurner.d.ts +3 -1
- package/dist/react/media/VideoTurner.d.ts.map +1 -1
- package/dist/react/media/VideoTurner.js +13 -5
- package/dist/react/media/VideoTurner.js.map +1 -1
- package/dist/react/media/hlsSource.d.ts +27 -0
- package/dist/react/media/hlsSource.d.ts.map +1 -1
- package/dist/react/media/hlsSource.js +39 -0
- package/dist/react/media/hlsSource.js.map +1 -1
- package/dist/react/media/videoEnhance.d.ts +1 -1
- package/dist/react/media/videoEnhance.js +1 -1
- package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +4 -4
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/tagsPrompt.d.ts +15 -0
- package/dist/react/tagsPrompt.d.ts.map +1 -0
- package/dist/react/tagsPrompt.js +30 -0
- package/dist/react/tagsPrompt.js.map +1 -0
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/fields.css +4 -4
- package/dist/styles-areas/overlays.css +3 -2
- package/dist/styles-utilities.css +7 -0
- package/dist/testing/phoneRules.js +3 -3
- package/dist/testing/phoneRules.js.map +1 -1
- package/dist/theme.css +13 -0
- package/package.json +8 -1
- package/scripts/guardrailsEnforce.spec.ts +25 -0
- package/scripts/guardrailsEnforce.ts +61 -0
- package/scripts/styleAreas.ts +5 -0
- package/src/looks.spec.ts +34 -0
- package/src/react/components/AppShell.spec.tsx +23 -0
- package/src/react/components/AppShell.tsx +6 -1
- package/src/react/components/ConfirmDialog.spec.tsx +41 -0
- package/src/react/components/ConfirmDialog.tsx +12 -2
- package/src/react/components/PaneSplit.spec.tsx +26 -3
- package/src/react/components/PaneSplit.tsx +26 -13
- package/src/react/components/PanelGrid.tsx +16 -11
- package/src/react/components/SplitPane.spec.tsx +10 -5
- package/src/react/components/SplitPane.tsx +3 -12
- package/src/react/components/TagsEditor.tsx +140 -0
- package/src/react/components/TagsPromptDialog.spec.tsx +74 -0
- package/src/react/components/TagsPromptDialog.tsx +108 -0
- package/src/react/components/paneSplit.css +8 -0
- package/src/react/file-tree/FolderViewMenus.tsx +1 -0
- package/src/react/file-tree/folderViewTree.spec.tsx +15 -0
- package/src/react/file-tree/useFolderView.ts +13 -2
- package/src/react/filter-rail/FilterRail.spec.tsx +7 -3
- package/src/react/filter-rail/railResize.spec.tsx +27 -5
- package/src/react/filter-rail/railResize.tsx +46 -15
- package/src/react/filter-rail/railWidth.ts +13 -8
- package/src/react/hooks/longPressContextMenu.spec.ts +50 -0
- package/src/react/hooks/longPressContextMenu.ts +39 -3
- package/src/react/index.ts +4 -0
- package/src/react/lib/paneReach.spec.ts +58 -0
- package/src/react/lib/paneReach.ts +65 -0
- package/src/react/lib/tagList.spec.ts +19 -0
- package/src/react/lib/tagList.ts +29 -0
- package/src/react/master-detail/MasterDetail.tsx +10 -5
- package/src/react/media/FocusViewer.spec.tsx +19 -0
- package/src/react/media/FocusViewer.tsx +17 -0
- package/src/react/media/FrameGrabber.tsx +12 -5
- package/src/react/media/VideoChapterEditor.tsx +16 -6
- package/src/react/media/VideoCutEditor.tsx +17 -6
- package/src/react/media/VideoTurner.tsx +14 -5
- package/src/react/media/editorVideoSource.spec.tsx +71 -0
- package/src/react/media/hlsSource.ts +43 -0
- package/src/react/media/videoEnhance.ts +1 -1
- package/src/react/media-gallery/MediaGallery.tsx +4 -0
- package/src/react/tagsPrompt.tsx +33 -0
- package/src/styles-areas/fields.css +4 -4
- package/src/styles-areas/overlays.css +3 -2
- package/src/styles-utilities.css +7 -0
- package/src/testing/phoneRules.ts +2 -2
- package/src/theme.css +13 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { cn } from '../lib/cn.js';
|
|
4
|
+
import { DIALOG_MOTION } from '../lib/overlayMotion.js';
|
|
5
|
+
import { Button } from './Button.js';
|
|
6
|
+
import { Dialog, DialogContent, DialogDescription, DialogTitle } from './dialog.js';
|
|
7
|
+
import { TagsEditor } from './TagsEditor.js';
|
|
8
|
+
/**
|
|
9
|
+
* {@link PromptDialog}'s shape with a {@link TagsEditor} for its field: the item's tags as chips,
|
|
10
|
+
* several added at once (comma/Enter, or a pasted list), × to take one off, the copy button and
|
|
11
|
+
* ⌘A/⌘C to carry them to another item. For the no-JSX case use `promptTags`
|
|
12
|
+
* (`cursedbelt/react/tags-prompt`), which mounts it once and resolves to the list or `null`.
|
|
13
|
+
*/
|
|
14
|
+
export function TagsPromptDialog({ open, onSubmit, onCancel, title, message, defaultValue = [], confirmLabel = 'Save tags', cancelLabel = 'Cancel', loading = false, className, suggestions, placeholder, normalize, item, ...rest }) {
|
|
15
|
+
const [tags, setTags] = useState(() => [...defaultValue]);
|
|
16
|
+
/** A click on Save blurs the field first, which commits its draft; ⌘Enter does not, so it reads the draft from `content`. */
|
|
17
|
+
const handleSubmit = (content) => {
|
|
18
|
+
if (loading)
|
|
19
|
+
return;
|
|
20
|
+
const raw = content?.querySelector('[data-tags-editor] input')?.value ?? '';
|
|
21
|
+
const pending = normalize ? normalize(raw) : raw.trim();
|
|
22
|
+
void onSubmit(pending && !tags.includes(pending) ? [...tags, pending] : tags);
|
|
23
|
+
};
|
|
24
|
+
return (_jsx(Dialog, { ...rest, open: open, onOpenChange: (v) => {
|
|
25
|
+
if (!v)
|
|
26
|
+
onCancel();
|
|
27
|
+
}, children: _jsxs(DialogContent, { "data-cb-tags-prompt": '', className: cn('fixed top-1/2 left-1/2 flex w-[calc(100vw-2rem)] max-w-[var(--modal-w-sm)] -translate-x-1/2 -translate-y-1/2 flex-col gap-4', 'rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-overlay', DIALOG_MOTION, className), onOpenAutoFocus: (e) => {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
e.currentTarget?.querySelector('[data-tags-editor] input')?.focus();
|
|
30
|
+
}, onKeyDown: (e) => {
|
|
31
|
+
// ⌘/Ctrl+Enter saves from the field, where a bare Enter commits the tag being typed.
|
|
32
|
+
if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
handleSubmit(e.currentTarget);
|
|
35
|
+
}
|
|
36
|
+
}, children: [_jsxs("div", { className: 'flex flex-col gap-1.5', children: [_jsx(DialogTitle, { className: 'text-base font-semibold', children: title }), message ? _jsx(DialogDescription, { className: 'text-sm text-muted-foreground', children: message }) : null] }), _jsx(TagsEditor, { value: tags, onChange: setTags, ...(suggestions ? { suggestions } : {}), ...(placeholder ? { placeholder } : {}), ...(normalize ? { normalize } : {}), ...(item ? { item } : {}) }), _jsxs("div", { className: 'flex justify-end gap-2', children: [_jsx(Button, { "data-cb-cancel": true, variant: 'secondary', onClick: onCancel, disabled: loading, tooltip: cancelLabel, children: cancelLabel }), _jsx(Button, { "data-cb-confirm": true, variant: 'primary', onClick: () => handleSubmit(), loading: loading, tooltip: confirmLabel, children: confirmLabel })] })] }) }));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=TagsPromptDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagsPromptDialog.js","sourceRoot":"","sources":["../../../src/react/components/TagsPromptDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
min-height: 0;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/* A shut pane (dragged to nothing — `lib/paneReach.ts`) draws nothing and takes no focus; its
|
|
44
|
+
content would otherwise spill out of a zero-wide track. The seam beside it is a sibling, so it
|
|
45
|
+
stays to drag the pane open again. */
|
|
46
|
+
.cb-panesplit__cell[data-shut] {
|
|
47
|
+
visibility: hidden;
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
}
|
|
50
|
+
|
|
43
51
|
.cb-panesplit__seam {
|
|
44
52
|
flex: 0 0 auto;
|
|
45
53
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderViewMenus.d.ts","sourceRoot":"","sources":["../../../src/react/file-tree/FolderViewMenus.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAK9E,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,GACD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD,2FAA2F;AAC3F,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAChC,MAAM,EAAE,CAMV;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,GAAG,GAAE,SAAS,MAAM,EAAc,EAClC,WAAW,GAAE,MAAM,GAAG,WAAW,GAAG,IAA6C,GAChF,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"FolderViewMenus.d.ts","sourceRoot":"","sources":["../../../src/react/file-tree/FolderViewMenus.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAK9E,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,GACD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD,2FAA2F;AAC3F,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAChC,MAAM,EAAE,CAMV;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,GAAG,GAAE,SAAS,MAAM,EAAc,EAClC,WAAW,GAAE,MAAM,GAAG,WAAW,GAAG,IAA6C,GAChF,gBAAgB,EAAE,CAmFpB;AAgBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,gBAAgB,EAAE,EAChC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,gBAAgB,EAAE,CAYpB;AAED,kCAAkC;AAClC,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEnE;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAYpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAU,EACV,GAAG,IAAI,EACR,EAAE;IACD,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3C,GAAG,SAAS,CAqEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderViewMenus.js","sourceRoot":"","sources":["../../../src/react/file-tree/FolderViewMenus.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FolderViewMenus.js","sourceRoot":"","sources":["../../../src/react/file-tree/FolderViewMenus.tsx"],"names":[],"mappings":";AA+BA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0B1D,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAC3B,IAAkB,EAClB,SAA4B,EAC5B,QAAiC;IAEjC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAgB,EAChB,IAAkB,EAClB,MAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,EAClC,cAA2C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;IAEjF,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;IAC/D,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,IAAI,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;IAC9L,CAAC,CAAC;IACF,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,2FAA2F;QAC3F,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChI,MAAM,YAAY,GAAG,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxI,IAAI,QAAQ;YACV,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,EAAE,kBAAkB;gBACvB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC,uBAAuB;gBACrF,KAAK,EAAE,YAAY;oBACjB,CAAC,CAAC,QAAQ,IAAI,+EAA+E;oBAC7F,CAAC,CAAC,QAAQ,IAAI,mCAAmC;gBACnD,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACtC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,sBAAsB,EAAE,GAAG,EAAE,CACpF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CACpC,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,IAAI,YAAY;YACd,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC,mBAAmB;gBAC7E,KAAK,EAAE,QAAQ,IAAI,qCAAqC;gBACxD,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,oCAAoC,EAAE,GAAG,EAAE,CAClG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CACf,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;IACP,CAAC;SAAM,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,0EAA0E;SAClF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR;YACE,GAAG,EAAE,gBAAgB;YACrB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC,qBAAqB;YACjF,KAAK,EAAE,SAAS,IAAI,oFAAoF;YACxG,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,4CAA4C,CAAC,CAAC;YACjI,CAAC;SACF,EACD;YACE,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC,iBAAiB;YACzE,KAAK,EAAE,SAAS,IAAI,+EAA+E;YACnG,OAAO,EAAE,UAAU;SACpB,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,aAAa;YAC1D,KAAK,EAAE,SAAS,IAAI,+EAA+E;YACnG,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC;QACT,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,OAAO;QACd,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,KAAK,EAAE,OAAO,IAAI,8DAA8D;QAChF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;KACvC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,IAAI,CAAC,OAAe,EAAE,IAAgB,EAAE,WAAoB;IACnE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;QACrB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAgC,EAChC,MAAmC;IAEnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,WAAW,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAC/E,OAAO;QACL,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QACrB,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;QACpC,GAAG,MAAM;QACT,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;KACnB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAmB;IACtD,OAAO,kBAAU,IAAI,EAAE,SAAS,EAAC,aAAa,cAAW,MAAM,CAAC,GAAG,CAAC,iBAAc,MAAM,GAAG,CAAC;AAC9F,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAA+B;IACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CACL,KAAC,OAAO,OAAK,IAAI,EAAE,OAAO,EAAE,SAAS,KAAK,EAAE,YAC1C,eAAM,SAAS,EAAC,cAAc,EAAC,IAAI,EAAC,KAAK,gBAAa,SAAS,KAAK,EAAE,YACnE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC7B,KAAC,MAAM,IAAW,GAAG,EAAE,GAAG,IAAb,GAAG,CAAc,CAC/B,CAAC,GACG,GACC,CACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAU,EACV,GAAG,IAAI,EAIR;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,gBAAiB,SAAS,EAAC,cAAc,qBAClC,GAAG,EACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACvB,gBAAgB,SAAS,EAAC,cAAc,aACtC,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,GAAI,EACnB,GAAG,KAFK,GAAG,CAGP,CACR,CAAC,KAPM,MAAM,CAQT,CACR,CAAC;IACJ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,gBAAiB,SAAS,EAAC,cAAc,uBAChC,GAAG,EACT,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACvB,gBAAgB,SAAS,EAAC,cAAc,aACtC,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,GAAI,EACnB,GAAG,KAFK,GAAG,CAGP,CACR,CAAC,KAPM,MAAM,CAQT,CACR,CAAC;IACJ,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,eAAmB,SAAS,EAAC,cAAc,gCAAjC,QAAQ,CAA+C,CAAC,CAAC;IAEpG,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAE,EAAE;QACvC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxD,UAAU,CACR,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CACvG,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,kBACM,IAAI,EACR,SAAS,EAAC,eAAe,EACzB,IAAI,EAAC,SAAS,gBACH,6BAA6B,EACxC,aAAa,EAAE,IAAI,aAEnB,KAAC,cAAc,IACb,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAC,+BAA+B,EACvC,OAAO,EAAE,IAAI,YAEZ,KAAK,GACS,EACjB,KAAC,cAAc,IACb,SAAS,EAAC,qBAAqB,EAC/B,OAAO,EACL,KAAK,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;oBACzC,CAAC,CAAC,gCAAgC;oBAClC,CAAC,CAAC,yBAAyB,EAE/B,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,eAAe,CAAC,KAAK,CAAC;wBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;;wBAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,YAEA,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAC3B,IACb,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -22,6 +22,8 @@ export interface FolderView {
|
|
|
22
22
|
tags: readonly TagCount[];
|
|
23
23
|
/** Whether "Hide on this device" is offered — false when the device half is not kept. */
|
|
24
24
|
deviceHiding: boolean;
|
|
25
|
+
/** Whether a folder's menu offers "Tags…" — false when the app tags what is IN a folder instead. */
|
|
26
|
+
tagging: boolean;
|
|
25
27
|
/** Which of the two lists hide this folder, if any. */
|
|
26
28
|
hiddenIn: (id: string) => HiddenScope | null;
|
|
27
29
|
/** Hide these folders — everywhere unless `scope: 'device'`. */
|
|
@@ -75,6 +77,14 @@ export interface UseFolderViewOptions {
|
|
|
75
77
|
* `'memory'` is this page only, for an app whose folder ids may not be written to disk.
|
|
76
78
|
*/
|
|
77
79
|
device?: 'local' | 'memory';
|
|
80
|
+
/**
|
|
81
|
+
* `false` takes "Tags…" off a folder's menu, for an app whose folder tags belong on what the
|
|
82
|
+
* folder holds — music, where the owner wanted *"the tags to add on a folder [to] apply to all
|
|
83
|
+
* the tracks in the folder instead of applying to the folder"* (forge task 3813). The app puts
|
|
84
|
+
* its own item on the folder's `rowMenu`; the dots of marks already kept still draw, so it can
|
|
85
|
+
* carry them across. Default `true`.
|
|
86
|
+
*/
|
|
87
|
+
tagging?: boolean;
|
|
78
88
|
}
|
|
79
89
|
/** The marks, kept by the app — see {@link UseFolderViewOptions.store}. */
|
|
80
90
|
export interface FolderMarksStore {
|
|
@@ -82,5 +92,5 @@ export interface FolderMarksStore {
|
|
|
82
92
|
marks: string | null;
|
|
83
93
|
write: (next: string | null) => void;
|
|
84
94
|
}
|
|
85
|
-
export declare function useFolderView({ key, store, device }: UseFolderViewOptions): FolderView;
|
|
95
|
+
export declare function useFolderView({ key, store, device, tagging }: UseFolderViewOptions): FolderView;
|
|
86
96
|
//# sourceMappingURL=useFolderView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderView.d.ts","sourceRoot":"","sources":["../../../src/react/file-tree/useFolderView.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAShB,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AAEzB,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,iEAAiE;AACjE,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,eAAe,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzE,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,yCAAyC;IACzC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC1B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;IAE7C,gEAAgE;IAChE,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,+EAA+E;IAC/E,MAAM,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,qDAAqD;IACrD,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,iCAAiC;IACjC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAEvD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,mGAAmG;IACnG,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,yDAAyD;IACzD,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5C,6FAA6F;IAC7F,aAAa,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACtE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CAClG;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"useFolderView.d.ts","sourceRoot":"","sources":["../../../src/react/file-tree/useFolderView.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
33
33
|
import { useRememberedPreference } from '../media-gallery/rememberedPreference.js';
|
|
34
34
|
import { hiddenScope, normalizeTag, parseFolderMarks, parseFolderViewLocal, serializeFolderMarks, setFolderTags, setHidden, setTagFilter, tagCounts, toggleFolderTag, } from './folderView.js';
|
|
35
|
-
export function useFolderView({ key, store, device = 'local' }) {
|
|
35
|
+
export function useFolderView({ key, store, device = 'local', tagging = true }) {
|
|
36
36
|
// Hooks run unconditionally; an undefined key is the remembered preference that keeps nothing.
|
|
37
37
|
const [rememberedMarks, rememberMarks] = useRememberedPreference(store ? undefined : key);
|
|
38
38
|
const [rememberedLocal, rememberLocal] = useRememberedPreference(device === 'local' ? `${key}:device` : undefined, { announce: false });
|
|
@@ -78,6 +78,7 @@ export function useFolderView({ key, store, device = 'local' }) {
|
|
|
78
78
|
local,
|
|
79
79
|
tags,
|
|
80
80
|
deviceHiding,
|
|
81
|
+
tagging,
|
|
81
82
|
hiddenIn: (id) => hiddenScope(marks, local, id),
|
|
82
83
|
hide: (ids, options) => {
|
|
83
84
|
if (options?.scope === 'device' && deviceHiding)
|
|
@@ -115,6 +116,6 @@ export function useFolderView({ key, store, device = 'local' }) {
|
|
|
115
116
|
openTagEditor: (ids, at) => setPanel({ kind: 'tags', at: at ?? null, ids }),
|
|
116
117
|
closePanel: () => setPanel(null),
|
|
117
118
|
onContextMenu,
|
|
118
|
-
}), [marks, local, tags, deviceHiding, panel, saveMarks, saveLocal, onContextMenu]);
|
|
119
|
+
}), [marks, local, tags, deviceHiding, tagging, panel, saveMarks, saveLocal, onContextMenu]);
|
|
119
120
|
}
|
|
120
121
|
//# sourceMappingURL=useFolderView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderView.js","sourceRoot":"","sources":["../../../src/react/file-tree/useFolderView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAIL,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,YAAY,EAEZ,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useFolderView.js","sourceRoot":"","sources":["../../../src/react/file-tree/useFolderView.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,13 @@
|
|
|
13
13
|
* reach;
|
|
14
14
|
* - **a `separator` role with real `aria-value*`**, the ARIA splitter pattern;
|
|
15
15
|
* - **double-click resets** to the rail's own default width, and forgets the stored one;
|
|
16
|
-
* - remembered on RELEASE — a drag is one decision, not sixty writes a second
|
|
16
|
+
* - remembered on RELEASE — a drag is one decision, not sixty writes a second;
|
|
17
|
+
* - 🔴 **no wall** (the owner, 2026-10-27): the drag reaches the far side of the row the rail
|
|
18
|
+
* shares, and below half of `MIN_RAIL_PX` the rail SHUTS — `lib/paneReach.ts`, the rule every
|
|
19
|
+
* cursedbelt divider obeys. A shut rail draws nothing but its handle, at the edge, to drag back.
|
|
17
20
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
21
|
+
* Storage is `railWidth.ts`, so the width is announced through `preferenceSync` like every other
|
|
22
|
+
* viewer preference.
|
|
20
23
|
*/
|
|
21
24
|
import type { CSSProperties, KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent, RefObject } from 'react';
|
|
22
25
|
export interface UseRailResizeOptions {
|
|
@@ -32,9 +35,15 @@ export interface RailResize<E extends HTMLElement = HTMLElement> {
|
|
|
32
35
|
railRef: RefObject<E | null>;
|
|
33
36
|
/** Whether a handle is drawn: a `resizeKey` was given and `enabled` is true. */
|
|
34
37
|
active: boolean;
|
|
35
|
-
/** The dragged width in px, or `null` for "the rail's own default width". Null while inactive. */
|
|
38
|
+
/** The dragged width in px (0 = shut), or `null` for "the rail's own default width". Null while inactive. */
|
|
36
39
|
width: number | null;
|
|
37
|
-
/**
|
|
40
|
+
/** Dragged all the way shut. The rail must then draw nothing but the handle — `style` does it. */
|
|
41
|
+
shut: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Spread onto the rail's `style` — `undefined` at the default width. 🔴 Spread ALL of it, not
|
|
44
|
+
* just `width`: a shut rail is also borderless and `visibility: hidden` (its content would
|
|
45
|
+
* otherwise spill out of a zero-wide box), and a wide one is held to its row by `maxWidth`.
|
|
46
|
+
*/
|
|
38
47
|
style: CSSProperties | undefined;
|
|
39
48
|
/** Forget the dragged width (what a double-click on the handle does). */
|
|
40
49
|
reset: () => void;
|
|
@@ -45,6 +54,8 @@ export interface RailResize<E extends HTMLElement = HTMLElement> {
|
|
|
45
54
|
onKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;
|
|
46
55
|
/** The rail's current rendered width, for `aria-valuenow` before any drag. */
|
|
47
56
|
measure: () => number;
|
|
57
|
+
/** The width of the row the rail shares — how far it can grow. */
|
|
58
|
+
room: () => number;
|
|
48
59
|
};
|
|
49
60
|
}
|
|
50
61
|
export declare function useRailResize<E extends HTMLElement = HTMLElement>({ resizeKey, label, enabled, }: UseRailResizeOptions): RailResize<E>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"railResize.d.ts","sourceRoot":"","sources":["../../../src/react/filter-rail/railResize.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"railResize.d.ts","sourceRoot":"","sources":["../../../src/react/filter-rail/railResize.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,IAAI,kBAAkB,EAAE,YAAY,IAAI,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM9H,MAAM,WAAW,oBAAoB;IACnC,yFAAyF;IACzF,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC7D,wEAAwE;IACxE,OAAO,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,6GAA6G;IAC7G,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kGAAkG;IAClG,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,yEAAyE;IACzE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;QAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;QAC5D,8EAA8E;QAC9E,OAAO,EAAE,MAAM,MAAM,CAAC;QACtB,kEAAkE;QAClE,IAAI,EAAE,MAAM,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACjE,SAAS,EACT,KAAK,EACL,OAAc,GACf,EAAE,oBAAoB,GAAG,UAAU,CAAC,CAAC,CAAC,CAsEtC;AAWD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCA2BtG"}
|
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useRef, useState } from 'react';
|
|
3
3
|
import { cn } from '../lib/cn.js';
|
|
4
|
-
import {
|
|
4
|
+
import { reachSize, stepSize } from '../lib/paneReach.js';
|
|
5
|
+
import { MIN_RAIL_PX, readRailWidth, writeRailWidth } from './railWidth.js';
|
|
5
6
|
export function useRailResize({ resizeKey, label, enabled = true, }) {
|
|
6
7
|
const railRef = useRef(null);
|
|
7
8
|
const [dragged, setDragged] = useState(() => (resizeKey ? readRailWidth(resizeKey) : null));
|
|
8
9
|
const active = Boolean(resizeKey) && enabled;
|
|
9
10
|
const measure = useCallback(() => railRef.current?.getBoundingClientRect().width ?? MIN_RAIL_PX, []);
|
|
11
|
+
// The row the rail shares with the page it navigates. A box with no layout (a test DOM, a hidden
|
|
12
|
+
// tab) measures 0, so the window stands in — never 0, which would make every width "shut".
|
|
13
|
+
const room = useCallback(() => {
|
|
14
|
+
const row = railRef.current?.parentElement?.getBoundingClientRect().width ?? 0;
|
|
15
|
+
return row > 0 ? row : globalThis.innerWidth || MIN_RAIL_PX * 4;
|
|
16
|
+
}, []);
|
|
10
17
|
const onPointerDown = useCallback((event) => {
|
|
11
18
|
if (!resizeKey || event.button !== 0)
|
|
12
19
|
return;
|
|
13
20
|
const handle = event.currentTarget;
|
|
14
21
|
const startX = event.clientX;
|
|
15
22
|
const startWidth = measure();
|
|
23
|
+
const total = room();
|
|
16
24
|
let latest = startWidth;
|
|
17
25
|
handle.setPointerCapture?.(event.pointerId);
|
|
18
26
|
const move = (moveEvent) => {
|
|
19
|
-
latest =
|
|
27
|
+
latest = Math.round(reachSize(startWidth + moveEvent.clientX - startX, MIN_RAIL_PX, total));
|
|
20
28
|
setDragged(latest);
|
|
21
29
|
};
|
|
22
30
|
const end = () => {
|
|
@@ -31,7 +39,7 @@ export function useRailResize({ resizeKey, label, enabled = true, }) {
|
|
|
31
39
|
handle.addEventListener('pointerup', end);
|
|
32
40
|
handle.addEventListener('pointercancel', end);
|
|
33
41
|
event.preventDefault();
|
|
34
|
-
}, [resizeKey, measure]);
|
|
42
|
+
}, [resizeKey, measure, room]);
|
|
35
43
|
const onKeyDown = useCallback((event) => {
|
|
36
44
|
if (!resizeKey)
|
|
37
45
|
return;
|
|
@@ -40,25 +48,35 @@ export function useRailResize({ resizeKey, label, enabled = true, }) {
|
|
|
40
48
|
if (!delta)
|
|
41
49
|
return;
|
|
42
50
|
event.preventDefault();
|
|
43
|
-
const next =
|
|
51
|
+
const next = Math.round(stepSize(dragged ?? measure(), delta, MIN_RAIL_PX, room()));
|
|
44
52
|
setDragged(next);
|
|
45
53
|
writeRailWidth(resizeKey, next);
|
|
46
|
-
}, [resizeKey, dragged, measure]);
|
|
54
|
+
}, [resizeKey, dragged, measure, room]);
|
|
47
55
|
const reset = useCallback(() => {
|
|
48
56
|
setDragged(null);
|
|
49
57
|
if (resizeKey)
|
|
50
58
|
writeRailWidth(resizeKey, null);
|
|
51
59
|
}, [resizeKey]);
|
|
52
60
|
const width = active ? dragged : null;
|
|
61
|
+
const shut = width === 0;
|
|
53
62
|
return {
|
|
54
63
|
railRef,
|
|
55
64
|
active,
|
|
56
65
|
width,
|
|
57
|
-
|
|
66
|
+
shut,
|
|
67
|
+
style: width === null ? undefined : shut ? SHUT_STYLE : { width, maxWidth: '100%' },
|
|
58
68
|
reset,
|
|
59
|
-
handle: { label, onPointerDown, onKeyDown, measure },
|
|
69
|
+
handle: { label, onPointerDown, onKeyDown, measure, room },
|
|
60
70
|
};
|
|
61
71
|
}
|
|
72
|
+
/** A shut rail: no width, no padding (a padded box is never narrower than its padding), no border,
|
|
73
|
+
* and nothing drawn but the handle, which opts back in. `overflow: visible`, because a rail that
|
|
74
|
+
* scrolls itself (`overflow-y-auto`) would clip its handle out of a zero-wide box — still in the
|
|
75
|
+
* DOM, never under the pointer; its content is hidden by `visibility` instead. */
|
|
76
|
+
const SHUT_STYLE = { width: 0, minWidth: 0, padding: 0, borderRightWidth: 0, overflow: 'visible', visibility: 'hidden' };
|
|
77
|
+
/** The shut rail's handle: visible again, and wholly on the page side of the edge, so all 12px of
|
|
78
|
+
* it can be grabbed even when the rail sits against the window's edge. */
|
|
79
|
+
const SHUT_HANDLE_STYLE = { visibility: 'visible', right: -12 };
|
|
62
80
|
/**
|
|
63
81
|
* The handle itself — a 12px hotspot centered on the rail's right border. The RAIL must be
|
|
64
82
|
* `position: relative` (the handle is absolutely positioned against it). Renders nothing while
|
|
@@ -70,8 +88,8 @@ export function useRailResize({ resizeKey, label, enabled = true, }) {
|
|
|
70
88
|
export function RailResizeHandle({ rail, className, ...rest }) {
|
|
71
89
|
if (!rail.active)
|
|
72
90
|
return null;
|
|
73
|
-
const { label, onPointerDown, onKeyDown, measure } = rail.handle;
|
|
74
|
-
return (_jsx("div", { ...rest, role: 'separator', "aria-orientation": 'vertical', "aria-label": `Resize ${label}`, "aria-valuemin":
|
|
91
|
+
const { label, onPointerDown, onKeyDown, measure, room } = rail.handle;
|
|
92
|
+
return (_jsx("div", { ...rest, role: 'separator', "aria-orientation": 'vertical', "aria-label": `Resize ${label}`, "aria-valuemin": 0, "aria-valuemax": Math.round(room()), "aria-valuenow": Math.round(rail.width ?? measure()), ...(rail.shut ? { style: SHUT_HANDLE_STYLE } : {}), tabIndex: 0, "data-cb-rail-resize": '', onPointerDown: onPointerDown, onKeyDown: onKeyDown, onDoubleClick: rail.reset,
|
|
75
93
|
// A 1px edge you cannot hit is not a handle: the hotspot is 12px, centred on the border,
|
|
76
94
|
// and only the hairline tints — no layout shift, like `PanelSeparator`.
|
|
77
95
|
className: cn('absolute inset-y-0 -right-1.5 z-20 w-3 cursor-col-resize touch-none bg-transparent transition-colors hover:bg-accent/20 active:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', className) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"railResize.js","sourceRoot":"","sources":["../../../src/react/filter-rail/railResize.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"railResize.js","sourceRoot":"","sources":["../../../src/react/filter-rail/railResize.tsx"],"names":[],"mappings":";AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAwC5E,MAAM,UAAU,aAAa,CAAsC,EACjE,SAAS,EACT,KAAK,EACL,OAAO,GAAG,IAAI,GACO;IACrB,MAAM,OAAO,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3G,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,KAAK,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC;IACrG,iGAAiG;IACjG,2FAA2F;IAC3F,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/E,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,WAAW,GAAG,CAAC,CAAC;IAClE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAqC,EAAE,EAAE;QACxC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,UAAU,CAAC;QACxB,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,SAAuB,EAAE,EAAE;YACvC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,GAAG,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5F,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/F,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACjD,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC,EACD,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC3B,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,KAAsC,EAAE,EAAE;QACzC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,EACD,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CACpC,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,SAAS;YAAE,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;IACzB,OAAO;QACL,OAAO;QACP,MAAM;QACN,KAAK;QACL,IAAI;QACJ,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QACnF,KAAK;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3D,CAAC;AACJ,CAAC;AAED;;;mFAGmF;AACnF,MAAM,UAAU,GAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxI;2EAC2E;AAC3E,MAAM,iBAAiB,GAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAA4C;IACrG,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACvE,OAAO,CAEL,iBACM,IAAI,EACR,IAAI,EAAC,WAAW,sBACC,UAAU,gBACf,UAAU,KAAK,EAAE,mBACd,CAAC,mBACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,mBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,KAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACnD,QAAQ,EAAE,CAAC,yBACS,EAAE,EACtB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,yFAAyF;QACzF,wEAAwE;QACxE,SAAS,EAAE,EAAE,CACX,kNAAkN,EAClN,SAAS,CACV,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Narrower than this and a row is an icon and an ellipsis — so it is the SNAP, not a floor:
|
|
3
|
+
* dragged below half of it the rail shuts (width 0), between half and all of it it holds here
|
|
4
|
+
* (`lib/paneReach.ts`). There is no maximum: the owner, 2026-10-27, *"let me drag them as far as
|
|
5
|
+
* I want including shutting a pane completely"* — a rail grows until the page beside it is shut.
|
|
6
|
+
*/
|
|
2
7
|
export declare const MIN_RAIL_PX = 160;
|
|
3
|
-
/**
|
|
4
|
-
|
|
8
|
+
/** A width as stored: whole pixels, and snapped at the bottom like a drag (0 is a shut rail), so a
|
|
9
|
+
* sliver written by an older build or by hand is never drawn. No top — `maxWidth` holds it to its row. */
|
|
5
10
|
export declare const clampRailWidth: (px: number) => number;
|
|
6
|
-
/** The remembered width, or null for "the rail's default". Wrapped: `localStorage`
|
|
7
|
-
* a sandboxed iframe and in Safari's private mode. */
|
|
11
|
+
/** The remembered width (0 = shut), or null for "the rail's default". Wrapped: `localStorage`
|
|
12
|
+
* throws in a sandboxed iframe and in Safari's private mode. */
|
|
8
13
|
export declare function readRailWidth(key: string): number | null;
|
|
9
14
|
/** Remember it, or forget it (`null` — the double-click reset). */
|
|
10
15
|
export declare function writeRailWidth(key: string, width: number | null): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"railWidth.d.ts","sourceRoot":"","sources":["../../../src/react/filter-rail/railWidth.ts"],"names":[],"mappings":"AAeA
|
|
1
|
+
{"version":3,"file":"railWidth.d.ts","sourceRoot":"","sources":["../../../src/react/filter-rail/railWidth.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;2GAC2G;AAC3G,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MACsB,CAAC;AAEnE;iEACiE;AACjE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASxD;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAStE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* How wide the person dragged a sidebar — the pure half, so the
|
|
2
|
+
* How wide the person dragged a sidebar — the pure half, so the storage is testable without a
|
|
3
3
|
* pointer.
|
|
4
4
|
*
|
|
5
5
|
* Owner, 2026-09-24: *"the cb filetree sidebars should allow grabbing their right edge and
|
|
@@ -12,20 +12,25 @@
|
|
|
12
12
|
* the width to every device like the rest of them.
|
|
13
13
|
*/
|
|
14
14
|
import { announcePreference } from '../media-gallery/preferenceBus.js';
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Narrower than this and a row is an icon and an ellipsis — so it is the SNAP, not a floor:
|
|
17
|
+
* dragged below half of it the rail shuts (width 0), between half and all of it it holds here
|
|
18
|
+
* (`lib/paneReach.ts`). There is no maximum: the owner, 2026-10-27, *"let me drag them as far as
|
|
19
|
+
* I want including shutting a pane completely"* — a rail grows until the page beside it is shut.
|
|
20
|
+
*/
|
|
16
21
|
export const MIN_RAIL_PX = 160;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
export const clampRailWidth = (px) => Math.round(Math.
|
|
20
|
-
/** The remembered width, or null for "the rail's default". Wrapped: `localStorage`
|
|
21
|
-
* a sandboxed iframe and in Safari's private mode. */
|
|
22
|
+
/** A width as stored: whole pixels, and snapped at the bottom like a drag (0 is a shut rail), so a
|
|
23
|
+
* sliver written by an older build or by hand is never drawn. No top — `maxWidth` holds it to its row. */
|
|
24
|
+
export const clampRailWidth = (px) => px < MIN_RAIL_PX / 2 ? 0 : Math.round(Math.max(MIN_RAIL_PX, px));
|
|
25
|
+
/** The remembered width (0 = shut), or null for "the rail's default". Wrapped: `localStorage`
|
|
26
|
+
* throws in a sandboxed iframe and in Safari's private mode. */
|
|
22
27
|
export function readRailWidth(key) {
|
|
23
28
|
try {
|
|
24
29
|
const raw = globalThis.localStorage?.getItem(key);
|
|
25
30
|
if (raw == null)
|
|
26
31
|
return null;
|
|
27
32
|
const stored = Number(raw);
|
|
28
|
-
return Number.isFinite(stored) && stored
|
|
33
|
+
return raw.trim() !== '' && Number.isFinite(stored) && stored >= 0 ? clampRailWidth(stored) : null;
|
|
29
34
|
}
|
|
30
35
|
catch {
|
|
31
36
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"railWidth.js","sourceRoot":"","sources":["../../../src/react/filter-rail/railWidth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE
|
|
1
|
+
{"version":3,"file":"railWidth.js","sourceRoot":"","sources":["../../../src/react/filter-rail/railWidth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B;2GAC2G;AAC3G,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAU,EAAE,CACnD,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;AAEnE;iEACiE;AACjE,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAoB;IAC9D,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,IAAI,KAAK,KAAK,IAAI;YAAE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;;YACxD,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IACD,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -21,7 +21,16 @@
|
|
|
21
21
|
* document listener can read it as a press outside the menu that just opened and shut it;
|
|
22
22
|
* · `-webkit-touch-callout: none` while bound, so iOS does not put its own callout on top;
|
|
23
23
|
* · a press inside `ignore` (a selector) is not a hold — the file tree's grip, where a finger
|
|
24
|
-
* that stays down is about to drag
|
|
24
|
+
* that stays down is about to drag;
|
|
25
|
+
* · 🔴 a press that ENDED is never a hold, wherever its end was heard. The owner, 2026-10-27, on
|
|
26
|
+
* music: *"clicking open folder is blocking the view with a popup that says 'Show hidden
|
|
27
|
+
* folders' and 'Collapse all folders' … clicking a folder to open or close it should not
|
|
28
|
+
* popup a menu."* A tap that opens a folder re-renders what was under the finger, and a lift
|
|
29
|
+
* can then reach a node that is gone, or an element that captured the pointer, without ever
|
|
30
|
+
* bubbling through the bound one — so the timer outlived the tap and fired the heading's view
|
|
31
|
+
* menu half a second later. So while a hold is pending the lift, the cancel, a scroll and the
|
|
32
|
+
* tap's own `click` are heard at the WINDOW, and the hold fires only if what was pressed is
|
|
33
|
+
* still under the finger (a layout that moved under a resting finger is not a hold on it).
|
|
25
34
|
*/
|
|
26
35
|
/** How long a finger must stay down — iOS's own long-press duration. */
|
|
27
36
|
export declare const LONG_PRESS_MS = 500;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"longPressContextMenu.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/longPressContextMenu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"longPressContextMenu.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/longPressContextMenu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAOH,wEAAwE;AACxE,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAIpC,8DAA8D;AAC9D,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EACpB,EAAE,OAAuB,EAAE,MAAM,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9E,MAAM,IAAI,CAuHZ"}
|
|
@@ -21,7 +21,16 @@
|
|
|
21
21
|
* document listener can read it as a press outside the menu that just opened and shut it;
|
|
22
22
|
* · `-webkit-touch-callout: none` while bound, so iOS does not put its own callout on top;
|
|
23
23
|
* · a press inside `ignore` (a selector) is not a hold — the file tree's grip, where a finger
|
|
24
|
-
* that stays down is about to drag
|
|
24
|
+
* that stays down is about to drag;
|
|
25
|
+
* · 🔴 a press that ENDED is never a hold, wherever its end was heard. The owner, 2026-10-27, on
|
|
26
|
+
* music: *"clicking open folder is blocking the view with a popup that says 'Show hidden
|
|
27
|
+
* folders' and 'Collapse all folders' … clicking a folder to open or close it should not
|
|
28
|
+
* popup a menu."* A tap that opens a folder re-renders what was under the finger, and a lift
|
|
29
|
+
* can then reach a node that is gone, or an element that captured the pointer, without ever
|
|
30
|
+
* bubbling through the bound one — so the timer outlived the tap and fired the heading's view
|
|
31
|
+
* menu half a second later. So while a hold is pending the lift, the cancel, a scroll and the
|
|
32
|
+
* tap's own `click` are heard at the WINDOW, and the hold fires only if what was pressed is
|
|
33
|
+
* still under the finger (a layout that moved under a resting finger is not a hold on it).
|
|
25
34
|
*/
|
|
26
35
|
/*
|
|
27
36
|
* 🔴 No runtime import, React's included: a rail heading loads this module LAZILY (forge task
|
|
@@ -44,11 +53,34 @@ export function bindLongPressContextMenu(element, { delayMs = LONG_PRESS_MS, ign
|
|
|
44
53
|
/** Until when a native `contextmenu` and a `click` are the aftermath of OUR menu. */
|
|
45
54
|
let firedUntil = 0;
|
|
46
55
|
let dispatching = false;
|
|
56
|
+
/** The window-wide ears of a pending hold — bound at the press, dropped with the timer. */
|
|
57
|
+
const onWindowEnd = (event) => {
|
|
58
|
+
// Another finger lifting is not this press ending.
|
|
59
|
+
const id = event.pointerId;
|
|
60
|
+
if (id !== undefined && id !== pointerId)
|
|
61
|
+
return;
|
|
62
|
+
cancel();
|
|
63
|
+
};
|
|
64
|
+
const onWindowTap = () => cancel();
|
|
65
|
+
const listen = (on) => {
|
|
66
|
+
const method = on ? 'addEventListener' : 'removeEventListener';
|
|
67
|
+
window[method]('pointerup', onWindowEnd, true);
|
|
68
|
+
window[method]('pointercancel', onWindowEnd, true);
|
|
69
|
+
window[method]('click', onWindowTap, true);
|
|
70
|
+
window[method]('scroll', onWindowTap, true);
|
|
71
|
+
};
|
|
47
72
|
const cancel = () => {
|
|
48
|
-
if (timer !== undefined)
|
|
73
|
+
if (timer !== undefined) {
|
|
49
74
|
clearTimeout(timer);
|
|
75
|
+
listen(false);
|
|
76
|
+
}
|
|
50
77
|
timer = undefined;
|
|
51
78
|
};
|
|
79
|
+
/** Is what was pressed still what the finger rests on? `null` (no layout to ask) is a yes. */
|
|
80
|
+
const stillUnderFinger = (pressed) => {
|
|
81
|
+
const at = globalThis.document?.elementFromPoint?.(startX, startY);
|
|
82
|
+
return !at || pressed.contains(at) || at.contains(pressed);
|
|
83
|
+
};
|
|
52
84
|
const swallowClick = (event) => {
|
|
53
85
|
window.removeEventListener('click', swallowClick, true);
|
|
54
86
|
if (Date.now() > firedUntil)
|
|
@@ -58,7 +90,8 @@ export function bindLongPressContextMenu(element, { delayMs = LONG_PRESS_MS, ign
|
|
|
58
90
|
};
|
|
59
91
|
const fire = () => {
|
|
60
92
|
timer = undefined;
|
|
61
|
-
|
|
93
|
+
listen(false);
|
|
94
|
+
if (!(target instanceof Element) || !target.isConnected || !stillUnderFinger(target))
|
|
62
95
|
return;
|
|
63
96
|
firedUntil = Date.now() + AFTERMATH_MS;
|
|
64
97
|
window.addEventListener('click', swallowClick, true);
|
|
@@ -89,6 +122,7 @@ export function bindLongPressContextMenu(element, { delayMs = LONG_PRESS_MS, ign
|
|
|
89
122
|
startY = event.clientY;
|
|
90
123
|
target = event.target;
|
|
91
124
|
timer = setTimeout(fire, delayMs);
|
|
125
|
+
listen(true);
|
|
92
126
|
};
|
|
93
127
|
const onMove = (event) => {
|
|
94
128
|
if (timer === undefined || event.pointerId !== pointerId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"longPressContextMenu.js","sourceRoot":"","sources":["../../../src/react/hooks/longPressContextMenu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"longPressContextMenu.js","sourceRoot":"","sources":["../../../src/react/hooks/longPressContextMenu.ts"],"names":[],"mappings":"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"}
|