@dxos/react-list 0.8.1 → 0.8.2-main.10c050d

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.
@@ -1,4 +1,5 @@
1
1
  // packages/ui/primitives/react-list/src/List.tsx
2
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
2
3
  import { createContextScope } from "@radix-ui/react-context";
3
4
  import { Primitive } from "@radix-ui/react-primitive";
4
5
  import React, { forwardRef } from "react";
@@ -6,25 +7,31 @@ var LIST_NAME = "List";
6
7
  var [createListContext, createListScope] = createContextScope(LIST_NAME, []);
7
8
  var [ListProvider, useListContext] = createListContext(LIST_NAME);
8
9
  var List = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
9
- const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
10
- const ListRoot = variant === "ordered" ? Primitive.ol : Primitive.ul;
11
- return /* @__PURE__ */ React.createElement(ListRoot, {
12
- ...selectable && {
13
- role: "listbox",
14
- "aria-multiselectable": true
15
- },
16
- ...rootProps,
17
- ref: forwardedRef
18
- }, /* @__PURE__ */ React.createElement(ListProvider, {
19
- scope: __listScope,
20
- variant,
21
- selectable,
22
- itemSizes
23
- }, children));
10
+ var _effect = _useSignals();
11
+ try {
12
+ const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
13
+ const ListRoot = variant === "ordered" ? Primitive.ol : Primitive.ul;
14
+ return /* @__PURE__ */ React.createElement(ListRoot, {
15
+ ...selectable && {
16
+ role: "listbox",
17
+ "aria-multiselectable": true
18
+ },
19
+ ...rootProps,
20
+ ref: forwardedRef
21
+ }, /* @__PURE__ */ React.createElement(ListProvider, {
22
+ scope: __listScope,
23
+ variant,
24
+ selectable,
25
+ itemSizes
26
+ }, children));
27
+ } finally {
28
+ _effect.f();
29
+ }
24
30
  });
25
31
  List.displayName = LIST_NAME;
26
32
 
27
33
  // packages/ui/primitives/react-list/src/ListItem.tsx
34
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
28
35
  import * as Collapsible from "@radix-ui/react-collapsible";
29
36
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
30
37
  import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
@@ -36,55 +43,65 @@ var LIST_ITEM_NAME = "ListItem";
36
43
  var [createListItemContext, createListItemScope] = createContextScope2(LIST_ITEM_NAME, []);
37
44
  var [ListItemProvider, useListItemContext] = createListItemContext(LIST_ITEM_NAME);
38
45
  var ListItemHeading = /* @__PURE__ */ forwardRef2(({ children, asChild, __listItemScope, ...props }, forwardedRef) => {
39
- const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
40
- const Root2 = asChild ? Slot : Primitive2.div;
41
- return /* @__PURE__ */ React2.createElement(Root2, {
42
- ...props,
43
- id: headingId,
44
- ref: forwardedRef
45
- }, children);
46
+ var _effect = _useSignals2();
47
+ try {
48
+ const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
49
+ const Root2 = asChild ? Slot : Primitive2.div;
50
+ return /* @__PURE__ */ React2.createElement(Root2, {
51
+ ...props,
52
+ id: headingId,
53
+ ref: forwardedRef
54
+ }, children);
55
+ } finally {
56
+ _effect.f();
57
+ }
46
58
  });
47
59
  var ListItemOpenTrigger = Collapsible.Trigger;
48
60
  var ListItemCollapsibleContent = Collapsible.Content;
49
61
  var ListItem = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
50
- const id = useId("listItem", props.id);
51
- const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
52
- const { selectable } = useListContext(LIST_NAME, __listScope);
53
- const [selected = false, setSelected] = useControllableState({
54
- prop: propsSelected,
55
- defaultProp: defaultSelected,
56
- onChange: onSelectedChange
57
- });
58
- const [open = false, setOpen] = useControllableState({
59
- prop: propsOpen,
60
- defaultProp: defaultOpen,
61
- onChange: onOpenChange
62
- });
63
- const headingId = useId("listItem__heading", labelId);
64
- const listItem = /* @__PURE__ */ React2.createElement(Primitive2.li, {
65
- ...listItemProps,
66
- id,
67
- ref: forwardedRef,
68
- "aria-labelledby": headingId,
69
- ...selectable && {
70
- role: "option",
71
- "aria-selected": !!selected
72
- },
73
- ...open && {
74
- "aria-expanded": true
75
- }
76
- }, children);
77
- return /* @__PURE__ */ React2.createElement(ListItemProvider, {
78
- scope: __listItemScope,
79
- headingId,
80
- open,
81
- selected,
82
- setSelected
83
- }, collapsible ? /* @__PURE__ */ React2.createElement(Collapsible.Root, {
84
- asChild: true,
85
- open,
86
- onOpenChange: setOpen
87
- }, listItem) : listItem);
62
+ var _effect = _useSignals2();
63
+ try {
64
+ const id = useId("listItem", props.id);
65
+ const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
66
+ const { selectable } = useListContext(LIST_NAME, __listScope);
67
+ const [selected = false, setSelected] = useControllableState({
68
+ prop: propsSelected,
69
+ defaultProp: defaultSelected,
70
+ onChange: onSelectedChange
71
+ });
72
+ const [open = false, setOpen] = useControllableState({
73
+ prop: propsOpen,
74
+ defaultProp: defaultOpen,
75
+ onChange: onOpenChange
76
+ });
77
+ const headingId = useId("listItem__heading", labelId);
78
+ const listItem = /* @__PURE__ */ React2.createElement(Primitive2.li, {
79
+ ...listItemProps,
80
+ id,
81
+ ref: forwardedRef,
82
+ "aria-labelledby": headingId,
83
+ ...selectable && {
84
+ role: "option",
85
+ "aria-selected": !!selected
86
+ },
87
+ ...open && {
88
+ "aria-expanded": true
89
+ }
90
+ }, children);
91
+ return /* @__PURE__ */ React2.createElement(ListItemProvider, {
92
+ scope: __listItemScope,
93
+ headingId,
94
+ open,
95
+ selected,
96
+ setSelected
97
+ }, collapsible ? /* @__PURE__ */ React2.createElement(Collapsible.Root, {
98
+ asChild: true,
99
+ open,
100
+ onOpenChange: setOpen
101
+ }, listItem) : listItem);
102
+ } finally {
103
+ _effect.f();
104
+ }
88
105
  });
