@dxos/react-ui-pickers 0.8.1-staging.9eaf14f → 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,273 +1,283 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx
4
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
4
5
  import emojiData from "@emoji-mart/data";
5
6
  import EmojiMart from "@emoji-mart/react";
6
7
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
7
- import React, { useRef, useState } from "react";
8
+ import React, { useState } from "react";
8
9
  import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon, ButtonGroup } from "@dxos/react-ui";
9
10
  var EmojiPickerToolbarButton = ({ classNames, emoji, disabled, defaultEmoji, onChangeEmoji }) => {
10
- const { t } = useTranslation("os");
11
- const { themeMode } = useThemeContext();
12
- const [_emojiValue, setEmojiValue] = useControllableState({
13
- prop: emoji,
14
- onChange: onChangeEmoji,
15
- defaultProp: defaultEmoji
16
- });
17
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
18
- const suppressNextTooltip = useRef(false);
19
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
20
- return /* @__PURE__ */ React.createElement(Tooltip.Root, {
21
- open: triggerTooltipOpen,
22
- onOpenChange: (nextOpen) => {
23
- if (suppressNextTooltip.current) {
24
- setTriggerTooltipOpen(false);
25
- suppressNextTooltip.current = false;
26
- } else {
27
- setTriggerTooltipOpen(nextOpen);
11
+ var _effect = _useSignals();
12
+ try {
13
+ const { t } = useTranslation("os");
14
+ const { themeMode } = useThemeContext();
15
+ const [_emojiValue, setEmojiValue] = useControllableState({
16
+ prop: emoji,
17
+ onChange: onChangeEmoji,
18
+ defaultProp: defaultEmoji
19
+ });
20
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
21
+ return /* @__PURE__ */ React.createElement(Popover.Root, {
22
+ open: emojiPickerOpen,
23
+ onOpenChange: (nextOpen) => {
24
+ setEmojiPickerOpen(nextOpen);
28
25
  }
29
- }
30
- }, /* @__PURE__ */ React.createElement(Popover.Root, {
31
- open: emojiPickerOpen,
32
- onOpenChange: (nextOpen) => {
33
- setEmojiPickerOpen(nextOpen);
34
- suppressNextTooltip.current = true;
35
- }
36
- }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
37
- asChild: true
38
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
39
- asChild: true
40
- }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
41
- classNames: [
42
- "gap-2 text-2xl plb-1",
43
- classNames
44
- ],
45
- disabled
46
- }, /* @__PURE__ */ React.createElement("span", {
47
- className: "sr-only"
48
- }, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
49
- icon: "ph--user-circle--regular",
50
- size: 5
51
- })))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
52
- side: "bottom"
53
- }, t("select emoji label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
54
- side: "bottom",
55
- onKeyDownCapture: (event) => {
56
- if (event.key === "Escape") {
57
- event.stopPropagation();
58
- setEmojiPickerOpen(false);
59
- suppressNextTooltip.current = true;
60
- }
61
- }
62
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
63
- data: emojiData,
64
- onEmojiSelect: ({ native }) => {
65
- if (native) {
66
- setEmojiValue(native);
67
- setEmojiPickerOpen(false);
26
+ }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
27
+ asChild: true,
28
+ content: t("select emoji label"),
29
+ side: "bottom"
30
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
31
+ asChild: true
32
+ }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
33
+ classNames: [
34
+ "gap-2 text-2xl plb-1",
35
+ classNames
36
+ ],
37
+ disabled
38
+ }, /* @__PURE__ */ React.createElement("span", {
39
+ className: "sr-only"
40
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
41
+ icon: "ph--user-circle--regular",
42
+ size: 5
43
+ })))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
44
+ side: "bottom",
45
+ onKeyDownCapture: (event) => {
46
+ if (event.key === "Escape") {
47
+ event.stopPropagation();
48
+ setEmojiPickerOpen(false);
49
+ }
68
50
  }
69
- },
70
- autoFocus: true,
71
- maxFrequentRows: 0,
72
- noCountryFlags: true,
73
- theme: themeMode
74
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null)))));
51
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
52
+ data: emojiData,
53
+ onEmojiSelect: ({ native }) => {
54
+ if (native) {
55
+ setEmojiValue(native);
56
+ setEmojiPickerOpen(false);
57
+ }
58
+ },
59
+ autoFocus: true,
60
+ maxFrequentRows: 0,
61
+ noCountryFlags: true,
62
+ theme: themeMode
63
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
64
+ } finally {
65
+ _effect.f();
66
+ }
75
67
  };
