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.
Files changed (150) hide show
  1. package/dist/react/components/AppShell.js +6 -1
  2. package/dist/react/components/AppShell.js.map +1 -1
  3. package/dist/react/components/ConfirmDialog.d.ts.map +1 -1
  4. package/dist/react/components/ConfirmDialog.js +1 -1
  5. package/dist/react/components/ConfirmDialog.js.map +1 -1
  6. package/dist/react/components/PaneSplit.d.ts +11 -2
  7. package/dist/react/components/PaneSplit.d.ts.map +1 -1
  8. package/dist/react/components/PaneSplit.js +12 -11
  9. package/dist/react/components/PaneSplit.js.map +1 -1
  10. package/dist/react/components/PanelGrid.d.ts +14 -8
  11. package/dist/react/components/PanelGrid.d.ts.map +1 -1
  12. package/dist/react/components/PanelGrid.js +10 -3
  13. package/dist/react/components/PanelGrid.js.map +1 -1
  14. package/dist/react/components/SplitPane.d.ts +3 -9
  15. package/dist/react/components/SplitPane.d.ts.map +1 -1
  16. package/dist/react/components/SplitPane.js +0 -3
  17. package/dist/react/components/SplitPane.js.map +1 -1
  18. package/dist/react/components/TagsEditor.d.ts +15 -0
  19. package/dist/react/components/TagsEditor.d.ts.map +1 -0
  20. package/dist/react/components/TagsEditor.js +93 -0
  21. package/dist/react/components/TagsEditor.js.map +1 -0
  22. package/dist/react/components/TagsPromptDialog.d.ts +25 -0
  23. package/dist/react/components/TagsPromptDialog.d.ts.map +1 -0
  24. package/dist/react/components/TagsPromptDialog.js +38 -0
  25. package/dist/react/components/TagsPromptDialog.js.map +1 -0
  26. package/dist/react/components/paneSplit.css +8 -0
  27. package/dist/react/file-tree/FolderViewMenus.d.ts.map +1 -1
  28. package/dist/react/file-tree/FolderViewMenus.js +2 -0
  29. package/dist/react/file-tree/FolderViewMenus.js.map +1 -1
  30. package/dist/react/file-tree/useFolderView.d.ts +11 -1
  31. package/dist/react/file-tree/useFolderView.d.ts.map +1 -1
  32. package/dist/react/file-tree/useFolderView.js +3 -2
  33. package/dist/react/file-tree/useFolderView.js.map +1 -1
  34. package/dist/react/filter-rail/railResize.d.ts +16 -5
  35. package/dist/react/filter-rail/railResize.d.ts.map +1 -1
  36. package/dist/react/filter-rail/railResize.js +27 -9
  37. package/dist/react/filter-rail/railResize.js.map +1 -1
  38. package/dist/react/filter-rail/railWidth.d.ts +10 -5
  39. package/dist/react/filter-rail/railWidth.d.ts.map +1 -1
  40. package/dist/react/filter-rail/railWidth.js +13 -8
  41. package/dist/react/filter-rail/railWidth.js.map +1 -1
  42. package/dist/react/hooks/longPressContextMenu.d.ts +10 -1
  43. package/dist/react/hooks/longPressContextMenu.d.ts.map +1 -1
  44. package/dist/react/hooks/longPressContextMenu.js +37 -3
  45. package/dist/react/hooks/longPressContextMenu.js.map +1 -1
  46. package/dist/react/index.d.ts +4 -0
  47. package/dist/react/index.d.ts.map +1 -1
  48. package/dist/react/index.js +4 -0
  49. package/dist/react/index.js.map +1 -1
  50. package/dist/react/lib/paneReach.d.ts +36 -0
  51. package/dist/react/lib/paneReach.d.ts.map +1 -0
  52. package/dist/react/lib/paneReach.js +72 -0
  53. package/dist/react/lib/paneReach.js.map +1 -0
  54. package/dist/react/lib/tagList.d.ts +16 -0
  55. package/dist/react/lib/tagList.d.ts.map +1 -0
  56. package/dist/react/lib/tagList.js +30 -0
  57. package/dist/react/lib/tagList.js.map +1 -0
  58. package/dist/react/master-detail/MasterDetail.d.ts +6 -3
  59. package/dist/react/master-detail/MasterDetail.d.ts.map +1 -1
  60. package/dist/react/master-detail/MasterDetail.js +3 -2
  61. package/dist/react/master-detail/MasterDetail.js.map +1 -1
  62. package/dist/react/media/FocusViewer.d.ts +8 -1
  63. package/dist/react/media/FocusViewer.d.ts.map +1 -1
  64. package/dist/react/media/FocusViewer.js +10 -1
  65. package/dist/react/media/FocusViewer.js.map +1 -1
  66. package/dist/react/media/FrameGrabber.d.ts +3 -1
  67. package/dist/react/media/FrameGrabber.d.ts.map +1 -1
  68. package/dist/react/media/FrameGrabber.js +10 -5
  69. package/dist/react/media/FrameGrabber.js.map +1 -1
  70. package/dist/react/media/VideoChapterEditor.d.ts +3 -1
  71. package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
  72. package/dist/react/media/VideoChapterEditor.js +14 -6
  73. package/dist/react/media/VideoChapterEditor.js.map +1 -1
  74. package/dist/react/media/VideoCutEditor.d.ts +3 -1
  75. package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
  76. package/dist/react/media/VideoCutEditor.js +14 -6
  77. package/dist/react/media/VideoCutEditor.js.map +1 -1
  78. package/dist/react/media/VideoTurner.d.ts +3 -1
  79. package/dist/react/media/VideoTurner.d.ts.map +1 -1
  80. package/dist/react/media/VideoTurner.js +13 -5
  81. package/dist/react/media/VideoTurner.js.map +1 -1
  82. package/dist/react/media/hlsSource.d.ts +27 -0
  83. package/dist/react/media/hlsSource.d.ts.map +1 -1
  84. package/dist/react/media/hlsSource.js +39 -0
  85. package/dist/react/media/hlsSource.js.map +1 -1
  86. package/dist/react/media/videoEnhance.d.ts +1 -1
  87. package/dist/react/media/videoEnhance.js +1 -1
  88. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  89. package/dist/react/media-gallery/MediaGallery.js +4 -4
  90. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  91. package/dist/react/tagsPrompt.d.ts +15 -0
  92. package/dist/react/tagsPrompt.d.ts.map +1 -0
  93. package/dist/react/tagsPrompt.js +30 -0
  94. package/dist/react/tagsPrompt.js.map +1 -0
  95. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  96. package/dist/styles-areas/fields.css +4 -4
  97. package/dist/styles-areas/overlays.css +3 -2
  98. package/dist/styles-utilities.css +7 -0
  99. package/dist/testing/phoneRules.js +3 -3
  100. package/dist/testing/phoneRules.js.map +1 -1
  101. package/dist/theme.css +13 -0
  102. package/package.json +8 -1
  103. package/scripts/guardrailsEnforce.spec.ts +25 -0
  104. package/scripts/guardrailsEnforce.ts +61 -0
  105. package/scripts/styleAreas.ts +5 -0
  106. package/src/looks.spec.ts +34 -0
  107. package/src/react/components/AppShell.spec.tsx +23 -0
  108. package/src/react/components/AppShell.tsx +6 -1
  109. package/src/react/components/ConfirmDialog.spec.tsx +41 -0
  110. package/src/react/components/ConfirmDialog.tsx +12 -2
  111. package/src/react/components/PaneSplit.spec.tsx +26 -3
  112. package/src/react/components/PaneSplit.tsx +26 -13
  113. package/src/react/components/PanelGrid.tsx +16 -11
  114. package/src/react/components/SplitPane.spec.tsx +10 -5
  115. package/src/react/components/SplitPane.tsx +3 -12
  116. package/src/react/components/TagsEditor.tsx +140 -0
  117. package/src/react/components/TagsPromptDialog.spec.tsx +74 -0
  118. package/src/react/components/TagsPromptDialog.tsx +108 -0
  119. package/src/react/components/paneSplit.css +8 -0
  120. package/src/react/file-tree/FolderViewMenus.tsx +1 -0
  121. package/src/react/file-tree/folderViewTree.spec.tsx +15 -0
  122. package/src/react/file-tree/useFolderView.ts +13 -2
  123. package/src/react/filter-rail/FilterRail.spec.tsx +7 -3
  124. package/src/react/filter-rail/railResize.spec.tsx +27 -5
  125. package/src/react/filter-rail/railResize.tsx +46 -15
  126. package/src/react/filter-rail/railWidth.ts +13 -8
  127. package/src/react/hooks/longPressContextMenu.spec.ts +50 -0
  128. package/src/react/hooks/longPressContextMenu.ts +39 -3
  129. package/src/react/index.ts +4 -0
  130. package/src/react/lib/paneReach.spec.ts +58 -0
  131. package/src/react/lib/paneReach.ts +65 -0
  132. package/src/react/lib/tagList.spec.ts +19 -0
  133. package/src/react/lib/tagList.ts +29 -0
  134. package/src/react/master-detail/MasterDetail.tsx +10 -5
  135. package/src/react/media/FocusViewer.spec.tsx +19 -0
  136. package/src/react/media/FocusViewer.tsx +17 -0
  137. package/src/react/media/FrameGrabber.tsx +12 -5
  138. package/src/react/media/VideoChapterEditor.tsx +16 -6
  139. package/src/react/media/VideoCutEditor.tsx +17 -6
  140. package/src/react/media/VideoTurner.tsx +14 -5
  141. package/src/react/media/editorVideoSource.spec.tsx +71 -0
  142. package/src/react/media/hlsSource.ts +43 -0
  143. package/src/react/media/videoEnhance.ts +1 -1
  144. package/src/react/media-gallery/MediaGallery.tsx +4 -0
  145. package/src/react/tagsPrompt.tsx +33 -0
  146. package/src/styles-areas/fields.css +4 -4
  147. package/src/styles-areas/overlays.css +3 -2
  148. package/src/styles-utilities.css +7 -0
  149. package/src/testing/phoneRules.ts +2 -2
  150. 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":";AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAkBnE;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,GAAG,EAAE,EACjB,YAAY,GAAG,WAAW,EAC1B,WAAW,GAAG,QAAQ,EACtB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,IAAI,EACJ,GAAG,IAAI,EACe;IACtB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,GAAG,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAEpE,6HAA6H;IAC7H,MAAM,YAAY,GAAG,CAAC,OAAqB,EAAE,EAAE;QAC7C,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,GAAG,GAAG,OAAO,EAAE,aAAa,CAAmB,0BAA0B,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC9F,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxD,KAAK,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACD,IAAI,EACR,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,2BACQ,EAAE,EACtB,SAAS,EAAE,EAAE,CACX,6HAA6H,EAC7H,uFAAuF,EACvF,aAAa,EACb,SAAS,CACV,EACD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBAClB,CAAC,CAAC,aAAoC,EAAE,aAAa,CAAmB,0BAA0B,CAAC,EAAE,KAAK,EAAE,CAAC;YAChH,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBACf,qFAAqF;gBACrF,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClD,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,aAED,eAAK,SAAS,EAAC,uBAAuB,aACpC,KAAC,WAAW,IAAC,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAe,EACrE,OAAO,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,YAAE,OAAO,GAAqB,CAAC,CAAC,CAAC,IAAI,IACxG,EACN,KAAC,UAAU,IACT,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,OAAO,KACb,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACpC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACpC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAChC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1B,EACF,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,4BAAgB,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,YAClG,WAAW,GACL,EACT,KAAC,MAAM,6BAAiB,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,YAC7G,YAAY,GACN,IACL,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -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,CAkFpB;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