89
106
  ListItem.displayName = LIST_ITEM_NAME;
90
107
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/List.tsx", "../../../src/ListItem.tsx"],
4
4
  "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport React, { type ComponentPropsWithRef, forwardRef } from 'react';\n\n// TODO(thure): A lot of the accessible affordances for this kind of thing need to be implemented per https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role\n\nconst LIST_NAME = 'List';\n\ntype ListScopedProps<P> = P & { __listScope?: Scope };\n\ntype ListVariant = 'ordered' | 'unordered';\n\ntype ListItemSizes = 'one' | 'many';\n\ntype ListProps = ComponentPropsWithRef<typeof Primitive.ol> & {\n selectable?: boolean;\n variant?: ListVariant;\n itemSizes?: ListItemSizes;\n};\n\nconst [createListContext, createListScope] = createContextScope(LIST_NAME, []);\n\ntype ListContextValue = {\n selectable: Exclude<ListProps['selectable'], undefined>;\n variant: Exclude<ListProps['variant'], undefined>;\n itemSizes?: ListItemSizes;\n};\n\nconst [ListProvider, useListContext] = createListContext<ListContextValue>(LIST_NAME);\n\nconst List = forwardRef<HTMLOListElement, ListProps>((props: ListScopedProps<ListProps>, forwardedRef) => {\n const { __listScope, variant = 'ordered', selectable = false, itemSizes, children, ...rootProps } = props;\n const ListRoot = variant === 'ordered' ? Primitive.ol : Primitive.ul;\n return (\n <ListRoot {...(selectable && { role: 'listbox', 'aria-multiselectable': true })} {...rootProps} ref={forwardedRef}>\n <ListProvider\n {...{\n scope: __listScope,\n variant,\n selectable,\n itemSizes,\n }}\n >\n {children}\n </ListProvider>\n </ListRoot>\n );\n});\n\nList.displayName = LIST_NAME;\n\nexport { List, createListScope, useListContext, LIST_NAME };\n\nexport type { ListProps, ListVariant, ListScopedProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { CheckboxProps } from '@radix-ui/react-checkbox';\nimport { type CollapsibleContentProps, type CollapsibleTriggerProps } from '@radix-ui/react-collapsible';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, {\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type Dispatch,\n type ElementRef,\n forwardRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type SetStateAction,\n} from 'react';\n\nimport { useId } from '@dxos/react-hooks';\n\nimport { LIST_NAME, type ListScopedProps, useListContext } from './List';\n\nconst LIST_ITEM_NAME = 'ListItem';\n\ntype ListItemScopedProps<P> = P & { __listItemScope?: Scope };\n\ninterface ListItemData {\n id: string;\n labelId?: string;\n selected?: CheckboxProps['checked'];\n open?: boolean;\n}\n\ntype ListItemProps = Omit<ListItemData, 'id'> & { collapsible?: boolean } & RefAttributes<HTMLLIElement> &\n ComponentPropsWithoutRef<'li'> & {\n defaultOpen?: boolean;\n onOpenChange?: (nextOpen: boolean) => void;\n } & {\n onSelectedChange?: CheckboxProps['onCheckedChange'];\n defaultSelected?: CheckboxProps['defaultChecked'];\n };\n\ntype ListItemElement = ElementRef<'li'>;\n\nconst [createListItemContext, createListItemScope] = createContextScope(LIST_ITEM_NAME, []);\n\ntype ListItemContextValue = {\n headingId: string;\n open: boolean;\n selected: CheckboxProps['checked'];\n setSelected: Dispatch<SetStateAction<CheckboxProps['checked']>>;\n};\n\nconst [ListItemProvider, useListItemContext] = createListItemContext<ListItemContextValue>(LIST_ITEM_NAME);\n\ntype ListItemHeadingProps = ListItemScopedProps<Omit<ComponentPropsWithoutRef<'p'>, 'id'>> &\n RefAttributes<HTMLParagraphElement> & {\n asChild?: boolean;\n };\n\nconst ListItemHeading = forwardRef<HTMLDivElement, ListItemHeadingProps>(\n ({ children, asChild, __listItemScope, ...props }, forwardedRef) => {\n const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);\n const Root = asChild ? Slot : Primitive.div;\n return (\n <Root {...props} id={headingId} ref={forwardedRef}>\n {children}\n </Root>\n );\n },\n);\n\ntype ListItemOpenTriggerProps = ListItemScopedProps<CollapsibleTriggerProps>;\n\nconst ListItemOpenTrigger = Collapsible.Trigger;\n\ntype ListItemCollapsibleContentProps = ComponentProps<typeof Collapsible.Content>;\n\nconst ListItemCollapsibleContent: ForwardRefExoticComponent<CollapsibleContentProps> = Collapsible.Content;\n\nconst ListItem = forwardRef<ListItemElement, ListItemProps>(\n (props: ListItemScopedProps<ListScopedProps<ListItemProps>>, forwardedRef) => {\n const id = useId('listItem', props.id);\n\n const {\n __listScope,\n __listItemScope,\n children,\n selected: propsSelected,\n defaultSelected,\n onSelectedChange,\n open: propsOpen,\n defaultOpen,\n onOpenChange,\n collapsible,\n labelId,\n ...listItemProps\n } = props;\n const { selectable } = useListContext(LIST_NAME, __listScope);\n\n const [selected = false, setSelected] = useControllableState({\n prop: propsSelected,\n defaultProp: defaultSelected,\n onChange: onSelectedChange,\n });\n\n const [open = false, setOpen] = useControllableState({\n prop: propsOpen,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const headingId = useId('listItem__heading', labelId);\n\n const listItem = (\n <Primitive.li\n {...listItemProps}\n id={id}\n ref={forwardedRef}\n aria-labelledby={headingId}\n {...(selectable && { role: 'option', 'aria-selected': !!selected })}\n {...(open && { 'aria-expanded': true })}\n >\n {children}\n </Primitive.li>\n );\n\n return (\n <ListItemProvider\n scope={__listItemScope}\n headingId={headingId}\n open={open}\n selected={selected}\n setSelected={setSelected}\n >\n {collapsible ? (\n <Collapsible.Root asChild open={open} onOpenChange={setOpen}>\n {listItem}\n </Collapsible.Root>\n ) : (\n listItem\n )}\n </ListItemProvider>\n );\n },\n);\n\nListItem.displayName = LIST_ITEM_NAME;\n\nexport {\n ListItem,\n ListItemHeading,\n ListItemCollapsibleContent,\n ListItemOpenTrigger,\n createListItemScope,\n useListItemContext,\n LIST_ITEM_NAME,\n};\n\nexport type {\n ListItemProps,\n ListItemHeadingProps,\n ListItemCollapsibleContentProps,\n ListItemOpenTriggerProps,\n ListItemScopedProps,\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["createContextScope", "Primitive", "React", "forwardRef", "LIST_NAME", "createListContext", "createListScope", "createContextScope", "ListProvider", "useListContext", "List", "forwardRef", "props", "forwardedRef", "__listScope", "variant", "selectable", "itemSizes", "children", "rootProps", "ListRoot", "Primitive", "ol", "ul", "role", "ref", "scope", "displayName", "Collapsible", "createContextScope", "Primitive", "Slot", "useControllableState", "React", "forwardRef", "useId", "LIST_ITEM_NAME", "createListItemContext", "createListItemScope", "createContextScope", "ListItemProvider", "useListItemContext", "ListItemHeading", "forwardRef", "children", "asChild", "__listItemScope", "props", "forwardedRef", "headingId", "Root", "Slot", "Primitive", "div", "React", "id", "ref", "ListItemOpenTrigger", "Trigger", "ListItemCollapsibleContent", "Content", "ListItem", "useId", "__listScope", "selected", "propsSelected", "defaultSelected", "onSelectedChange", "open", "propsOpen", "defaultOpen", "onOpenChange", "collapsible", "labelId", "listItemProps", "selectable", "useListContext", "LIST_NAME", "setSelected", "useControllableState", "prop", "defaultProp", "onChange", "setOpen", "listItem", "li", "aria-labelledby", "role", "scope", "displayName"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5456,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13123,"imports":[{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":585,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10270},"packages/ui/primitives/react-list/dist/lib/browser/index.mjs":{"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":935},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2530}},"bytes":3821}}}