76
68
  var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear, triggerVariant = "ghost", classNames }) => {
77
- const { t } = useTranslation("os");
78
- const [isMd] = useMediaQuery("md", {
79
- ssr: false
80
- });
81
- const [emojiValue, setEmojiValue] = useControllableState({
82
- prop: emoji,
83
- onChange: onChangeEmoji,
84
- defaultProp: defaultEmoji
85
- });
86
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
87
- return /* @__PURE__ */ React.createElement(ButtonGroup, {
88
- classNames
89
- }, /* @__PURE__ */ React.createElement(Popover.Root, {
90
- open: emojiPickerOpen,
91
- onOpenChange: setEmojiPickerOpen
92
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
93
- asChild: true
94
- }, /* @__PURE__ */ React.createElement(Button, {
95
- variant: triggerVariant,
96
- classNames: "grow gap-2 text-2xl plb-1",
97
- disabled
98
- }, /* @__PURE__ */ React.createElement("span", {
99
- className: "sr-only"
100
- }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
101
- icon: "ph--caret-down--bold",
102
- size: 3
103
- }))), /* @__PURE__ */ React.createElement(Popover.Content, {
104
- side: "right",
105
- sideOffset: isMd ? 0 : -310,
106
- onKeyDownCapture: (event) => {
107
- if (event.key === "Escape") {
108
- event.stopPropagation();
109
- setEmojiPickerOpen(false);
110
- }
111
- }
112
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
113
- data: emojiData,
114
- onEmojiSelect: ({ native }) => {
115
- if (native) {
116
- setEmojiValue(native);
117
- setEmojiPickerOpen(false);
69
+ var _effect = _useSignals();
70
+ try {
71
+ const { t } = useTranslation("os");
72
+ const [isMd] = useMediaQuery("md", {
73
+ ssr: false
74
+ });
75
+ const [emojiValue, setEmojiValue] = useControllableState({
76
+ prop: emoji,
77
+ onChange: onChangeEmoji,
78
+ defaultProp: defaultEmoji
79
+ });
80
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
81
+ return /* @__PURE__ */ React.createElement(ButtonGroup, {
82
+ classNames
83
+ }, /* @__PURE__ */ React.createElement(Popover.Root, {
84
+ open: emojiPickerOpen,
85
+ onOpenChange: setEmojiPickerOpen
86
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
87
+ asChild: true
88
+ }, /* @__PURE__ */ React.createElement(Button, {
89
+ variant: triggerVariant,
90
+ classNames: "grow gap-2 text-2xl plb-1",
91
+ disabled
92
+ }, /* @__PURE__ */ React.createElement("span", {
93
+ className: "sr-only"
94
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
95
+ icon: "ph--caret-down--bold",
96
+ size: 3
97
+ }))), /* @__PURE__ */ React.createElement(Popover.Content, {
98
+ side: "right",
99
+ sideOffset: isMd ? 0 : -310,
100
+ onKeyDownCapture: (event) => {
101
+ if (event.key === "Escape") {
102
+ event.stopPropagation();
103
+ setEmojiPickerOpen(false);
104
+ }
118
105
  }
119
- },
120
- autoFocus: true,
121
- maxFrequentRows: 0,
122
- noCountryFlags: true
123
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
124
- asChild: true
125
- }, /* @__PURE__ */ React.createElement(Button, {
126
- variant: triggerVariant,
127
- onClick: onClickClear,
128
- disabled
129
- }, /* @__PURE__ */ React.createElement("span", {
130
- className: "sr-only"
131
- }, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
132
- icon: "ph--arrow-counter-clockwise--regular",
133
- size: 5
134
- }))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
135
- side: "right"
136
- }, t("clear label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))));
106
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
107
+ data: emojiData,
108
+ onEmojiSelect: ({ native }) => {
109
+ if (native) {
110
+ setEmojiValue(native);
111
+ setEmojiPickerOpen(false);
112
+ }
113
+ },
114
+ autoFocus: true,
115
+ maxFrequentRows: 0,
116
+ noCountryFlags: true
117
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
118
+ asChild: true,
119
+ content: t("clear label"),
120
+ side: "right"
121
+ }, /* @__PURE__ */ React.createElement(Button, {
122
+ variant: triggerVariant,
123
+ onClick: onClickClear,
124
+ disabled
125
+ }, /* @__PURE__ */ React.createElement("span", {
126
+ className: "sr-only"
127
+ }, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
128
+ icon: "ph--arrow-counter-clockwise--regular",
129
+ size: 5
130
+ }))));
131
+ } finally {
132
+ _effect.f();
133
+ }
137
134
  };