+ {"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"}
@@ -91,6 +91,8 @@ export function folderViewMenuItems(view, node, ids = [node.id], hiddenState = v
91
91
  onClick: everywhere,
92
92
  });
93
93
  }
94
+ if (!view.tagging)
95
+ return items;
94
96
  const current = view.marks.tags[node.id] ?? [];
95
97
  items.push({
96
98
  key: 'fv-tags',
@@ -1 +1 @@
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,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"}
1
+ {"version":3,"file":"FolderViewMenus.js","sourceRoot":"","sources":["../../../src/react/file-tree/FolderViewMenus.tsx"],"names":[],"mappings":"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"}
@@ -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":"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"}
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;AAiFzB,MAAM,UAAU,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAwB;IAClF,+FAA+F;IAC/F,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,uBAAuB,CAC9D,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAChD,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;IACF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;IACpE,MAAM,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAAiB,EAAE,EAAE;QACpB,IAAI,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IACF,4FAA4F;IAC5F,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAAqB,EAAE,EAAE;QACxB,IAAI,IAAI,KAAK,WAAW,CAAC,OAAO;YAAE,OAAO;QACzC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,MAAM,KAAK,GACT,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACnG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,KAAK,OAAO,CAAC;IAExC,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAuE,EAAE,EAAE;QAC5G,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,YAAY;QACZ,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACrB,IAAI,OAAO,EAAE,KAAK,KAAK,QAAQ,IAAI,YAAY;gBAAE,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;;gBACjG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACvB,IAAI,OAAO,EAAE,KAAK,KAAK,QAAQ;gBAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAClF,IAAI,OAAO,EAAE,KAAK,KAAK,YAAY;gBAAE,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACrC,mFAAmF;YACnF,qFAAqF;YACrF,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG;oBAAE,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACzD,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACzE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAChF,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjF,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/E,KAAK;QACL,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpD,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;QAC3E,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,aAAa;KACd,CAAC,EACF,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAC/E,CAAC;AACJ,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
- * Clamp and storage are `railWidth.ts`, so the width is announced through `preferenceSync`
19
- * like every other viewer preference.
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
- /** `{ width }` while there is a dragged width, else `undefined` — spread onto the rail's `style`. */
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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,IAAI,kBAAkB,EAAE,YAAY,IAAI,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK9H,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,kGAAkG;IAClG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qGAAqG;IACrG,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;KACvB,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,CA6DtC;AAED;;;;;;;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,sCA0BtG"}
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 { clampRailWidth, MAX_RAIL_PX, MIN_RAIL_PX, readRailWidth, writeRailWidth } from './railWidth.js';
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 = clampRailWidth(startWidth + moveEvent.clientX - startX);
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 = clampRailWidth((dragged ?? measure()) + delta);
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
- style: width === null ? undefined : { width },
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": MIN_RAIL_PX, "aria-valuemax": MAX_RAIL_PX, "aria-valuenow": Math.round(rail.width ?? measure()), tabIndex: 0, "data-cb-rail-resize": '', onPointerDown: onPointerDown, onKeyDown: onKeyDown, onDoubleClick: rail.reset,
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":"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"}
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
- /** Narrower than this and a row is an icon and an ellipsis. */
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
- /** Wider than this and the rail is eating the page it navigates. */
4
- export declare const MAX_RAIL_PX = 640;
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` throws in
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,+DAA+D;AAC/D,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,oEAAoE;AACpE,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MACkB,CAAC;AAE/D;uDACuD;AACvD,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
+ {"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 clamp is testable without a
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
- /** Narrower than this and a row is an icon and an ellipsis. */
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
- /** Wider than this and the rail is eating the page it navigates. */
18
- export const MAX_RAIL_PX = 640;
19
- export const clampRailWidth = (px) => Math.round(Math.min(MAX_RAIL_PX, Math.max(MIN_RAIL_PX, px)));
20
- /** The remembered width, or null for "the rail's default". Wrapped: `localStorage` throws in
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 > 0 ? clampRailWidth(stored) : null;
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,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAU,EAAE,CACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D;uDACuD;AACvD,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,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,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"}
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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;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,CA4FZ"}
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
- if (!(target instanceof Element) || !target.isConnected)
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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;GAIG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,2FAA2F;AAC3F,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,8DAA8D;AAC9D,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,EAAE,OAAO,GAAG,aAAa,EAAE,MAAM,KAA4C,EAAE;IAE/E,IAAI,KAAgD,CAAC;IACrD,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,qFAAqF;IACrF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;QACzC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU;YAAE,OAAO;QACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,GAAG,SAAS,CAAC;QAClB,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO;QAChE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;QACvC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACrD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QACxF,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,aAAa,CAClB,IAAI,UAAU,CAAC,aAAa,EAAE;gBAC5B,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,CAAC;aACV,CAAC,CACH,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE;QACrC,MAAM,EAAE,CAAC;QACT,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO;QAC9D,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,YAAY,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QACtF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC5B,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QACvB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QACvB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE;QACrC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,kBAAkB;YAAE,MAAM,EAAE,CAAC;IAChG,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAmB,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC;IAC9C,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;QACzC,IAAI,WAAW;YAAE,OAAO;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,CAAC,8DAA8D;YACxE,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC3D,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,GAAG,EAAE;QACV,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,eAAe;YAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;;YACpF,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"longPressContextMenu.js","sourceRoot":"","sources":["../../../src/react/hooks/longPressContextMenu.ts"],"names":[],"mappings":"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"}