1
+ {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5630,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13458,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":553,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10287},"packages/ui/primitives/react-list/dist/lib/browser/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":1120},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2852}},"bytes":4328}}}
@@ -41,9 +41,11 @@ __export(node_exports, {
41
41
  useListItemContext: () => useListItemContext
42
42
  });
43
43
  module.exports = __toCommonJS(node_exports);
44
+ var import_tracking = require("@preact-signals/safe-react/tracking");
44
45
  var import_react_context = require("@radix-ui/react-context");
45
46
  var import_react_primitive = require("@radix-ui/react-primitive");
46
47
  var import_react = __toESM(require("react"));
48
+ var import_tracking2 = require("@preact-signals/safe-react/tracking");
47
49
  var Collapsible = __toESM(require("@radix-ui/react-collapsible"));
48
50
  var import_react_context2 = require("@radix-ui/react-context");
49
51
  var import_react_primitive2 = require("@radix-ui/react-primitive");
@@ -55,76 +57,91 @@ var LIST_NAME = "List";
55
57
  var [createListContext, createListScope] = (0, import_react_context.createContextScope)(LIST_NAME, []);
56
58
  var [ListProvider, useListContext] = createListContext(LIST_NAME);
57
59
  var List = /* @__PURE__ */ (0, import_react.forwardRef)((props, forwardedRef) => {
58
- const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
59
- const ListRoot = variant === "ordered" ? import_react_primitive.Primitive.ol : import_react_primitive.Primitive.ul;
60
- return /* @__PURE__ */ import_react.default.createElement(ListRoot, {
61
- ...selectable && {
62
- role: "listbox",
63
- "aria-multiselectable": true
64
- },
65
- ...rootProps,
66
- ref: forwardedRef
67
- }, /* @__PURE__ */ import_react.default.createElement(ListProvider, {
68
- scope: __listScope,
69
- variant,
70
- selectable,
71
- itemSizes
72
- }, children));
60
+ var _effect = (0, import_tracking.useSignals)();
61
+ try {
62
+ const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
63
+ const ListRoot = variant === "ordered" ? import_react_primitive.Primitive.ol : import_react_primitive.Primitive.ul;
64
+ return /* @__PURE__ */ import_react.default.createElement(ListRoot, {
65
+ ...selectable && {
66
+ role: "listbox",
67
+ "aria-multiselectable": true
68
+ },
69
+ ...rootProps,
70
+ ref: forwardedRef
71
+ }, /* @__PURE__ */ import_react.default.createElement(ListProvider, {
72
+ scope: __listScope,
73
+ variant,
74
+ selectable,
75
+ itemSizes
76
+ }, children));
77
+ } finally {
78
+ _effect.f();
79
+ }
73
80
  });
74
81
  List.displayName = LIST_NAME;
75
82
  var LIST_ITEM_NAME = "ListItem";
76
83
  var [createListItemContext, createListItemScope] = (0, import_react_context2.createContextScope)(LIST_ITEM_NAME, []);
77
84
  var [ListItemProvider, useListItemContext] = createListItemContext(LIST_ITEM_NAME);
78
85
  var ListItemHeading = /* @__PURE__ */ (0, import_react2.forwardRef)(({ children, asChild, __listItemScope, ...props }, forwardedRef) => {
79
- const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
80
- const Root2 = asChild ? import_react_slot.Slot : import_react_primitive2.Primitive.div;
81
- return /* @__PURE__ */ import_react2.default.createElement(Root2, {
82
- ...props,
83
- id: headingId,
84
- ref: forwardedRef
85
- }, children);
86
+ var _effect = (0, import_tracking2.useSignals)();
87
+ try {
88
+ const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
89
+ const Root2 = asChild ? import_react_slot.Slot : import_react_primitive2.Primitive.div;
90
+ return /* @__PURE__ */ import_react2.default.createElement(Root2, {
91
+ ...props,
92
+ id: headingId,
93
+ ref: forwardedRef
94
+ }, children);
95
+ } finally {
96
+ _effect.f();
97
+ }
86
98
  });
87
99
  var ListItemOpenTrigger = Collapsible.Trigger;
88
100
  var ListItemCollapsibleContent = Collapsible.Content;
89
101
  var ListItem = /* @__PURE__ */ (0, import_react2.forwardRef)((props, forwardedRef) => {
90
- const id = (0, import_react_hooks.useId)("listItem", props.id);
91
- const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
92
- const { selectable } = useListContext(LIST_NAME, __listScope);
93
- const [selected = false, setSelected] = (0, import_react_use_controllable_state.useControllableState)({
94
- prop: propsSelected,
95
- defaultProp: defaultSelected,
96
- onChange: onSelectedChange
97
- });
98
- const [open = false, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
99
- prop: propsOpen,
100
- defaultProp: defaultOpen,
101
- onChange: onOpenChange
102
- });
103
- const headingId = (0, import_react_hooks.useId)("listItem__heading", labelId);
104
- const listItem = /* @__PURE__ */ import_react2.default.createElement(import_react_primitive2.Primitive.li, {
105
- ...listItemProps,
106
- id,
107
- ref: forwardedRef,
108
- "aria-labelledby": headingId,
109
- ...selectable && {
110
- role: "option",
111
- "aria-selected": !!selected
112
- },
113
- ...open && {
114
- "aria-expanded": true
115
- }
116
- }, children);
117
- return /* @__PURE__ */ import_react2.default.createElement(ListItemProvider, {
118
- scope: __listItemScope,
119
- headingId,
120
- open,
121
- selected,
122
- setSelected
123
- }, collapsible ? /* @__PURE__ */ import_react2.default.createElement(Collapsible.Root, {
124
- asChild: true,
125
- open,
126
- onOpenChange: setOpen
127
- }, listItem) : listItem);
102
+ var _effect = (0, import_tracking2.useSignals)();
103
+ try {
104
+ const id = (0, import_react_hooks.useId)("listItem", props.id);
105
+ const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
106
+ const { selectable } = useListContext(LIST_NAME, __listScope);
107
+ const [selected = false, setSelected] = (0, import_react_use_controllable_state.useControllableState)({
108
+ prop: propsSelected,
109
+ defaultProp: defaultSelected,
110
+ onChange: onSelectedChange
111
+ });
112
+ const [open = false, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
113
+ prop: propsOpen,
114
+ defaultProp: defaultOpen,
115
+ onChange: onOpenChange
116
+ });
117
+ const headingId = (0, import_react_hooks.useId)("listItem__heading", labelId);
118
+ const listItem = /* @__PURE__ */ import_react2.default.createElement(import_react_primitive2.Primitive.li, {
119
+ ...listItemProps,
120
+ id,
121
+ ref: forwardedRef,
122
+ "aria-labelledby": headingId,
123
+ ...selectable && {
124
+ role: "option",
125
+ "aria-selected": !!selected
126
+ },
127
+ ...open && {
128
+ "aria-expanded": true
129
+ }
130
+ }, children);
131
+ return /* @__PURE__ */ import_react2.default.createElement(ListItemProvider, {
132
+ scope: __listItemScope,
133
+ headingId,
134
+ open,
135
+ selected,
136
+ setSelected
137
+ }, collapsible ? /* @__PURE__ */ import_react2.default.createElement(Collapsible.Root, {
138
+ asChild: true,
139
+ open,
140
+ onOpenChange: setOpen
141
+ }, listItem) : listItem);
142
+ } finally {
143
+ _effect.f();
144
+ }
128
145
  });