138
135
 
139
136
  // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
137
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
140
138
  import React3 from "react";
141
139
  import { useTranslation as useTranslation2 } from "@dxos/react-ui";
142
140
  import { hues } from "@dxos/react-ui-theme";
143
141
 
144
142
  // packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx
143
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
145
144
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
146
- import React2, { useEffect, useRef as useRef2, useState as useState2 } from "react";
145
+ import React2, { useEffect, useState as useState2 } from "react";
147
146
  import { Button as Button2, DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip as Tooltip2 } from "@dxos/react-ui";
148
147
  var PickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
149
- const [value, setValue] = useControllableState2({
150
- prop: _value,
151
- defaultProp: _defaultValue,
152
- onChange
153
- });
154
- useEffect(() => setValue(_value), [
155
- _value
156
- ]);
157
- const [open, setOpen] = useState2(false);
158
- const suppressNextTooltip = useRef2(false);
159
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
160
- const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
161
- return /* @__PURE__ */ React2.createElement(Tooltip2.Root, {
162
- open: triggerTooltipOpen,
163
- onOpenChange: (nextOpen) => {
164
- if (suppressNextTooltip.current) {
165
- setTriggerTooltipOpen(false);
166
- suppressNextTooltip.current = false;
167
- } else {
168
- setTriggerTooltipOpen(nextOpen);
169
- }
170
- }
171
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
172
- modal: false,
173
- open,
174
- onOpenChange: (nextOpen) => {
175
- setOpen(nextOpen);
176
- suppressNextTooltip.current = true;
177
- }
178
- }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
179
- asChild: true
180
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
181
- asChild: true
182
- }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
183
- classNames: [
184
- "gap-2 plb-1",
185
- classNames
186
- ],
187
- disabled
188
- }, /* @__PURE__ */ React2.createElement("span", {
189
- className: "sr-only"
190
- }, label), value && /* @__PURE__ */ React2.createElement(Component, {
191
- value,
192
- iconSize
193
- }) || /* @__PURE__ */ React2.createElement(Icon2, {
194
- icon,
195
- size: iconSize
196
- }), /* @__PURE__ */ React2.createElement(Icon2, {
197
- icon: "ph--caret-down--bold",
198
- size: 3
199
- })))), /* @__PURE__ */ React2.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip2.Content, {
200
- side: "bottom"
201
- }, label, /* @__PURE__ */ React2.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
202
- side: "bottom",
203
- classNames: "!is-min"
204
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
205
- classNames: "grid grid-cols-[repeat(6,min-content)]"
206
- }, values.map((_value2) => {
207
- return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
208
- key: _value2,
209
- checked: _value2 === value,
210
- onCheckedChange: () => setValue(_value2),
211
- classNames: "p-1 items-center justify-center aspect-square"
212
- }, /* @__PURE__ */ React2.createElement(Component, {
213
- value: _value2,
148
+ var _effect = _useSignals2();
149
+ try {
150
+ const [value, setValue] = useControllableState2({
151
+ prop: _value,
152
+ defaultProp: _defaultValue,
153
+ onChange
154
+ });
155
+ useEffect(() => setValue(_value), [
156
+ _value
157
+ ]);
158
+ const [open, setOpen] = useState2(false);
159
+ const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
160
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
161
+ modal: false,
162
+ open,
163
+ onOpenChange: setOpen
164
+ }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
165
+ asChild: true,
166
+ content: label,
167
+ side: "bottom"
168
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
169
+ asChild: true
170
+ }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
171
+ classNames: [
172
+ "gap-2 plb-1",
173
+ classNames
174
+ ],
175
+ disabled
176
+ }, /* @__PURE__ */ React2.createElement("span", {
177
+ className: "sr-only"
178
+ }, label), value && /* @__PURE__ */ React2.createElement(Component, {
179
+ value,
214
180
  iconSize
215
- }));
216
- }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
217
- onCheckedChange: () => onReset(),
218
- classNames: "p-1 items-center justify-center aspect-square"
219
- }, /* @__PURE__ */ React2.createElement(Icon2, {
220
- icon: "ph--x--regular",
221
- size: iconSize
222
- }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null)))));
181
+ }) || /* @__PURE__ */ React2.createElement(Icon2, {
182
+ icon,
183
+ size: iconSize
184
+ }), /* @__PURE__ */ React2.createElement(Icon2, {
185
+ icon: "ph--caret-down--bold",
186
+ size: 3
187
+ })))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
188
+ side: "bottom",
189
+ classNames: "!is-min"
190
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
191
+ classNames: "grid grid-cols-[repeat(6,min-content)]"
192
+ }, values.map((_value2) => {
193
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
194
+ key: _value2,
195
+ checked: _value2 === value,
196
+ onCheckedChange: () => setValue(_value2),
197
+ classNames: "p-1 items-center justify-center aspect-square"
198
+ }, /* @__PURE__ */ React2.createElement(Component, {
199
+ value: _value2,
200
+ iconSize
201
+ }));
202
+ }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
203
+ onCheckedChange: () => onReset(),
204
+ classNames: "p-1 items-center justify-center aspect-square"
205
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
206
+ icon: "ph--x--regular",
207
+ size: iconSize
208
+ }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))));
209
+ } finally {
210
+ _effect.f();
211
+ }
223
212
  };
