@gtkx/components 1.0.0-rc.2 → 1.0.0-rc.4
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/README.md +4 -5
- package/dist/adw/combo-row.d.ts +12 -0
- package/dist/adw/combo-row.d.ts.map +1 -0
- package/dist/adw/combo-row.js +14 -0
- package/dist/adw/combo-row.js.map +1 -0
- package/dist/adw/index.d.ts +2 -1
- package/dist/adw/index.d.ts.map +1 -1
- package/dist/adw/index.js +1 -0
- package/dist/adw/index.js.map +1 -1
- package/dist/adw/types.d.ts +11 -3
- package/dist/adw/types.d.ts.map +1 -1
- package/dist/adw/types.js.map +1 -1
- package/dist/column-view.d.ts.map +1 -1
- package/dist/column-view.js +4 -4
- package/dist/column-view.js.map +1 -1
- package/dist/drop-down.d.ts +4 -5
- package/dist/drop-down.d.ts.map +1 -1
- package/dist/drop-down.js +5 -112
- package/dist/drop-down.js.map +1 -1
- package/dist/grid-view.js +1 -1
- package/dist/grid-view.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/cells.d.ts +3 -3
- package/dist/internal/cells.d.ts.map +1 -1
- package/dist/internal/cells.js.map +1 -1
- package/dist/internal/collection-index.d.ts +5 -5
- package/dist/internal/collection-index.d.ts.map +1 -1
- package/dist/internal/collection-index.js +3 -3
- package/dist/internal/collection-index.js.map +1 -1
- package/dist/internal/collection-model.d.ts.map +1 -1
- package/dist/internal/collection-model.js +2 -5
- package/dist/internal/collection-model.js.map +1 -1
- package/dist/internal/collection.d.ts +2 -2
- package/dist/internal/collection.d.ts.map +1 -1
- package/dist/internal/collection.js.map +1 -1
- package/dist/internal/drop-down.d.ts +16 -0
- package/dist/internal/drop-down.d.ts.map +1 -0
- package/dist/internal/drop-down.js +110 -0
- package/dist/internal/drop-down.js.map +1 -0
- package/dist/internal/expansion.d.ts +1 -1
- package/dist/internal/expansion.d.ts.map +1 -1
- package/dist/internal/expansion.js +3 -4
- package/dist/internal/expansion.js.map +1 -1
- package/dist/internal/selection.d.ts +1 -0
- package/dist/internal/selection.d.ts.map +1 -1
- package/dist/internal/selection.js +1 -0
- package/dist/internal/selection.js.map +1 -1
- package/dist/internal/use-collection.d.ts +5 -6
- package/dist/internal/use-collection.d.ts.map +1 -1
- package/dist/internal/use-collection.js +10 -18
- package/dist/internal/use-collection.js.map +1 -1
- package/dist/types.d.ts +70 -48
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
- package/src/adw/combo-row.tsx +21 -0
- package/src/adw/index.ts +8 -1
- package/src/adw/types.ts +17 -3
- package/src/column-view.tsx +13 -13
- package/src/drop-down.tsx +10 -195
- package/src/grid-view.tsx +1 -1
- package/src/index.ts +7 -12
- package/src/internal/cells.tsx +12 -12
- package/src/internal/collection-index.ts +16 -16
- package/src/internal/collection-model.ts +2 -5
- package/src/internal/collection.ts +2 -2
- package/src/internal/drop-down.tsx +186 -0
- package/src/internal/expansion.ts +5 -6
- package/src/internal/selection.tsx +3 -0
- package/src/internal/use-collection.tsx +16 -29
- package/src/types.ts +83 -66
- package/dist/size-group.d.ts +0 -12
- package/dist/size-group.d.ts.map +0 -1
- package/dist/size-group.js +0 -41
- package/dist/size-group.js.map +0 -1
- package/src/size-group.tsx +0 -77
package/src/size-group.tsx
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import type * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
-
import type { ElementType, ReactNode, Ref, RefCallback } from "react";
|
|
3
|
-
import { GtkSizeGroup } from "@gtkx/jsx/gtk";
|
|
4
|
-
import { useMergedRef } from "@gtkx/react/internal";
|
|
5
|
-
import { createContext, useCallback, useContext, useState } from "react";
|
|
6
|
-
import type { SizeGroupChildProps, SizeGroupProps } from "./types.js";
|
|
7
|
-
|
|
8
|
-
type Register = RefCallback<Gtk.Widget | null>;
|
|
9
|
-
|
|
10
|
-
type SizeGroupChildRuntimeProps = {
|
|
11
|
-
component: ElementType;
|
|
12
|
-
ref?: Ref<Gtk.Widget | null> | undefined;
|
|
13
|
-
} & Record<string, unknown>;
|
|
14
|
-
|
|
15
|
-
type SizeGroupComponent = ((props: SizeGroupProps) => ReactNode) & {
|
|
16
|
-
Child: <C extends ElementType>(props: SizeGroupChildProps<C>) => ReactNode;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const SizeGroupContext = createContext<Register | null>(null);
|
|
20
|
-
const SizeGroupChild = SizeGroupChildImpl as <C extends ElementType>(props: SizeGroupChildProps<C>) => ReactNode;
|
|
21
|
-
/**
|
|
22
|
-
* Creates a Gtk.SizeGroup that keeps widgets joined through `SizeGroup.Child`
|
|
23
|
-
* at a common size in the given mode, without contributing a widget of its own.
|
|
24
|
-
*/
|
|
25
|
-
const SizeGroup: SizeGroupComponent = Object.assign(SizeGroupRoot, { Child: SizeGroupChild });
|
|
26
|
-
|
|
27
|
-
const useRegister = (): Register => {
|
|
28
|
-
const register = useContext(SizeGroupContext);
|
|
29
|
-
|
|
30
|
-
if (register === null) {
|
|
31
|
-
throw new Error("<SizeGroup.Child> must be a child of <SizeGroup>");
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return register;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
function SizeGroupChildImpl(props: SizeGroupChildRuntimeProps): ReactNode {
|
|
38
|
-
const { component: Component, ref, ...rest } = props;
|
|
39
|
-
const refCallback = useMergedRef<Gtk.Widget | null>(ref, useRegister());
|
|
40
|
-
|
|
41
|
-
return <Component {...rest} ref={refCallback} />;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const addWidget = (widgets: Gtk.Widget[], widget: Gtk.Widget): Gtk.Widget[] =>
|
|
45
|
-
widgets.includes(widget) ? widgets : [...widgets, widget];
|
|
46
|
-
|
|
47
|
-
const removeWidget = (widgets: Gtk.Widget[], widget: Gtk.Widget): Gtk.Widget[] =>
|
|
48
|
-
widgets.filter((entry) => entry !== widget);
|
|
49
|
-
|
|
50
|
-
function SizeGroupRoot(props: SizeGroupProps): ReactNode {
|
|
51
|
-
const { mode, ref, children } = props;
|
|
52
|
-
const [widgets, setWidgets] = useState<Gtk.Widget[]>([]);
|
|
53
|
-
|
|
54
|
-
const register = useCallback<Register>(
|
|
55
|
-
(widget) => {
|
|
56
|
-
if (widget === null) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
setWidgets((previous) => addWidget(previous, widget));
|
|
61
|
-
|
|
62
|
-
return () => {
|
|
63
|
-
setWidgets((previous) => removeWidget(previous, widget));
|
|
64
|
-
};
|
|
65
|
-
},
|
|
66
|
-
[setWidgets],
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
return (
|
|
70
|
-
<>
|
|
71
|
-
<GtkSizeGroup ref={ref} mode={mode} widgets={widgets} />
|
|
72
|
-
<SizeGroupContext.Provider value={register}>{children}</SizeGroupContext.Provider>
|
|
73
|
-
</>
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export { SizeGroup };
|