129
146
  ListItem.displayName = LIST_ITEM_NAME;
130
147
  // Annotate the CommonJS export names for ESM import in node:
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/List.tsx", "../../../src/ListItem.tsx"],
4
4
  "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport React, { type ComponentPropsWithRef, forwardRef } from 'react';\n\n// TODO(thure): A lot of the accessible affordances for this kind of thing need to be implemented per https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role\n\nconst LIST_NAME = 'List';\n\ntype ListScopedProps<P> = P & { __listScope?: Scope };\n\ntype ListVariant = 'ordered' | 'unordered';\n\ntype ListItemSizes = 'one' | 'many';\n\ntype ListProps = ComponentPropsWithRef<typeof Primitive.ol> & {\n selectable?: boolean;\n variant?: ListVariant;\n itemSizes?: ListItemSizes;\n};\n\nconst [createListContext, createListScope] = createContextScope(LIST_NAME, []);\n\ntype ListContextValue = {\n selectable: Exclude<ListProps['selectable'], undefined>;\n variant: Exclude<ListProps['variant'], undefined>;\n itemSizes?: ListItemSizes;\n};\n\nconst [ListProvider, useListContext] = createListContext<ListContextValue>(LIST_NAME);\n\nconst List = forwardRef<HTMLOListElement, ListProps>((props: ListScopedProps<ListProps>, forwardedRef) => {\n const { __listScope, variant = 'ordered', selectable = false, itemSizes, children, ...rootProps } = props;\n const ListRoot = variant === 'ordered' ? Primitive.ol : Primitive.ul;\n return (\n <ListRoot {...(selectable && { role: 'listbox', 'aria-multiselectable': true })} {...rootProps} ref={forwardedRef}>\n <ListProvider\n {...{\n scope: __listScope,\n variant,\n selectable,\n itemSizes,\n }}\n >\n {children}\n </ListProvider>\n </ListRoot>\n );\n});\n\nList.displayName = LIST_NAME;\n\nexport { List, createListScope, useListContext, LIST_NAME };\n\nexport type { ListProps, ListVariant, ListScopedProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { CheckboxProps } from '@radix-ui/react-checkbox';\nimport { type CollapsibleContentProps, type CollapsibleTriggerProps } from '@radix-ui/react-collapsible';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, {\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type Dispatch,\n type ElementRef,\n forwardRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type SetStateAction,\n} from 'react';\n\nimport { useId } from '@dxos/react-hooks';\n\nimport { LIST_NAME, type ListScopedProps, useListContext } from './List';\n\nconst LIST_ITEM_NAME = 'ListItem';\n\ntype ListItemScopedProps<P> = P & { __listItemScope?: Scope };\n\ninterface ListItemData {\n id: string;\n labelId?: string;\n selected?: CheckboxProps['checked'];\n open?: boolean;\n}\n\ntype ListItemProps = Omit<ListItemData, 'id'> & { collapsible?: boolean } & RefAttributes<HTMLLIElement> &\n ComponentPropsWithoutRef<'li'> & {\n defaultOpen?: boolean;\n onOpenChange?: (nextOpen: boolean) => void;\n } & {\n onSelectedChange?: CheckboxProps['onCheckedChange'];\n defaultSelected?: CheckboxProps['defaultChecked'];\n };\n\ntype ListItemElement = ElementRef<'li'>;\n\nconst [createListItemContext, createListItemScope] = createContextScope(LIST_ITEM_NAME, []);\n\ntype ListItemContextValue = {\n headingId: string;\n open: boolean;\n selected: CheckboxProps['checked'];\n setSelected: Dispatch<SetStateAction<CheckboxProps['checked']>>;\n};\n\nconst [ListItemProvider, useListItemContext] = createListItemContext<ListItemContextValue>(LIST_ITEM_NAME);\n\ntype ListItemHeadingProps = ListItemScopedProps<Omit<ComponentPropsWithoutRef<'p'>, 'id'>> &\n RefAttributes<HTMLParagraphElement> & {\n asChild?: boolean;\n };\n\nconst ListItemHeading = forwardRef<HTMLDivElement, ListItemHeadingProps>(\n ({ children, asChild, __listItemScope, ...props }, forwardedRef) => {\n const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);\n const Root = asChild ? Slot : Primitive.div;\n return (\n <Root {...props} id={headingId} ref={forwardedRef}>\n {children}\n </Root>\n );\n },\n);\n\ntype ListItemOpenTriggerProps = ListItemScopedProps<CollapsibleTriggerProps>;\n\nconst ListItemOpenTrigger = Collapsible.Trigger;\n\ntype ListItemCollapsibleContentProps = ComponentProps<typeof Collapsible.Content>;\n\nconst ListItemCollapsibleContent: ForwardRefExoticComponent<CollapsibleContentProps> = Collapsible.Content;\n\nconst ListItem = forwardRef<ListItemElement, ListItemProps>(\n (props: ListItemScopedProps<ListScopedProps<ListItemProps>>, forwardedRef) => {\n const id = useId('listItem', props.id);\n\n const {\n __listScope,\n __listItemScope,\n children,\n selected: propsSelected,\n defaultSelected,\n onSelectedChange,\n open: propsOpen,\n defaultOpen,\n onOpenChange,\n collapsible,\n labelId,\n ...listItemProps\n } = props;\n const { selectable } = useListContext(LIST_NAME, __listScope);\n\n const [selected = false, setSelected] = useControllableState({\n prop: propsSelected,\n defaultProp: defaultSelected,\n onChange: onSelectedChange,\n });\n\n const [open = false, setOpen] = useControllableState({\n prop: propsOpen,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const headingId = useId('listItem__heading', labelId);\n\n const listItem = (\n <Primitive.li\n {...listItemProps}\n id={id}\n ref={forwardedRef}\n aria-labelledby={headingId}\n {...(selectable && { role: 'option', 'aria-selected': !!selected })}\n {...(open && { 'aria-expanded': true })}\n >\n {children}\n </Primitive.li>\n );\n\n return (\n <ListItemProvider\n scope={__listItemScope}\n headingId={headingId}\n open={open}\n selected={selected}\n setSelected={setSelected}\n >\n {collapsible ? (\n <Collapsible.Root asChild open={open} onOpenChange={setOpen}>\n {listItem}\n </Collapsible.Root>\n ) : (\n listItem\n )}\n </ListItemProvider>\n );\n },\n);\n\nListItem.displayName = LIST_ITEM_NAME;\n\nexport {\n ListItem,\n ListItemHeading,\n ListItemCollapsibleContent,\n ListItemOpenTrigger,\n createListItemScope,\n useListItemContext,\n LIST_ITEM_NAME,\n};\n\nexport type {\n ListItemProps,\n ListItemHeadingProps,\n ListItemCollapsibleContentProps,\n ListItemOpenTriggerProps,\n ListItemScopedProps,\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_react_context", "import_react_primitive", "import_react", "LIST_NAME", "createListContext", "createListScope", "createContextScope", "ListProvider", "useListContext", "List", "forwardRef", "props", "forwardedRef", "__listScope", "variant", "selectable", "itemSizes", "children", "rootProps", "ListRoot", "Primitive", "ol", "ul", "React", "role", "ref", "scope", "displayName", "LIST_ITEM_NAME", "createListItemContext", "createListItemScope", "ListItemProvider", "useListItemContext", "ListItemHeading", "asChild", "__listItemScope", "headingId", "Root", "Slot", "div", "id", "ListItemOpenTrigger", "Trigger", "ListItemCollapsibleContent", "Content", "ListItem", "useId", "selected", "propsSelected", "defaultSelected", "onSelectedChange", "open", "propsOpen", "defaultOpen", "onOpenChange", "collapsible", "labelId", "listItemProps", "setSelected", "useControllableState", "prop", "defaultProp", "onChange", "setOpen", "listItem", "li", "aria-labelledby"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5456,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13123,"imports":[{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":585,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10270},"packages/ui/primitives/react-list/dist/lib/node/index.cjs":{"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":935},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2530}},"bytes":3821}}}
1
+ {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5630,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13458,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":553,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10287},"packages/ui/primitives/react-list/dist/lib/node/index.cjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":1120},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2852}},"bytes":4328}}}
@@ -1,6 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // packages/ui/primitives/react-list/src/List.tsx
4
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
4
5
  import { createContextScope } from "@radix-ui/react-context";
5
6
  import { Primitive } from "@radix-ui/react-primitive";
6
7
  import React, { forwardRef } from "react";
@@ -8,25 +9,31 @@ var LIST_NAME = "List";
8
9
  var [createListContext, createListScope] = createContextScope(LIST_NAME, []);
9
10
  var [ListProvider, useListContext] = createListContext(LIST_NAME);
10
11
  var List = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
11
- const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
12
- const ListRoot = variant === "ordered" ? Primitive.ol : Primitive.ul;
13
- return /* @__PURE__ */ React.createElement(ListRoot, {
14
- ...selectable && {
15
- role: "listbox",
16
- "aria-multiselectable": true
17
- },
18
- ...rootProps,
19
- ref: forwardedRef
20
- }, /* @__PURE__ */ React.createElement(ListProvider, {
21
- scope: __listScope,
22
- variant,
23
- selectable,
24
- itemSizes
25
- }, children));
12
+ var _effect = _useSignals();
13
+ try {
14
+ const { __listScope, variant = "ordered", selectable = false, itemSizes, children, ...rootProps } = props;
15
+ const ListRoot = variant === "ordered" ? Primitive.ol : Primitive.ul;
16
+ return /* @__PURE__ */ React.createElement(ListRoot, {
17
+ ...selectable && {
18
+ role: "listbox",
19
+ "aria-multiselectable": true
20
+ },
21
+ ...rootProps,
22
+ ref: forwardedRef
23
+ }, /* @__PURE__ */ React.createElement(ListProvider, {
24
+ scope: __listScope,
25
+ variant,
26
+ selectable,
27
+ itemSizes
28
+ }, children));
29
+ } finally {
30
+ _effect.f();
31
+ }
26
32
  });
27
33
  List.displayName = LIST_NAME;
28
34
 
29
35
  // packages/ui/primitives/react-list/src/ListItem.tsx
36
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
30
37
  import * as Collapsible from "@radix-ui/react-collapsible";
31
38
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
32
39
  import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
@@ -38,55 +45,65 @@ var LIST_ITEM_NAME = "ListItem";
38
45
  var [createListItemContext, createListItemScope] = createContextScope2(LIST_ITEM_NAME, []);
39
46
  var [ListItemProvider, useListItemContext] = createListItemContext(LIST_ITEM_NAME);
40
47
  var ListItemHeading = /* @__PURE__ */ forwardRef2(({ children, asChild, __listItemScope, ...props }, forwardedRef) => {
41
- const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
42
- const Root2 = asChild ? Slot : Primitive2.div;
43
- return /* @__PURE__ */ React2.createElement(Root2, {
44
- ...props,
45
- id: headingId,
46
- ref: forwardedRef
47
- }, children);
48
+ var _effect = _useSignals2();
49
+ try {
50
+ const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
51
+ const Root2 = asChild ? Slot : Primitive2.div;
52
+ return /* @__PURE__ */ React2.createElement(Root2, {
53
+ ...props,
54
+ id: headingId,
55
+ ref: forwardedRef
56
+ }, children);
57
+ } finally {
58
+ _effect.f();
59
+ }
48
60
  });
49
61
  var ListItemOpenTrigger = Collapsible.Trigger;
50
62
  var ListItemCollapsibleContent = Collapsible.Content;
51
63
  var ListItem = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
52
- const id = useId("listItem", props.id);
53
- const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
54
- const { selectable } = useListContext(LIST_NAME, __listScope);
55
- const [selected = false, setSelected] = useControllableState({
56
- prop: propsSelected,
57
- defaultProp: defaultSelected,
58
- onChange: onSelectedChange
59
- });
60
- const [open = false, setOpen] = useControllableState({
61
- prop: propsOpen,
62
- defaultProp: defaultOpen,
63
- onChange: onOpenChange
64
- });
65
- const headingId = useId("listItem__heading", labelId);
66
- const listItem = /* @__PURE__ */ React2.createElement(Primitive2.li, {
67
- ...listItemProps,
68
- id,
69
- ref: forwardedRef,
70
- "aria-labelledby": headingId,
71
- ...selectable && {
72
- role: "option",
73
- "aria-selected": !!selected
74
- },
75
- ...open && {
76
- "aria-expanded": true
77
- }
78
- }, children);
79
- return /* @__PURE__ */ React2.createElement(ListItemProvider, {
80
- scope: __listItemScope,
81
- headingId,
82
- open,
83
- selected,
84
- setSelected
85
- }, collapsible ? /* @__PURE__ */ React2.createElement(Collapsible.Root, {
86
- asChild: true,
87
- open,
88
- onOpenChange: setOpen
89
- }, listItem) : listItem);
64
+ var _effect = _useSignals2();
65
+ try {
66
+ const id = useId("listItem", props.id);
67
+ const { __listScope, __listItemScope, children, selected: propsSelected, defaultSelected, onSelectedChange, open: propsOpen, defaultOpen, onOpenChange, collapsible, labelId, ...listItemProps } = props;
68
+ const { selectable } = useListContext(LIST_NAME, __listScope);
69
+ const [selected = false, setSelected] = useControllableState({
70
+ prop: propsSelected,
71
+ defaultProp: defaultSelected,
72
+ onChange: onSelectedChange
73
+ });
74
+ const [open = false, setOpen] = useControllableState({
75
+ prop: propsOpen,
76
+ defaultProp: defaultOpen,
77
+ onChange: onOpenChange
78
+ });
79
+ const headingId = useId("listItem__heading", labelId);
80
+ const listItem = /* @__PURE__ */ React2.createElement(Primitive2.li, {
81
+ ...listItemProps,
82
+ id,
83
+ ref: forwardedRef,
84
+ "aria-labelledby": headingId,
85
+ ...selectable && {
86
+ role: "option",
87
+ "aria-selected": !!selected
88
+ },
89
+ ...open && {
90
+ "aria-expanded": true
91
+ }
92
+ }, children);
93
+ return /* @__PURE__ */ React2.createElement(ListItemProvider, {
94
+ scope: __listItemScope,
95
+ headingId,
96
+ open,
97
+ selected,
98
+ setSelected
99
+ }, collapsible ? /* @__PURE__ */ React2.createElement(Collapsible.Root, {
100
+ asChild: true,
101
+ open,
102
+ onOpenChange: setOpen
103
+ }, listItem) : listItem);
104
+ } finally {
105
+ _effect.f();
106
+ }
90
107
  });