224
213
 
225
214
  // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
226
215
  var HuePicker = (props) => {
227
- const { t } = useTranslation2("os");
228
- return /* @__PURE__ */ React3.createElement(PickerButton, {
229
- Component: HuePreview,
230
- label: t("select hue label"),
231
- icon: "ph--palette--regular",
232
- values: hues,
233
- ...props
234
- });
216
+ var _effect = _useSignals3();
217
+ try {
218
+ const { t } = useTranslation2("os");
219
+ return /* @__PURE__ */ React3.createElement(PickerButton, {
220
+ Component: HuePreview,
221
+ label: t("select hue label"),
222
+ icon: "ph--palette--regular",
223
+ values: hues,
224
+ ...props
225
+ });
226
+ } finally {
227
+ _effect.f();
228
+ }
235
229
  };
236
230
  var HuePreview = ({ value }) => {
237
- const size = 16;
238
- return /* @__PURE__ */ React3.createElement("div", {
239
- className: "flex p-[2px] justify-center items-center"
240
- }, /* @__PURE__ */ React3.createElement("svg", {
241
- viewBox: `0 0 ${size} ${size}`,
242
- className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
243
- }, /* @__PURE__ */ React3.createElement("rect", {
244
- x: 0,
245
- y: 0,
246
- width: size,
247
- height: size,
248
- fill: `var(--dx-${value}Fill)`,
249
- strokeWidth: 4
250
- })));
231
+ var _effect = _useSignals3();
232
+ try {
233
+ const size = 16;
234
+ return /* @__PURE__ */ React3.createElement("div", {
235
+ className: "flex p-[2px] justify-center items-center"
236
+ }, /* @__PURE__ */ React3.createElement("svg", {
237
+ viewBox: `0 0 ${size} ${size}`,
238
+ className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
239
+ }, /* @__PURE__ */ React3.createElement("rect", {
240
+ x: 0,
241
+ y: 0,
242
+ width: size,
243
+ height: size,
244
+ fill: `var(--dx-${value}Fill)`,
245
+ strokeWidth: 4
246
+ })));
247
+ } finally {
248
+ _effect.f();
249
+ }
251
250
  };
252
251
 
253
252
  // packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx
253
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
254
254
  import React4 from "react";
255
255
  import { Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
256
256
  var IconPicker = ({ ...props }) => {
257
- const { t } = useTranslation3("os");
258
- return /* @__PURE__ */ React4.createElement(PickerButton, {
259
- Component: IconPreview,
260
- label: t("select icon label"),
261
- icon: "ph--selection--regular",
262
- values: iconValues,
263
- ...props
264
- });
257
+ var _effect = _useSignals4();
258
+ try {
259
+ const { t } = useTranslation3("os");
260
+ return /* @__PURE__ */ React4.createElement(PickerButton, {
261
+ Component: IconPreview,
262
+ label: t("select icon label"),
263
+ icon: "ph--selection--regular",
264
+ values: iconValues,
265
+ ...props
266
+ });
267
+ } finally {
268
+ _effect.f();
269
+ }
265
270
  };
266
271
  var IconPreview = ({ value, iconSize = 5 }) => {
267
- return /* @__PURE__ */ React4.createElement(Icon3, {
268
- icon: `ph--${value}--regular`,
269
- size: iconSize
270
- });
272
+ var _effect = _useSignals4();
273
+ try {
274
+ return /* @__PURE__ */ React4.createElement(Icon3, {
275
+ icon: `ph--${value}--regular`,
276
+ size: iconSize
277
+ });
278
+ } finally {
279
+ _effect.f();
280
+ }
271
281
  };
272
282
  var icons = [
273
283
  "ph--air-traffic-control--regular",