cursedbelt 5.78.0 → 5.79.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/canvas-hud/HudControls.d.ts +8 -2
- package/dist/react/canvas-hud/HudControls.d.ts.map +1 -1
- package/dist/react/canvas-hud/HudControls.js +6 -3
- package/dist/react/canvas-hud/HudControls.js.map +1 -1
- package/dist/react/components/AppShell.d.ts +14 -0
- package/dist/react/components/AppShell.d.ts.map +1 -1
- package/dist/react/components/AppShell.js +7 -31
- package/dist/react/components/AppShell.js.map +1 -1
- package/dist/react/components/ChipFilterStrip.d.ts.map +1 -1
- package/dist/react/components/ChipFilterStrip.js +2 -18
- package/dist/react/components/ChipFilterStrip.js.map +1 -1
- package/dist/react/components/KanbanBoard.d.ts +55 -0
- package/dist/react/components/KanbanBoard.d.ts.map +1 -0
- package/dist/react/components/KanbanBoard.js +89 -0
- package/dist/react/components/KanbanBoard.js.map +1 -0
- package/dist/react/components/ResponsiveWorkbench.d.ts +14 -1
- package/dist/react/components/ResponsiveWorkbench.d.ts.map +1 -1
- package/dist/react/components/ResponsiveWorkbench.js +33 -4
- package/dist/react/components/ResponsiveWorkbench.js.map +1 -1
- package/dist/react/components/SelectField.d.ts +18 -48
- package/dist/react/components/SelectField.d.ts.map +1 -1
- package/dist/react/components/SelectField.js +88 -11
- package/dist/react/components/SelectField.js.map +1 -1
- package/dist/react/components/SelectFieldImpl.d.ts +7 -0
- package/dist/react/components/SelectFieldImpl.d.ts.map +1 -0
- package/dist/react/components/SelectFieldImpl.js +26 -0
- package/dist/react/components/SelectFieldImpl.js.map +1 -0
- package/dist/react/components/filterChip.d.ts +8 -0
- package/dist/react/components/filterChip.d.ts.map +1 -0
- package/dist/react/components/filterChip.js +20 -0
- package/dist/react/components/filterChip.js.map +1 -0
- package/dist/react/hooks/pointerDnd.d.ts +37 -3
- package/dist/react/hooks/pointerDnd.d.ts.map +1 -1
- package/dist/react/hooks/pointerDnd.js +101 -9
- package/dist/react/hooks/pointerDnd.js.map +1 -1
- package/dist/react/hooks/pragmaticDnd.d.ts +4 -1
- package/dist/react/hooks/pragmaticDnd.d.ts.map +1 -1
- package/dist/react/hooks/pragmaticDnd.js +9 -3
- package/dist/react/hooks/pragmaticDnd.js.map +1 -1
- package/dist/react/hooks/usePublishedBottomChrome.d.ts +12 -0
- package/dist/react/hooks/usePublishedBottomChrome.d.ts.map +1 -0
- package/dist/react/hooks/usePublishedBottomChrome.js +31 -0
- package/dist/react/hooks/usePublishedBottomChrome.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/lib/selectField.d.ts +72 -0
- package/dist/react/lib/selectField.d.ts.map +1 -0
- package/dist/react/lib/selectField.js +23 -0
- package/dist/react/lib/selectField.js.map +1 -0
- package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
- package/dist/react/media/VideoChapterEditor.js +2 -1
- package/dist/react/media/VideoChapterEditor.js.map +1 -1
- package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
- package/dist/react/media/VideoCutEditor.js +2 -1
- package/dist/react/media/VideoCutEditor.js.map +1 -1
- package/dist/react/media/denseGallery.css +2 -0
- package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +6 -7
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/media-gallery/MediaMetaEditor.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaMetaEditor.js +2 -1
- package/dist/react/media-gallery/MediaMetaEditor.js.map +1 -1
- package/dist/react/nav/CommandBar.d.ts.map +1 -1
- package/dist/react/nav/CommandBar.js +2 -1
- package/dist/react/nav/CommandBar.js.map +1 -1
- package/dist/react/palette/CommandPalette.d.ts +15 -1
- package/dist/react/palette/CommandPalette.d.ts.map +1 -1
- package/dist/react/palette/CommandPalette.js +58 -8
- package/dist/react/palette/CommandPalette.js.map +1 -1
- package/dist/react/palette/Kbd.d.ts +15 -0
- package/dist/react/palette/Kbd.d.ts.map +1 -0
- package/dist/react/palette/Kbd.js +17 -0
- package/dist/react/palette/Kbd.js.map +1 -0
- package/dist/react/palette/ShortcutSheet.d.ts +30 -0
- package/dist/react/palette/ShortcutSheet.d.ts.map +1 -0
- package/dist/react/palette/ShortcutSheet.js +15 -0
- package/dist/react/palette/ShortcutSheet.js.map +1 -0
- package/dist/react/palette/commandSources.d.ts +14 -0
- package/dist/react/palette/commandSources.d.ts.map +1 -1
- package/dist/react/palette/commandSources.js +11 -1
- package/dist/react/palette/commandSources.js.map +1 -1
- package/dist/react/palette/index.d.ts +4 -2
- package/dist/react/palette/index.d.ts.map +1 -1
- package/dist/react/palette/index.js +2 -0
- package/dist/react/palette/index.js.map +1 -1
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/canvas-hud.css +2 -2
- package/dist/styles-areas/kanban.css +31 -0
- package/dist/styles-areas/palette.css +3 -3
- package/dist/styles-areas/workbench.css +15 -13
- package/dist/styles-utilities.css +42 -0
- package/package.json +3 -2
- package/scripts/guardrails-baseline.json +2 -1
- package/scripts/guardrailsEnforce.spec.ts +62 -0
- package/scripts/guardrailsEnforce.ts +77 -6
- package/scripts/styleAreas.ts +2 -0
- package/src/react/canvas-hud/HudControls.spec.tsx +11 -0
- package/src/react/canvas-hud/HudControls.tsx +33 -9
- package/src/react/components/AppShell.spec.tsx +40 -0
- package/src/react/components/AppShell.tsx +25 -27
- package/src/react/components/ChipFilterStrip.tsx +2 -38
- package/src/react/components/KanbanBoard.spec.tsx +89 -0
- package/src/react/components/KanbanBoard.tsx +270 -0
- package/src/react/components/ResponsiveWorkbench.spec.tsx +57 -0
- package/src/react/components/ResponsiveWorkbench.tsx +69 -4
- package/src/react/components/SelectField.spec.tsx +117 -0
- package/src/react/components/SelectField.tsx +131 -166
- package/src/react/components/SelectFieldImpl.tsx +140 -0
- package/src/react/components/filterChip.tsx +43 -0
- package/src/react/hooks/pointerDnd.spec.ts +89 -3
- package/src/react/hooks/pointerDnd.ts +103 -8
- package/src/react/hooks/pragmaticDnd.ts +13 -2
- package/src/react/hooks/usePublishedBottomChrome.ts +30 -0
- package/src/react/hooks/useScrollMemory.spec.tsx +7 -5
- package/src/react/index.ts +3 -0
- package/src/react/lib/floatingStyles.spec.ts +1 -1
- package/src/react/lib/selectField.ts +96 -0
- package/src/react/media/VideoChapterEditor.tsx +3 -2
- package/src/react/media/VideoCutEditor.tsx +3 -2
- package/src/react/media/denseGallery.css +2 -0
- package/src/react/media-gallery/MediaGallery.spec.tsx +15 -11
- package/src/react/media-gallery/MediaGallery.tsx +16 -18
- package/src/react/media-gallery/MediaMetaEditor.tsx +2 -1
- package/src/react/nav/CommandBar.tsx +2 -3
- package/src/react/palette/CommandPalette.spec.tsx +73 -0
- package/src/react/palette/CommandPalette.tsx +153 -13
- package/src/react/palette/Kbd.tsx +46 -0
- package/src/react/palette/ShortcutSheet.spec.tsx +58 -0
- package/src/react/palette/ShortcutSheet.tsx +110 -0
- package/src/react/palette/commandSources.tsx +30 -1
- package/src/react/palette/index.ts +9 -0
- package/src/styles-areas/canvas-hud.css +2 -2
- package/src/styles-areas/kanban.css +31 -0
- package/src/styles-areas/palette.css +3 -3
- package/src/styles-areas/workbench.css +15 -13
- package/src/styles-utilities.css +42 -0
|
@@ -1,50 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export interface SelectGroup {
|
|
10
|
-
label?: string;
|
|
11
|
-
options: SelectOption[];
|
|
12
|
-
}
|
|
13
|
-
export interface SelectFieldProps {
|
|
14
|
-
value?: string;
|
|
15
|
-
onValueChange?: (value: string) => void;
|
|
16
|
-
options?: SelectOption[];
|
|
17
|
-
groups?: SelectGroup[];
|
|
18
|
-
placeholder?: string;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
/** Use the full field style (16px, rounded-md, border, focus ring). Default true. */
|
|
21
|
-
fieldStyle?: boolean;
|
|
22
|
-
/** Trigger height on the shared control-height scale (`--control-h-*`, task
|
|
23
|
-
* cbux-41). Default `md`. No-op when `fieldStyle={false}`. */
|
|
24
|
-
size?: ControlSize;
|
|
25
|
-
/** Forwarded to the trigger so a visible `<label htmlFor>` can target it. */
|
|
26
|
-
id?: string;
|
|
27
|
-
name?: string;
|
|
28
|
-
required?: boolean;
|
|
29
|
-
className?: string;
|
|
30
|
-
'aria-label'?: string;
|
|
31
|
-
'aria-labelledby'?: string;
|
|
32
|
-
/**
|
|
33
|
-
* What to say when there is nothing to choose — *"No lists yet"*.
|
|
34
|
-
*
|
|
35
|
-
* 🔴 Required in practice for any control whose options come from DATA rather than
|
|
36
|
-
* from a constant: an empty popup is a dead end that reads as a broken control, and
|
|
37
|
-
* the `choice-needs-empty-state` guardrail reports one. Rendered as plain text, not
|
|
38
|
-
* as an item, so it can never be picked or keyboard-focused.
|
|
39
|
-
*/
|
|
40
|
-
emptyLabel?: ReactNode;
|
|
41
|
-
/** The second line — what belongs in this list, or how to get one. */
|
|
42
|
-
emptyHint?: ReactNode;
|
|
43
|
-
/** Set by {@link Field} for inline validation — paints the field-token invalid
|
|
44
|
-
* border (via `aria-invalid`) and links the description/error to the trigger. */
|
|
45
|
-
'aria-invalid'?: boolean | 'true' | 'false';
|
|
46
|
-
'aria-describedby'?: string;
|
|
47
|
-
}
|
|
1
|
+
import { type ComponentType } from 'react';
|
|
2
|
+
import { type SelectFieldImplProps, type SelectFieldProps } from '../lib/selectField.js';
|
|
3
|
+
export type { SelectFieldProps, SelectGroup, SelectOption } from '../lib/selectField.js';
|
|
4
|
+
type SelectFieldImplComponent = ComponentType<SelectFieldImplProps>;
|
|
5
|
+
/** Fetch the Radix implementation once per page. Exported for tests and for a consumer that wants
|
|
6
|
+
* to warm it explicitly. */
|
|
7
|
+
export declare function preloadSelectField(): Promise<SelectFieldImplComponent>;
|
|
48
8
|
/**
|
|
49
9
|
* Portal-based select control on Radix Select. Replaces the native `<select>`
|
|
50
10
|
* wrapper. Fully styleable, keyboard-navigable, a11y-correct, and never clipped by
|
|
@@ -57,6 +17,16 @@ export interface SelectFieldProps {
|
|
|
57
17
|
* is true (the default for form fields), giving it the same control-height token +
|
|
58
18
|
* rounded-md as Input at the same `size`. Pass `fieldStyle={false}` + a `className`
|
|
59
19
|
* for a bespoke trigger.
|
|
20
|
+
*
|
|
21
|
+
* ── Why this file is a trigger and not the select ───────────────────────────
|
|
22
|
+
* 🔴 Radix Select (with its popper, focus scope and remove-scroll) is ~29 kB gzip, and a
|
|
23
|
+
* static import puts it in whatever chunk renders a field. In a lazy page that is a few kB;
|
|
24
|
+
* in an app's ENTRY it hoisted the Radix code a dozen lazy chunks had shared: music's library
|
|
25
|
+
* Sort by took `index-*.js` from 203 to 232 kB gzip and was reverted (forge task 3096). So the
|
|
26
|
+
* Radix select is `SelectFieldImpl`, a dynamic `import()`, and this file draws the same trigger
|
|
27
|
+
* box — same classes, `role="combobox"`, the chosen option's label, the chevron — until it
|
|
28
|
+
* lands. A press, Enter, Space or an arrow that beats the fetch is not lost: the real select
|
|
29
|
+
* mounts open; focus held on the light trigger moves to the real one.
|
|
60
30
|
*/
|
|
61
|
-
export declare function SelectField(
|
|
31
|
+
export declare function SelectField(props: SelectFieldProps): import("react").JSX.Element;
|
|
62
32
|
//# sourceMappingURL=SelectField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../../src/react/components/SelectField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../../src/react/components/SelectField.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,OAAO,CAAC;AAGxE,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAItB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzF,KAAK,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAKpE;6BAC6B;AAC7B,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAQtE;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA+FlD"}
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { cn } from '../lib/cn.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
2
|
+
import { ChevronDown } from 'lucide-react';
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
5
|
+
import { choiceFieldWidth, declareFieldWidth } from '../lib/field.js';
|
|
6
|
+
import { SELECT_OPEN_KEYS, SELECT_VALUE_CLASS, selectGroupsOf, selectShowsPlaceholder, selectTriggerClass, } from '../lib/selectField.js';
|
|
7
|
+
let loadedImpl = null;
|
|
8
|
+
let pendingImpl = null;
|
|
9
|
+
/** Fetch the Radix implementation once per page. Exported for tests and for a consumer that wants
|
|
10
|
+
* to warm it explicitly. */
|
|
11
|
+
export function preloadSelectField() {
|
|
12
|
+
if (!pendingImpl) {
|
|
13
|
+
pendingImpl = import('./SelectFieldImpl.js').then((m) => {
|
|
14
|
+
loadedImpl = m.default;
|
|
15
|
+
return m.default;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return pendingImpl;
|
|
19
|
+
}
|
|
20
|
+
// Start the fetch when this module is evaluated, so the implementation is normally there before
|
|
21
|
+
// the first field mounts and no trigger is ever swapped (Tooltip.tsx has the history).
|
|
22
|
+
if (typeof window !== 'undefined')
|
|
23
|
+
void preloadSelectField();
|
|
8
24
|
/**
|
|
9
25
|
* Portal-based select control on Radix Select. Replaces the native `<select>`
|
|
10
26
|
* wrapper. Fully styleable, keyboard-navigable, a11y-correct, and never clipped by
|
|
@@ -17,12 +33,73 @@ import { FLOATING_ANIMATION, FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE,
|
|
|
17
33
|
* is true (the default for form fields), giving it the same control-height token +
|
|
18
34
|
* rounded-md as Input at the same `size`. Pass `fieldStyle={false}` + a `className`
|
|
19
35
|
* for a bespoke trigger.
|
|
36
|
+
*
|
|
37
|
+
* ── Why this file is a trigger and not the select ───────────────────────────
|
|
38
|
+
* 🔴 Radix Select (with its popper, focus scope and remove-scroll) is ~29 kB gzip, and a
|
|
39
|
+
* static import puts it in whatever chunk renders a field. In a lazy page that is a few kB;
|
|
40
|
+
* in an app's ENTRY it hoisted the Radix code a dozen lazy chunks had shared: music's library
|
|
41
|
+
* Sort by took `index-*.js` from 203 to 232 kB gzip and was reverted (forge task 3096). So the
|
|
42
|
+
* Radix select is `SelectFieldImpl`, a dynamic `import()`, and this file draws the same trigger
|
|
43
|
+
* box — same classes, `role="combobox"`, the chosen option's label, the chevron — until it
|
|
44
|
+
* lands. A press, Enter, Space or an arrow that beats the fetch is not lost: the real select
|
|
45
|
+
* mounts open; focus held on the light trigger moves to the real one.
|
|
20
46
|
*/
|
|
21
|
-
export function SelectField(
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
47
|
+
export function SelectField(props) {
|
|
48
|
+
// `() => loadedImpl`: a component IS a function, and `useState(fn)` would call it.
|
|
49
|
+
const [Impl, setImpl] = useState(() => loadedImpl);
|
|
50
|
+
const openRef = useRef(false);
|
|
51
|
+
const triggerRef = useRef(null);
|
|
52
|
+
const pointerTypeRef = useRef('mouse');
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (Impl)
|
|
55
|
+
return;
|
|
56
|
+
let alive = true;
|
|
57
|
+
void preloadSelectField().then((c) => {
|
|
58
|
+
if (alive)
|
|
59
|
+
setImpl(() => c);
|
|
60
|
+
});
|
|
61
|
+
return () => {
|
|
62
|
+
alive = false;
|
|
63
|
+
};
|
|
64
|
+
}, [Impl]);
|
|
65
|
+
if (Impl) {
|
|
66
|
+
const focused = triggerRef.current !== null && triggerRef.current === document.activeElement;
|
|
67
|
+
return _jsx(Impl, { ...props, initialOpen: openRef.current, initialFocus: focused });
|
|
68
|
+
}
|
|
69
|
+
const { value, placeholder = 'Select…', disabled, fieldStyle, size, className, id, required, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, } = props;
|
|
70
|
+
const showPlaceholder = selectShowsPlaceholder(value);
|
|
71
|
+
const chosen = showPlaceholder
|
|
72
|
+
? undefined
|
|
73
|
+
: selectGroupsOf(props)
|
|
74
|
+
.flatMap((group) => group.options)
|
|
75
|
+
.find((opt) => opt.value === value);
|
|
76
|
+
const open = () => {
|
|
77
|
+
openRef.current = true;
|
|
78
|
+
// Already fetched by another field: swap now rather than on the effect's next tick.
|
|
79
|
+
if (loadedImpl)
|
|
80
|
+
setImpl(() => loadedImpl);
|
|
81
|
+
};
|
|
82
|
+
return (_jsxs("button", {
|
|
83
|
+
// guardrails-ignore no-raw-action-button: task 3096 — SelectField's light trigger until
|
|
84
|
+
// its Radix select loads, the same box SelectFieldImpl's trigger draws.
|
|
85
|
+
ref: triggerRef, type: 'button', role: 'combobox', id: id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedBy, "aria-expanded": false, "aria-required": required, "aria-autocomplete": 'none', "data-state": 'closed', disabled: disabled, "data-disabled": disabled ? '' : undefined, "data-placeholder": showPlaceholder ? '' : undefined, className: cn(RAW_BUTTON, selectTriggerClass({ fieldStyle, size, className })),
|
|
86
|
+
// Radix's own split: a mouse opens on press, touch and pen on the click (so a scroll that
|
|
87
|
+
// starts on the field is not a pick).
|
|
88
|
+
onPointerDown: (e) => {
|
|
89
|
+
pointerTypeRef.current = e.pointerType;
|
|
90
|
+
if (e.pointerType === 'mouse' && e.button === 0 && !e.ctrlKey) {
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
open();
|
|
93
|
+
}
|
|
94
|
+
}, onClick: () => {
|
|
95
|
+
if (pointerTypeRef.current !== 'mouse')
|
|
96
|
+
open();
|
|
97
|
+
}, onKeyDown: (e) => {
|
|
98
|
+
if (SELECT_OPEN_KEYS.includes(e.key)) {
|
|
99
|
+
e.preventDefault();
|
|
100
|
+
open();
|
|
101
|
+
}
|
|
102
|
+
}, children: [_jsx("span", { className: SELECT_VALUE_CLASS, children: showPlaceholder ? placeholder : chosen?.label }), _jsx(ChevronDown, { "aria-hidden": true, className: 'size-4 shrink-0 opacity-50' })] }));
|
|
26
103
|
}
|
|
27
104
|
// Sized by its longest option, not stretched to the panel (FRM-3, forge task 2463).
|
|
28
105
|
declareFieldWidth(SelectField, choiceFieldWidth);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectField.js","sourceRoot":"","sources":["../../../src/react/components/SelectField.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectField.js","sourceRoot":"","sources":["../../../src/react/components/SelectField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type SelectFieldImplProps } from '../lib/selectField.js';
|
|
2
|
+
/**
|
|
3
|
+
* The Radix Select behind {@link SelectField} — loaded as its own chunk by `SelectField.tsx`, which
|
|
4
|
+
* says why. Not exported from the package: render `SelectField`.
|
|
5
|
+
*/
|
|
6
|
+
export default function SelectFieldImpl({ value, onValueChange, options, groups, placeholder, disabled, fieldStyle, size, id, name, required, className, emptyLabel, emptyHint, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, initialOpen, initialFocus, }: SelectFieldImplProps): import("react").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=SelectFieldImpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectFieldImpl.d.ts","sourceRoot":"","sources":["../../../src/react/components/SelectFieldImpl.tsx"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,oBAAoB,EAG1B,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,aAAa,EACb,OAAY,EACZ,MAAW,EACX,WAAuB,EACvB,QAAQ,EACR,UAAiB,EACjB,IAAW,EACX,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,cAAc,EAAE,WAAW,EAC3B,kBAAkB,EAAE,eAAe,EACnC,WAAmB,EACnB,YAAoB,GACrB,EAAE,oBAAoB,+BAgGtB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as RSelect from '@radix-ui/react-select';
|
|
3
|
+
import { Check, ChevronDown, ChevronUp } from 'lucide-react';
|
|
4
|
+
import { useEffect, useRef } from 'react';
|
|
5
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
6
|
+
import { useFloatingContainer } from '../lib/floatingContainer.js';
|
|
7
|
+
import { FLOATING_ANIMATION, FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE, } from '../lib/floatingStyles.js';
|
|
8
|
+
import { SELECT_VALUE_CLASS, selectGroupsOf, selectTriggerClass, } from '../lib/selectField.js';
|
|
9
|
+
/**
|
|
10
|
+
* The Radix Select behind {@link SelectField} — loaded as its own chunk by `SelectField.tsx`, which
|
|
11
|
+
* says why. Not exported from the package: render `SelectField`.
|
|
12
|
+
*/
|
|
13
|
+
export default function SelectFieldImpl({ value, onValueChange, options = [], groups = [], placeholder = 'Select…', disabled, fieldStyle = true, size = 'md', id, name, required, className, emptyLabel, emptyHint, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, initialOpen = false, initialFocus = false, }) {
|
|
14
|
+
const allGroups = selectGroupsOf({ options, groups });
|
|
15
|
+
const empty = allGroups.every((group) => group.options.length === 0);
|
|
16
|
+
const container = useFloatingContainer();
|
|
17
|
+
const triggerRef = useRef(null);
|
|
18
|
+
// The light trigger this replaced had the keyboard focus: keep it here, or it drops to <body>.
|
|
19
|
+
// An `initialOpen` select moves focus into its list itself, and hands it back on close.
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (initialFocus && !initialOpen)
|
|
22
|
+
triggerRef.current?.focus();
|
|
23
|
+
}, [initialFocus, initialOpen]);
|
|
24
|
+
return (_jsxs(RSelect.Root, { value: value, onValueChange: onValueChange, disabled: disabled, name: name, required: required, defaultOpen: initialOpen, children: [_jsxs(RSelect.Trigger, { ref: triggerRef, id: id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedBy, className: cn(RAW_BUTTON, selectTriggerClass({ fieldStyle, size, className })), children: [_jsx("span", { className: SELECT_VALUE_CLASS, children: _jsx(RSelect.Value, { placeholder: placeholder }) }), _jsx(RSelect.Icon, { asChild: true, children: _jsx(ChevronDown, { className: 'size-4 shrink-0 opacity-50' }) })] }), _jsx(RSelect.Portal, { container: container, children: _jsxs(RSelect.Content, { position: 'popper', sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, className: cn(FLOATING_CONTENT_BASE, FLOATING_ANIMATION, 'max-h-[var(--radix-select-content-available-height)] min-w-[var(--radix-select-trigger-width)] p-1'), children: [_jsx(RSelect.ScrollUpButton, { className: 'flex cursor-default items-center justify-center py-1', children: _jsx(ChevronUp, { className: 'size-4' }) }), _jsxs(RSelect.Viewport, { children: [empty && (_jsxs("div", { className: 'flex flex-col gap-0.5 px-2 py-2.5 text-left', children: [_jsx("span", { className: 'text-sm font-medium', children: emptyLabel ?? 'Nothing to choose from yet' }), emptyHint && _jsx("span", { className: 'text-xs text-muted-foreground', children: emptyHint })] })), allGroups.map((group, gi) => (_jsxs(RSelect.Group, { children: [group.label && (_jsx(RSelect.Label, { className: 'px-2 py-1.5 text-xs font-semibold text-muted-foreground', children: group.label })), group.options.map((opt) => (_jsxs(RSelect.Item, { value: opt.value, disabled: opt.disabled, className: cn(FLOATING_ITEM_BASE, 'pr-8'), children: [_jsx(RSelect.ItemIndicator, { className: 'absolute right-2 flex size-4 items-center justify-center', children: _jsx(Check, { className: 'size-3' }) }), _jsx(RSelect.ItemText, { children: opt.label }), opt.description && (_jsx("span", { className: 'text-xs text-muted-foreground', children: opt.description }))] }, opt.value))), gi < allGroups.length - 1 && _jsx(RSelect.Separator, { className: 'my-1 h-px bg-border' })] }, group.label ?? gi)))] }), _jsx(RSelect.ScrollDownButton, { className: 'flex cursor-default items-center justify-center py-1', children: _jsx(ChevronDown, { className: 'size-4' }) })] }) })] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=SelectFieldImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectFieldImpl.js","sourceRoot":"","sources":["../../../src/react/components/SelectFieldImpl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ChipProps {
|
|
3
|
+
active: boolean;
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare function Chip({ active, onClick, children }: ChipProps): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=filterChip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterChip.d.ts","sourceRoot":"","sources":["../../../src/react/components/filterChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,+BA2B5D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
3
|
+
import { PRESS } from '../lib/press.js';
|
|
4
|
+
export function Chip({ active, onClick, children }) {
|
|
5
|
+
return (_jsx("button", {
|
|
6
|
+
// guardrails-ignore no-raw-action-button: presentational filter-chip toggle —
|
|
7
|
+
// reflects local filter state (aria-pressed), no destructive/mutating intent.
|
|
8
|
+
type: 'button', onClick: onClick, "aria-pressed": active, className: cn(RAW_BUTTON,
|
|
9
|
+
// 44 px min tap target height via py + min-h (STANDARDS §4a). px-4 keeps every
|
|
10
|
+
// pill's internal padding identical regardless of label length.
|
|
11
|
+
'inline-flex min-h-11 shrink-0 cursor-pointer items-center rounded-full px-4 text-sm font-medium', PRESS, 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
|
|
12
|
+
// Soft active state — an accent tint + accent text (the standardized active
|
|
13
|
+
// treatment shared with nav items and the `accent` Badge tone), not a stark
|
|
14
|
+
// solid accent block. `text-accent-strong` (not plain `text-accent`) — the
|
|
15
|
+
// /15 tint only clears 4.43:1 with the base accent hue, under AA (cbux-101).
|
|
16
|
+
active
|
|
17
|
+
? 'bg-accent/15 text-accent-strong ring-1 ring-inset ring-accent/30'
|
|
18
|
+
: 'bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground'), children: children }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=filterChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterChip.js","sourceRoot":"","sources":["../../../src/react/components/filterChip.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAaxC,MAAM,UAAU,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAa;IAC3D,OAAO,CACL;QACE,8EAA8E;QAC9E,8EAA8E;QAC9E,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,kBACF,MAAM,EACpB,SAAS,EAAE,EAAE,CACX,UAAU;QACV,+EAA+E;QAC/E,gEAAgE;QAChE,iGAAiG,EACjG,KAAK,EACL,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM;YACJ,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,wEAAwE,CAC7E,YAEA,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -119,9 +119,15 @@ export interface WireTouchDragConfig {
|
|
|
119
119
|
/**
|
|
120
120
|
* Wire touch-drag onto one draggable element, using the shared registry + monitor bus.
|
|
121
121
|
* Only `touch` pointers are handled — mouse/pen still drive pragmatic's native adapter,
|
|
122
|
-
* so the two engines never fight over the same gesture.
|
|
123
|
-
*
|
|
124
|
-
*
|
|
122
|
+
* so the two engines never fight over the same gesture.
|
|
123
|
+
*
|
|
124
|
+
* 🔴 The element stays PANNABLE. A finger that moves before the long press fires is a scroll,
|
|
125
|
+
* and the browser runs it; only once the drag is live does a non-passive `touchmove` on the
|
|
126
|
+
* element cancel the browser's pan, so the finger drives the drag instead — the way
|
|
127
|
+
* `@dnd-kit`'s TouchSensor does it. This used to set `touch-action: none` on the element, and
|
|
128
|
+
* on a phone a board whose columns are full of cards could not be swiped or scrolled from any
|
|
129
|
+
* card (forge task 3033, seen on vault-stage at 390). While a press is in flight the
|
|
130
|
+
* long-press `contextmenu` (Android's menu) is cancelled too.
|
|
125
131
|
*
|
|
126
132
|
* The `pointerdown` listener lives on the element; the `pointermove`/`up`/`cancel`/
|
|
127
133
|
* `keydown` listeners are only attached on the `window` for the life of one interaction
|
|
@@ -132,5 +138,33 @@ export interface WireTouchDragConfig {
|
|
|
132
138
|
* Returns a cleanup that cancels any in-flight drag and removes every listener.
|
|
133
139
|
*/
|
|
134
140
|
export declare function wireTouchDragSource(config: WireTouchDragConfig): CleanupFn;
|
|
141
|
+
/** How near a scroller's edge (px) a touch drag must come before it scrolls, and its top speed. */
|
|
142
|
+
export declare const TOUCH_EDGE_PX = 48;
|
|
143
|
+
export declare const TOUCH_EDGE_MAX_STEP_PX = 14;
|
|
144
|
+
interface EdgeRect {
|
|
145
|
+
left: number;
|
|
146
|
+
right: number;
|
|
147
|
+
top: number;
|
|
148
|
+
bottom: number;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* How far one frame scrolls a scroller whose box is `rect` while a finger drags at (x, y):
|
|
152
|
+
* nothing in the middle, faster the nearer the edge, full speed at or PAST it — a thumb at the
|
|
153
|
+
* screen's edge is often outside a scroller inset by the page's gutter (vault-stage at 390: the
|
|
154
|
+
* strip ends at 374, the thumb sat at 385). An axis only moves while the finger is level with the
|
|
155
|
+
* box on the other one. Pure, so the feel is tested without a layout.
|
|
156
|
+
*/
|
|
157
|
+
export declare function touchEdgeStep(rect: EdgeRect, x: number, y: number): {
|
|
158
|
+
dx: number;
|
|
159
|
+
dy: number;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Scroll `container` while a TOUCH drag holds near its edge — what pragmatic's
|
|
163
|
+
* `autoScrollForElements` does for a mouse, which the touch bridge never reaches. Without it a
|
|
164
|
+
* phone board whose columns are each a screen wide could not carry a card to any other column
|
|
165
|
+
* (forge task 3033). A finger held still keeps scrolling (one step a frame); scroll snapping is
|
|
166
|
+
* suspended while it does, and the container settles back onto its snap points on the drop.
|
|
167
|
+
*/
|
|
168
|
+
export declare function registerTouchEdgeScroll(container: HTMLElement): CleanupFn;
|
|
135
169
|
export {};
|
|
136
170
|
//# sourceMappingURL=pointerDnd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointerDnd.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/pointerDnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAEjB,MAAM,yCAAyC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AAEH;wFACwF;AACxF,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAET;AAED,sFAAsF;AACtF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,CAAC,IAAI,EAAE,gCAAgC,KAAK,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;IACtF,iEAAiE;IACjE,OAAO,EAAE,CAAC,IAAI,EAAE,gCAAgC,KAAK,OAAO,CAAC;IAC7D,6FAA6F;IAC7F,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,sBAAsB,CAAC,EACtD,QAAQ,EAAE,gCAAgC,GACzC,gBAAgB,EAAE,CAepB;AAMD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,CAMlF;AAID,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD;uCACuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAGhE;4DAC4D;AAC5D,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAKvF;AAwBD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,WAAW,CAAC;IACrB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,yFAAyF;IACzF,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC7C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,iFAAiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB;4FACwF;IACxF,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5C,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,sBAAsB,GAAG,gBAAgB,CA4GpF;AAID,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,iBAAiB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD
|
|
1
|
+
{"version":3,"file":"pointerDnd.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/pointerDnd.ts"],"names":[],"mappings":"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"}
|
|
@@ -221,9 +221,15 @@ function elementsFromPointSafe(x, y) {
|
|
|
221
221
|
/**
|
|
222
222
|
* Wire touch-drag onto one draggable element, using the shared registry + monitor bus.
|
|
223
223
|
* Only `touch` pointers are handled — mouse/pen still drive pragmatic's native adapter,
|
|
224
|
-
* so the two engines never fight over the same gesture.
|
|
225
|
-
*
|
|
226
|
-
*
|
|
224
|
+
* so the two engines never fight over the same gesture.
|
|
225
|
+
*
|
|
226
|
+
* 🔴 The element stays PANNABLE. A finger that moves before the long press fires is a scroll,
|
|
227
|
+
* and the browser runs it; only once the drag is live does a non-passive `touchmove` on the
|
|
228
|
+
* element cancel the browser's pan, so the finger drives the drag instead — the way
|
|
229
|
+
* `@dnd-kit`'s TouchSensor does it. This used to set `touch-action: none` on the element, and
|
|
230
|
+
* on a phone a board whose columns are full of cards could not be swiped or scrolled from any
|
|
231
|
+
* card (forge task 3033, seen on vault-stage at 390). While a press is in flight the
|
|
232
|
+
* long-press `contextmenu` (Android's menu) is cancelled too.
|
|
227
233
|
*
|
|
228
234
|
* The `pointerdown` listener lives on the element; the `pointermove`/`up`/`cancel`/
|
|
229
235
|
* `keydown` listeners are only attached on the `window` for the life of one interaction
|
|
@@ -254,9 +260,6 @@ export function wireTouchDragSource(config) {
|
|
|
254
260
|
const onPointerMove = (event) => {
|
|
255
261
|
if (event.pointerId !== activePointerId)
|
|
256
262
|
return;
|
|
257
|
-
// Once dragging, suppress the browser's scroll so the finger drives the drag.
|
|
258
|
-
if (session.isActive() && event.cancelable)
|
|
259
|
-
event.preventDefault();
|
|
260
263
|
session.pointerMove({ x: event.clientX, y: event.clientY });
|
|
261
264
|
if (session.status() === 'idle')
|
|
262
265
|
detach(); // a pre-activation move was a scroll
|
|
@@ -306,14 +309,103 @@ export function wireTouchDragSource(config) {
|
|
|
306
309
|
window.addEventListener('keydown', onKeyDown);
|
|
307
310
|
session.pointerDown({ x: event.clientX, y: event.clientY });
|
|
308
311
|
};
|
|
309
|
-
|
|
310
|
-
element.
|
|
312
|
+
// Touch events go to the element the finger came down on for the whole gesture, so the
|
|
313
|
+
// element's own listener sees every move. Non-passive: it must be able to cancel the pan.
|
|
314
|
+
const onTouchMove = (event) => {
|
|
315
|
+
if (session.isActive() && event.cancelable)
|
|
316
|
+
event.preventDefault();
|
|
317
|
+
};
|
|
318
|
+
const onContextMenu = (event) => {
|
|
319
|
+
if (session.status() !== 'idle')
|
|
320
|
+
event.preventDefault();
|
|
321
|
+
};
|
|
311
322
|
element.addEventListener('pointerdown', onPointerDown);
|
|
323
|
+
element.addEventListener('touchmove', onTouchMove, { passive: false });
|
|
324
|
+
element.addEventListener('contextmenu', onContextMenu);
|
|
312
325
|
return () => {
|
|
313
326
|
session.cancel();
|
|
314
327
|
detach();
|
|
315
|
-
element.style.touchAction = prevTouchAction;
|
|
316
328
|
element.removeEventListener('pointerdown', onPointerDown);
|
|
329
|
+
element.removeEventListener('touchmove', onTouchMove);
|
|
330
|
+
element.removeEventListener('contextmenu', onContextMenu);
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
// --- Edge auto-scroll for touch drags -------------------------------------------------
|
|
334
|
+
/** How near a scroller's edge (px) a touch drag must come before it scrolls, and its top speed. */
|
|
335
|
+
export const TOUCH_EDGE_PX = 48;
|
|
336
|
+
export const TOUCH_EDGE_MAX_STEP_PX = 14;
|
|
337
|
+
/**
|
|
338
|
+
* How far one frame scrolls a scroller whose box is `rect` while a finger drags at (x, y):
|
|
339
|
+
* nothing in the middle, faster the nearer the edge, full speed at or PAST it — a thumb at the
|
|
340
|
+
* screen's edge is often outside a scroller inset by the page's gutter (vault-stage at 390: the
|
|
341
|
+
* strip ends at 374, the thumb sat at 385). An axis only moves while the finger is level with the
|
|
342
|
+
* box on the other one. Pure, so the feel is tested without a layout.
|
|
343
|
+
*/
|
|
344
|
+
export function touchEdgeStep(rect, x, y) {
|
|
345
|
+
const ramp = (into) => Math.round(TOUCH_EDGE_MAX_STEP_PX * Math.min(1, 1 - into / TOUCH_EDGE_PX));
|
|
346
|
+
let dx = 0;
|
|
347
|
+
let dy = 0;
|
|
348
|
+
if (y >= rect.top && y <= rect.bottom) {
|
|
349
|
+
if (x < rect.left + TOUCH_EDGE_PX)
|
|
350
|
+
dx = -ramp(x - rect.left);
|
|
351
|
+
else if (x > rect.right - TOUCH_EDGE_PX)
|
|
352
|
+
dx = ramp(rect.right - x);
|
|
353
|
+
}
|
|
354
|
+
if (x >= rect.left && x <= rect.right) {
|
|
355
|
+
if (y < rect.top + TOUCH_EDGE_PX)
|
|
356
|
+
dy = -ramp(y - rect.top);
|
|
357
|
+
else if (y > rect.bottom - TOUCH_EDGE_PX)
|
|
358
|
+
dy = ramp(rect.bottom - y);
|
|
359
|
+
}
|
|
360
|
+
return { dx: dx || 0, dy: dy || 0 };
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Scroll `container` while a TOUCH drag holds near its edge — what pragmatic's
|
|
364
|
+
* `autoScrollForElements` does for a mouse, which the touch bridge never reaches. Without it a
|
|
365
|
+
* phone board whose columns are each a screen wide could not carry a card to any other column
|
|
366
|
+
* (forge task 3033). A finger held still keeps scrolling (one step a frame); scroll snapping is
|
|
367
|
+
* suspended while it does, and the container settles back onto its snap points on the drop.
|
|
368
|
+
*/
|
|
369
|
+
export function registerTouchEdgeScroll(container) {
|
|
370
|
+
let point = null;
|
|
371
|
+
let frame = 0;
|
|
372
|
+
let snapWas = null;
|
|
373
|
+
const tick = () => {
|
|
374
|
+
frame = 0;
|
|
375
|
+
if (!point)
|
|
376
|
+
return;
|
|
377
|
+
const { dx, dy } = touchEdgeStep(container.getBoundingClientRect(), point.x, point.y);
|
|
378
|
+
if (dx !== 0 || dy !== 0) {
|
|
379
|
+
if (snapWas === null) {
|
|
380
|
+
snapWas = container.style.scrollSnapType;
|
|
381
|
+
container.style.scrollSnapType = 'none';
|
|
382
|
+
}
|
|
383
|
+
container.scrollBy(dx, dy);
|
|
384
|
+
}
|
|
385
|
+
frame = requestAnimationFrame(tick);
|
|
386
|
+
};
|
|
387
|
+
const stop = () => {
|
|
388
|
+
point = null;
|
|
389
|
+
if (frame)
|
|
390
|
+
cancelAnimationFrame(frame);
|
|
391
|
+
frame = 0;
|
|
392
|
+
if (snapWas !== null) {
|
|
393
|
+
container.style.scrollSnapType = snapWas;
|
|
394
|
+
snapWas = null;
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
const unsubscribe = subscribePointerDragMonitor((event) => {
|
|
398
|
+
if (event.phase === 'drop') {
|
|
399
|
+
stop();
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
point = { x: event.current.input.clientX, y: event.current.input.clientY };
|
|
403
|
+
if (!frame)
|
|
404
|
+
frame = requestAnimationFrame(tick);
|
|
405
|
+
});
|
|
406
|
+
return () => {
|
|
407
|
+
unsubscribe();
|
|
408
|
+
stop();
|
|
317
409
|
};
|
|
318
410
|
}
|
|
319
411
|
//# sourceMappingURL=pointerDnd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointerDnd.js","sourceRoot":"","sources":["../../../src/react/hooks/pointerDnd.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pointerDnd.js","sourceRoot":"","sources":["../../../src/react/hooks/pointerDnd.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,10 @@ export { attachClosestEdge, combine, disableNativeDragPreview, draggable, dropTa
|
|
|
47
47
|
* hijack window scroll. Layout-only + guarded, so it is inert under the render specs.
|
|
48
48
|
*/
|
|
49
49
|
export declare function findScrollContainer(start: Element | null): Element | null;
|
|
50
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Register `element` as an auto-scroll container for the drag engine (ref-counted) — for a
|
|
52
|
+
* mouse (pragmatic's own) and for a touch drag (`registerTouchEdgeScroll`, forge task 3033).
|
|
53
|
+
*/
|
|
51
54
|
export declare function registerAutoScroll(element: Element): CleanupFn;
|
|
52
55
|
/**
|
|
53
56
|
* Register auto-scroll on the nearest scrollable ancestor of one draggable/droppable row,
|