91
108
  ListItem.displayName = LIST_ITEM_NAME;
92
109
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/List.tsx", "../../../src/ListItem.tsx"],
4
4
  "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport React, { type ComponentPropsWithRef, forwardRef } from 'react';\n\n// TODO(thure): A lot of the accessible affordances for this kind of thing need to be implemented per https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role\n\nconst LIST_NAME = 'List';\n\ntype ListScopedProps<P> = P & { __listScope?: Scope };\n\ntype ListVariant = 'ordered' | 'unordered';\n\ntype ListItemSizes = 'one' | 'many';\n\ntype ListProps = ComponentPropsWithRef<typeof Primitive.ol> & {\n selectable?: boolean;\n variant?: ListVariant;\n itemSizes?: ListItemSizes;\n};\n\nconst [createListContext, createListScope] = createContextScope(LIST_NAME, []);\n\ntype ListContextValue = {\n selectable: Exclude<ListProps['selectable'], undefined>;\n variant: Exclude<ListProps['variant'], undefined>;\n itemSizes?: ListItemSizes;\n};\n\nconst [ListProvider, useListContext] = createListContext<ListContextValue>(LIST_NAME);\n\nconst List = forwardRef<HTMLOListElement, ListProps>((props: ListScopedProps<ListProps>, forwardedRef) => {\n const { __listScope, variant = 'ordered', selectable = false, itemSizes, children, ...rootProps } = props;\n const ListRoot = variant === 'ordered' ? Primitive.ol : Primitive.ul;\n return (\n <ListRoot {...(selectable && { role: 'listbox', 'aria-multiselectable': true })} {...rootProps} ref={forwardedRef}>\n <ListProvider\n {...{\n scope: __listScope,\n variant,\n selectable,\n itemSizes,\n }}\n >\n {children}\n </ListProvider>\n </ListRoot>\n );\n});\n\nList.displayName = LIST_NAME;\n\nexport { List, createListScope, useListContext, LIST_NAME };\n\nexport type { ListProps, ListVariant, ListScopedProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { CheckboxProps } from '@radix-ui/react-checkbox';\nimport { type CollapsibleContentProps, type CollapsibleTriggerProps } from '@radix-ui/react-collapsible';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, {\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type Dispatch,\n type ElementRef,\n forwardRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type SetStateAction,\n} from 'react';\n\nimport { useId } from '@dxos/react-hooks';\n\nimport { LIST_NAME, type ListScopedProps, useListContext } from './List';\n\nconst LIST_ITEM_NAME = 'ListItem';\n\ntype ListItemScopedProps<P> = P & { __listItemScope?: Scope };\n\ninterface ListItemData {\n id: string;\n labelId?: string;\n selected?: CheckboxProps['checked'];\n open?: boolean;\n}\n\ntype ListItemProps = Omit<ListItemData, 'id'> & { collapsible?: boolean } & RefAttributes<HTMLLIElement> &\n ComponentPropsWithoutRef<'li'> & {\n defaultOpen?: boolean;\n onOpenChange?: (nextOpen: boolean) => void;\n } & {\n onSelectedChange?: CheckboxProps['onCheckedChange'];\n defaultSelected?: CheckboxProps['defaultChecked'];\n };\n\ntype ListItemElement = ElementRef<'li'>;\n\nconst [createListItemContext, createListItemScope] = createContextScope(LIST_ITEM_NAME, []);\n\ntype ListItemContextValue = {\n headingId: string;\n open: boolean;\n selected: CheckboxProps['checked'];\n setSelected: Dispatch<SetStateAction<CheckboxProps['checked']>>;\n};\n\nconst [ListItemProvider, useListItemContext] = createListItemContext<ListItemContextValue>(LIST_ITEM_NAME);\n\ntype ListItemHeadingProps = ListItemScopedProps<Omit<ComponentPropsWithoutRef<'p'>, 'id'>> &\n RefAttributes<HTMLParagraphElement> & {\n asChild?: boolean;\n };\n\nconst ListItemHeading = forwardRef<HTMLDivElement, ListItemHeadingProps>(\n ({ children, asChild, __listItemScope, ...props }, forwardedRef) => {\n const { headingId } = useListItemContext(LIST_ITEM_NAME, __listItemScope);\n const Root = asChild ? Slot : Primitive.div;\n return (\n <Root {...props} id={headingId} ref={forwardedRef}>\n {children}\n </Root>\n );\n },\n);\n\ntype ListItemOpenTriggerProps = ListItemScopedProps<CollapsibleTriggerProps>;\n\nconst ListItemOpenTrigger = Collapsible.Trigger;\n\ntype ListItemCollapsibleContentProps = ComponentProps<typeof Collapsible.Content>;\n\nconst ListItemCollapsibleContent: ForwardRefExoticComponent<CollapsibleContentProps> = Collapsible.Content;\n\nconst ListItem = forwardRef<ListItemElement, ListItemProps>(\n (props: ListItemScopedProps<ListScopedProps<ListItemProps>>, forwardedRef) => {\n const id = useId('listItem', props.id);\n\n const {\n __listScope,\n __listItemScope,\n children,\n selected: propsSelected,\n defaultSelected,\n onSelectedChange,\n open: propsOpen,\n defaultOpen,\n onOpenChange,\n collapsible,\n labelId,\n ...listItemProps\n } = props;\n const { selectable } = useListContext(LIST_NAME, __listScope);\n\n const [selected = false, setSelected] = useControllableState({\n prop: propsSelected,\n defaultProp: defaultSelected,\n onChange: onSelectedChange,\n });\n\n const [open = false, setOpen] = useControllableState({\n prop: propsOpen,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const headingId = useId('listItem__heading', labelId);\n\n const listItem = (\n <Primitive.li\n {...listItemProps}\n id={id}\n ref={forwardedRef}\n aria-labelledby={headingId}\n {...(selectable && { role: 'option', 'aria-selected': !!selected })}\n {...(open && { 'aria-expanded': true })}\n >\n {children}\n </Primitive.li>\n );\n\n return (\n <ListItemProvider\n scope={__listItemScope}\n headingId={headingId}\n open={open}\n selected={selected}\n setSelected={setSelected}\n >\n {collapsible ? (\n <Collapsible.Root asChild open={open} onOpenChange={setOpen}>\n {listItem}\n </Collapsible.Root>\n ) : (\n listItem\n )}\n </ListItemProvider>\n );\n },\n);\n\nListItem.displayName = LIST_ITEM_NAME;\n\nexport {\n ListItem,\n ListItemHeading,\n ListItemCollapsibleContent,\n ListItemOpenTrigger,\n createListItemScope,\n useListItemContext,\n LIST_ITEM_NAME,\n};\n\nexport type {\n ListItemProps,\n ListItemHeadingProps,\n ListItemCollapsibleContentProps,\n ListItemOpenTriggerProps,\n ListItemScopedProps,\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["createContextScope", "Primitive", "React", "forwardRef", "LIST_NAME", "createListContext", "createListScope", "createContextScope", "ListProvider", "useListContext", "List", "forwardRef", "props", "forwardedRef", "__listScope", "variant", "selectable", "itemSizes", "children", "rootProps", "ListRoot", "Primitive", "ol", "ul", "role", "ref", "scope", "displayName", "Collapsible", "createContextScope", "Primitive", "Slot", "useControllableState", "React", "forwardRef", "useId", "LIST_ITEM_NAME", "createListItemContext", "createListItemScope", "createContextScope", "ListItemProvider", "useListItemContext", "ListItemHeading", "forwardRef", "children", "asChild", "__listItemScope", "props", "forwardedRef", "headingId", "Root", "Slot", "Primitive", "div", "React", "id", "ref", "ListItemOpenTrigger", "Trigger", "ListItemCollapsibleContent", "Content", "ListItem", "useId", "__listScope", "selected", "propsSelected", "defaultSelected", "onSelectedChange", "open", "propsOpen", "defaultOpen", "onOpenChange", "collapsible", "labelId", "listItemProps", "selectable", "useListContext", "LIST_NAME", "setSelected", "useControllableState", "prop", "defaultProp", "onChange", "setOpen", "listItem", "li", "aria-labelledby", "role", "scope", "displayName"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5456,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13123,"imports":[{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":585,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10272},"packages/ui/primitives/react-list/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":935},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2530}},"bytes":3914}}}
1
+ {"inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytes":5630,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytes":13458,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/primitives/react-list/src/index.ts":{"bytes":553,"imports":[{"path":"packages/ui/primitives/react-list/src/List.tsx","kind":"import-statement","original":"./List"},{"path":"packages/ui/primitives/react-list/src/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"}},"outputs":{"packages/ui/primitives/react-list/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10289},"packages/ui/primitives/react-list/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["LIST_ITEM_NAME","LIST_NAME","List","ListItem","ListItemCollapsibleContent","ListItemHeading","ListItemOpenTrigger","createListItemScope","createListScope","useListContext","useListItemContext"],"entryPoint":"packages/ui/primitives/react-list/src/index.ts","inputs":{"packages/ui/primitives/react-list/src/List.tsx":{"bytesInOutput":1120},"packages/ui/primitives/react-list/src/index.ts":{"bytesInOutput":0},"packages/ui/primitives/react-list/src/ListItem.tsx":{"bytesInOutput":2852}},"bytes":4421}}}
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-list",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-main.10c050d",
4
4
  "description": "List primitive components for React.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -24,13 +24,14 @@
24
24
  "src"
25
25
  ],
26
26
  "dependencies": {
27
+ "@preact-signals/safe-react": "^0.9.0",
27
28
  "@radix-ui/react-collapsible": "1.1.3",
28
29
  "@radix-ui/react-context": "1.1.1",
29
30
  "@radix-ui/react-primitive": "2.0.2",
30
31
  "@radix-ui/react-slot": "1.1.2",
31
32
  "@radix-ui/react-use-controllable-state": "1.1.0",
32
33
  "lodash.omit": "^4.5.0",
33
- "@dxos/react-hooks": "0.8.1"
34
+ "@dxos/react-hooks": "0.8.2-main.10c050d"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@radix-ui/react-checkbox": "1.1.4",