@gtkx/testing 1.0.0-rc.1 → 1.0.0-rc.2
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/act.d.ts +6 -6
- package/dist/act.d.ts.map +1 -1
- package/dist/act.js +34 -26
- package/dist/act.js.map +1 -1
- package/dist/bound-queries.d.ts +4 -3
- package/dist/bound-queries.d.ts.map +1 -1
- package/dist/bound-queries.js.map +1 -1
- package/dist/build-queries.d.ts +5 -5
- package/dist/build-queries.d.ts.map +1 -1
- package/dist/build-queries.js +21 -9
- package/dist/build-queries.js.map +1 -1
- package/dist/cleanup-registry.d.ts +4 -3
- package/dist/cleanup-registry.d.ts.map +1 -1
- package/dist/cleanup-registry.js +13 -3
- package/dist/cleanup-registry.js.map +1 -1
- package/dist/config.d.ts +5 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -9
- package/dist/config.js.map +1 -1
- package/dist/editable.d.ts +6 -5
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +7 -5
- package/dist/editable.js.map +1 -1
- package/dist/errors.d.ts +7 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +64 -48
- package/dist/errors.js.map +1 -1
- package/dist/fire-event.d.ts +2 -1
- package/dist/fire-event.d.ts.map +1 -1
- package/dist/fire-event.js +2 -1
- package/dist/fire-event.js.map +1 -1
- package/dist/frame-sync.d.ts +2 -1
- package/dist/frame-sync.d.ts.map +1 -1
- package/dist/frame-sync.js +28 -21
- package/dist/frame-sync.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/matchers.d.ts +38 -34
- package/dist/matchers.d.ts.map +1 -1
- package/dist/matchers.js +72 -58
- package/dist/matchers.js.map +1 -1
- package/dist/pretty-widget.d.ts +6 -4
- package/dist/pretty-widget.d.ts.map +1 -1
- package/dist/pretty-widget.js +64 -24
- package/dist/pretty-widget.js.map +1 -1
- package/dist/queries.d.ts +143 -86
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +231 -147
- package/dist/queries.js.map +1 -1
- package/dist/register-test-hooks.js +2 -1
- package/dist/register-test-hooks.js.map +1 -1
- package/dist/render-hook.d.ts +3 -2
- package/dist/render-hook.d.ts.map +1 -1
- package/dist/render-hook.js +2 -1
- package/dist/render-hook.js.map +1 -1
- package/dist/render.d.ts +3 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +24 -18
- package/dist/render.js.map +1 -1
- package/dist/role-helpers.d.ts +6 -5
- package/dist/role-helpers.d.ts.map +1 -1
- package/dist/role-helpers.js +16 -12
- package/dist/role-helpers.js.map +1 -1
- package/dist/screen.d.ts +4 -3
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +13 -11
- package/dist/screen.js.map +1 -1
- package/dist/screenshot.d.ts +4 -3
- package/dist/screenshot.d.ts.map +1 -1
- package/dist/screenshot.js +43 -36
- package/dist/screenshot.js.map +1 -1
- package/dist/suggestions.d.ts +11 -6
- package/dist/suggestions.d.ts.map +1 -1
- package/dist/suggestions.js +10 -5
- package/dist/suggestions.js.map +1 -1
- package/dist/traversal.d.ts +7 -7
- package/dist/traversal.d.ts.map +1 -1
- package/dist/traversal.js +17 -11
- package/dist/traversal.js.map +1 -1
- package/dist/types.d.ts +39 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/user-event/adjustment.d.ts +5 -3
- package/dist/user-event/adjustment.d.ts.map +1 -1
- package/dist/user-event/adjustment.js +6 -4
- package/dist/user-event/adjustment.js.map +1 -1
- package/dist/user-event/click.d.ts +6 -5
- package/dist/user-event/click.d.ts.map +1 -1
- package/dist/user-event/click.js +29 -21
- package/dist/user-event/click.js.map +1 -1
- package/dist/user-event/controller.d.ts +6 -5
- package/dist/user-event/controller.d.ts.map +1 -1
- package/dist/user-event/controller.js +9 -6
- package/dist/user-event/controller.js.map +1 -1
- package/dist/user-event/dispatch.d.ts +3 -3
- package/dist/user-event/dispatch.d.ts.map +1 -1
- package/dist/user-event/dispatch.js +3 -2
- package/dist/user-event/dispatch.js.map +1 -1
- package/dist/user-event/event-wrapper.d.ts +2 -1
- package/dist/user-event/event-wrapper.d.ts.map +1 -1
- package/dist/user-event/event-wrapper.js +27 -16
- package/dist/user-event/event-wrapper.js.map +1 -1
- package/dist/user-event/gesture.d.ts +18 -14
- package/dist/user-event/gesture.d.ts.map +1 -1
- package/dist/user-event/gesture.js +70 -37
- package/dist/user-event/gesture.js.map +1 -1
- package/dist/user-event/index.d.ts +17 -10
- package/dist/user-event/index.d.ts.map +1 -1
- package/dist/user-event/index.js +7 -3
- package/dist/user-event/index.js.map +1 -1
- package/dist/user-event/keyboard.d.ts +4 -3
- package/dist/user-event/keyboard.d.ts.map +1 -1
- package/dist/user-event/keyboard.js +89 -58
- package/dist/user-event/keyboard.js.map +1 -1
- package/dist/user-event/pointer.d.ts +7 -3
- package/dist/user-event/pointer.d.ts.map +1 -1
- package/dist/user-event/pointer.js +4 -1
- package/dist/user-event/pointer.js.map +1 -1
- package/dist/user-event/selection.d.ts +3 -2
- package/dist/user-event/selection.d.ts.map +1 -1
- package/dist/user-event/selection.js +26 -27
- package/dist/user-event/selection.js.map +1 -1
- package/dist/user-event/state.d.ts +3 -2
- package/dist/user-event/state.d.ts.map +1 -1
- package/dist/user-event/state.js +2 -1
- package/dist/user-event/state.js.map +1 -1
- package/dist/user-event/text.d.ts +8 -7
- package/dist/user-event/text.d.ts.map +1 -1
- package/dist/user-event/text.js +39 -33
- package/dist/user-event/text.js.map +1 -1
- package/dist/wait-for.d.ts +5 -5
- package/dist/wait-for.d.ts.map +1 -1
- package/dist/wait-for.js +45 -30
- package/dist/wait-for.js.map +1 -1
- package/dist/widget-accessible-properties.d.ts +26 -25
- package/dist/widget-accessible-properties.d.ts.map +1 -1
- package/dist/widget-accessible-properties.js +106 -61
- package/dist/widget-accessible-properties.js.map +1 -1
- package/dist/within.d.ts +2 -1
- package/dist/within.d.ts.map +1 -1
- package/dist/within.js +2 -1
- package/dist/within.js.map +1 -1
- package/package.json +11 -9
- package/src/act.ts +44 -35
- package/src/bound-queries.ts +5 -4
- package/src/build-queries.ts +84 -43
- package/src/cleanup-registry.ts +18 -5
- package/src/config.ts +16 -12
- package/src/editable.ts +13 -6
- package/src/errors.ts +106 -45
- package/src/fire-event.ts +3 -1
- package/src/frame-sync.ts +38 -21
- package/src/index.ts +2 -1
- package/src/matchers.ts +158 -107
- package/src/pretty-widget.ts +114 -42
- package/src/queries.ts +422 -233
- package/src/register-test-hooks.ts +4 -1
- package/src/render-hook.tsx +10 -4
- package/src/render.tsx +58 -33
- package/src/role-helpers.ts +29 -16
- package/src/screen.ts +17 -12
- package/src/screenshot.ts +61 -38
- package/src/suggestions.ts +29 -10
- package/src/traversal.ts +35 -15
- package/src/types.ts +65 -32
- package/src/user-event/adjustment.ts +23 -10
- package/src/user-event/click.ts +49 -20
- package/src/user-event/controller.ts +21 -7
- package/src/user-event/dispatch.ts +4 -2
- package/src/user-event/event-wrapper.ts +42 -16
- package/src/user-event/gesture.ts +135 -50
- package/src/user-event/index.ts +19 -12
- package/src/user-event/keyboard.ts +147 -61
- package/src/user-event/pointer.ts +20 -8
- package/src/user-event/selection.ts +69 -32
- package/src/user-event/state.ts +4 -2
- package/src/user-event/text.ts +73 -38
- package/src/wait-for.ts +77 -36
- package/src/widget-accessible-properties.ts +218 -74
- package/src/within.ts +7 -4
|
@@ -7,21 +7,29 @@ const WINDOW_NOT_ALLOCATED = "its window has not been allocated a size";
|
|
|
7
7
|
const NOT_MAPPED = "it is not mapped (it is not shown on screen, e.g. it is hidden or on a non-visible page)";
|
|
8
8
|
const WINDOW_NOT_ACTIVE = "its window never became active";
|
|
9
9
|
const actionableHop = () => new Promise((resolve) => setTimeout(resolve, 1));
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
if (
|
|
13
|
-
return NOT_SENSITIVE;
|
|
14
|
-
const root = widget.getRoot();
|
|
15
|
-
if (!(root instanceof Gtk.Window) || !root.getVisible())
|
|
16
|
-
return null;
|
|
17
|
-
if (root.getAllocatedWidth() === 0)
|
|
10
|
+
const canDisplayDeliverActivation = (window) => window.getDisplay().getDefaultSeat() !== null;
|
|
11
|
+
const findWindowActionabilityFailure = (widget, root) => {
|
|
12
|
+
if (root.getAllocatedWidth() === 0) {
|
|
18
13
|
return WINDOW_NOT_ALLOCATED;
|
|
19
|
-
|
|
14
|
+
}
|
|
15
|
+
if (!widget.getMapped()) {
|
|
20
16
|
return NOT_MAPPED;
|
|
21
|
-
|
|
17
|
+
}
|
|
18
|
+
if (canDisplayDeliverActivation(root) && !root.isActive()) {
|
|
22
19
|
return WINDOW_NOT_ACTIVE;
|
|
20
|
+
}
|
|
23
21
|
return null;
|
|
24
22
|
};
|
|
23
|
+
const findActionabilityFailure = (widget) => {
|
|
24
|
+
if (!widget.isSensitive()) {
|
|
25
|
+
return NOT_SENSITIVE;
|
|
26
|
+
}
|
|
27
|
+
const root = widget.getRoot();
|
|
28
|
+
if (!(root instanceof Gtk.Window) || !root.getVisible()) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return findWindowActionabilityFailure(widget, root);
|
|
32
|
+
};
|
|
25
33
|
const describeWidget = (widget) => {
|
|
26
34
|
const tag = widget.constructor.name;
|
|
27
35
|
const name = widget.getName();
|
|
@@ -37,12 +45,15 @@ const waitForActionable = async (widget) => {
|
|
|
37
45
|
failure = findActionabilityFailure(widget);
|
|
38
46
|
}
|
|
39
47
|
if (failure !== null) {
|
|
40
|
-
throw new Error(`Cannot dispatch user event: ${describeWidget(widget)} did not become actionable
|
|
48
|
+
throw new Error(`Cannot dispatch user event: ${describeWidget(widget)} did not become actionable ` +
|
|
49
|
+
`within ${String(timeout)}ms because ${failure}`);
|
|
41
50
|
}
|
|
42
51
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
})
|
|
52
|
+
const wrapEvent = async (widget, body) => {
|
|
53
|
+
await waitForActionable(widget);
|
|
54
|
+
await runInAct(async () => {
|
|
55
|
+
await body();
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
export { wrapEvent };
|
|
48
59
|
//# sourceMappingURL=event-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-wrapper.js","sourceRoot":"","sources":["../../src/user-event/event-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,aAAa,GAAG,sEAAsE,CAAC;AAC7F,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AACxE,MAAM,UAAU,GAAG,0FAA0F,CAAC;AAC9G,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAE3D,MAAM,aAAa,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5F,MAAM,
|
|
1
|
+
{"version":3,"file":"event-wrapper.js","sourceRoot":"","sources":["../../src/user-event/event-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\nimport { runInAct } from \"../act.js\";\nimport { getConfig } from \"../config.js\";\nimport { formatRole } from \"../role-helpers.js\";\n\nconst NOT_SENSITIVE = \"it is not sensitive (the widget or one of its ancestors is disabled)\";\nconst WINDOW_NOT_ALLOCATED = \"its window has not been allocated a size\";\nconst NOT_MAPPED = \"it is not mapped (it is not shown on screen, e.g. it is hidden or on a non-visible page)\";\nconst WINDOW_NOT_ACTIVE = \"its window never became active\";\n\nconst actionableHop = (): Promise<void> => new Promise((resolve) => setTimeout(resolve, 1));\n\nconst canDisplayDeliverActivation = (window: Gtk.Window): boolean =>\n window.getDisplay().getDefaultSeat() !== null;\n\nconst findWindowActionabilityFailure = (widget: Gtk.Widget, root: Gtk.Window): string | null => {\n if (root.getAllocatedWidth() === 0) {\n return WINDOW_NOT_ALLOCATED;\n }\n\n if (!widget.getMapped()) {\n return NOT_MAPPED;\n }\n\n if (canDisplayDeliverActivation(root) && !root.isActive()) {\n return WINDOW_NOT_ACTIVE;\n }\n\n return null;\n};\n\nconst findActionabilityFailure = (widget: Gtk.Widget): string | null => {\n if (!widget.isSensitive()) {\n return NOT_SENSITIVE;\n }\n\n const root = widget.getRoot();\n\n if (!(root instanceof Gtk.Window) || !root.getVisible()) {\n return null;\n }\n\n return findWindowActionabilityFailure(widget, root);\n};\n\nconst describeWidget = (widget: Gtk.Widget): string => {\n const tag = widget.constructor.name;\n const name = widget.getName();\n const nameAttribute = name && !name.endsWith(tag) ? ` name=\"${name}\"` : \"\";\n\n return `<${tag}${nameAttribute} role=\"${formatRole(widget.getAccessibleRole())}\">`;\n};\n\nconst waitForActionable = async (widget: Gtk.Widget): Promise<void> => {\n const timeout = getConfig().actionabilityTimeout;\n const deadline = Date.now() + timeout;\n let failure = findActionabilityFailure(widget);\n\n while (failure !== null && Date.now() < deadline) {\n await actionableHop();\n failure = findActionabilityFailure(widget);\n }\n\n if (failure !== null) {\n throw new Error(\n `Cannot dispatch user event: ${describeWidget(widget)} did not become actionable ` +\n `within ${String(timeout)}ms because ${failure}`,\n );\n }\n};\n\nconst wrapEvent = async (widget: Gtk.Widget, body: () => void | PromiseLike<void>): Promise<void> => {\n await waitForActionable(widget);\n\n await runInAct(async () => {\n await body();\n });\n};\n\nexport { wrapEvent };\n"]}
|
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import * as GObject from "@gtkx/gi/gobject";
|
|
2
2
|
import * as Gtk from "@gtkx/gi/gtk";
|
|
3
3
|
/** The value delivered to a drop target: a primitive (converted to a GObject.Value) or an explicit GObject.Value. */
|
|
4
|
-
|
|
4
|
+
type DropContent = string | number | boolean | GObject.Value;
|
|
5
5
|
/** Options for a drop: the drop coordinates within the target. */
|
|
6
|
-
|
|
6
|
+
type DropOptions = {
|
|
7
7
|
x?: number;
|
|
8
8
|
y?: number;
|
|
9
9
|
};
|
|
10
10
|
/** A drag offset relative to the drag start point. */
|
|
11
|
-
|
|
11
|
+
type DragOffset = {
|
|
12
12
|
x: number;
|
|
13
13
|
y: number;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Options for a drag gesture: the starting point, the number of interpolated drag updates, or
|
|
17
|
+
* explicit intermediate offsets emitted before the final one.
|
|
18
|
+
*/
|
|
19
|
+
type DragOptions = {
|
|
17
20
|
startX?: number;
|
|
18
21
|
startY?: number;
|
|
19
22
|
steps?: number;
|
|
20
23
|
offsets?: DragOffset[];
|
|
21
24
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
declare const hover: (widget: Gtk.Widget) => Promise<void>;
|
|
26
|
+
declare const unhover: (widget: Gtk.Widget) => Promise<void>;
|
|
27
|
+
declare const rotate: (widget: Gtk.Widget, angle: number, deltaAngle?: number) => Promise<void>;
|
|
28
|
+
declare const zoom: (widget: Gtk.Widget, scale: number) => Promise<void>;
|
|
29
|
+
declare const swipe: (widget: Gtk.Widget, velocityX: number, velocityY: number) => Promise<void>;
|
|
30
|
+
declare const longPress: (widget: Gtk.Widget, x?: number, y?: number) => Promise<void>;
|
|
31
|
+
declare const drag: (widget: Gtk.Widget, dx: number, dy: number, options?: DragOptions) => Promise<void>;
|
|
32
|
+
declare const drop: (widget: Gtk.Widget, content: DropContent, options?: DropOptions) => Promise<void>;
|
|
33
|
+
declare const dragAndDrop: (source: Gtk.Widget, target: Gtk.Widget, content: DropContent, options?: DropOptions) => Promise<void>;
|
|
34
|
+
export { hover, unhover, rotate, zoom, swipe, longPress, drag, drop, dragAndDrop, type DropContent, type DropOptions, type DragOffset, type DragOptions, };
|
|
31
35
|
//# sourceMappingURL=gesture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/user-event/gesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAKpC,qHAAqH;AACrH,
|
|
1
|
+
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/user-event/gesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAKpC,qHAAqH;AACrH,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AAE7D,kEAAkE;AAClE,KAAK,WAAW,GAAG;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,sDAAsD;AACtD,KAAK,UAAU,GAAG;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;GAGG;AACH,KAAK,WAAW,GAAG;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAqCF,QAAA,MAAM,KAAK,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAG1C,CAAC;AAEP,QAAA,MAAM,OAAO,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAG5C,CAAC;AAEP,QAAA,MAAM,MAAM,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,aAAY,MAAc,KAAG,OAAO,CAAC,IAAI,CAIvF,CAAC;AAEN,QAAA,MAAM,IAAI,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAGxD,CAAC;AAEP,QAAA,MAAM,KAAK,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAGhF,CAAC;AAEP,QAAA,MAAM,SAAS,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAK,EAAE,UAAK,KAAG,OAAO,CAAC,IAAI,CAG5D,CAAC;AAmFP,QAAA,MAAM,IAAI,GAAU,QAAQ,GAAG,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,UAAS,WAAgB,KAAG,OAAO,CAAC,IAAI,CAevG,CAAC;AAUF,QAAA,MAAM,IAAI,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,UAAS,WAAgB,KAAG,OAAO,CAAC,IAAI,CAG1F,CAAC;AAEP,QAAA,MAAM,WAAW,GACb,QAAQ,GAAG,CAAC,MAAM,EAClB,QAAQ,GAAG,CAAC,MAAM,EAClB,SAAS,WAAW,EACpB,UAAS,WAAgB,KAC1B,OAAO,CAAC,IAAI,CAQd,CAAC;AAEF,OAAO,EACH,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACL,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,GACnB,CAAC"}
|
|
@@ -4,69 +4,100 @@ import { getAllControllers } from "./controller.js";
|
|
|
4
4
|
import { dispatchOnControllers, dispatchOnOrCreateControllers } from "./dispatch.js";
|
|
5
5
|
import { wrapEvent } from "./event-wrapper.js";
|
|
6
6
|
const buildDropValue = (content) => {
|
|
7
|
-
if (content instanceof GObject.Value)
|
|
7
|
+
if (content instanceof GObject.Value) {
|
|
8
8
|
return content;
|
|
9
|
+
}
|
|
9
10
|
if (typeof content === "string") {
|
|
10
|
-
return GObject.buildValue(GObject.TYPE_STRING, (v) =>
|
|
11
|
+
return GObject.buildValue(GObject.TYPE_STRING, (v) => {
|
|
12
|
+
v.setString(content);
|
|
13
|
+
});
|
|
11
14
|
}
|
|
12
15
|
if (typeof content === "boolean") {
|
|
13
|
-
return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) =>
|
|
16
|
+
return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) => {
|
|
17
|
+
v.setBoolean(content);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => {
|
|
21
|
+
v.setDouble(content);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const hover = (widget) => dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => {
|
|
25
|
+
controller.emit("enter", 0, 0);
|
|
26
|
+
});
|
|
27
|
+
const unhover = (widget) => dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => {
|
|
28
|
+
controller.emit("leave");
|
|
29
|
+
});
|
|
30
|
+
const rotate = (widget, angle, deltaAngle = angle) => dispatchOnControllers(widget, Gtk.GestureRotate, (controller) => {
|
|
31
|
+
controller.emit("angle-changed", angle, deltaAngle);
|
|
32
|
+
});
|
|
33
|
+
const zoom = (widget, scale) => dispatchOnControllers(widget, Gtk.GestureZoom, (controller) => {
|
|
34
|
+
controller.emit("scale-changed", scale);
|
|
35
|
+
});
|
|
36
|
+
const swipe = (widget, velocityX, velocityY) => dispatchOnControllers(widget, Gtk.GestureSwipe, (controller) => {
|
|
37
|
+
controller.emit("swipe", velocityX, velocityY);
|
|
38
|
+
});
|
|
39
|
+
const longPress = (widget, x = 0, y = 0) => dispatchOnControllers(widget, Gtk.GestureLongPress, (controller) => {
|
|
40
|
+
controller.emit("pressed", x, y);
|
|
41
|
+
});
|
|
42
|
+
const restoreDragState = (saved) => {
|
|
43
|
+
const { instance } = saved;
|
|
44
|
+
if (saved.ownsStartPoint) {
|
|
45
|
+
instance.getStartPoint = saved.previousStartPoint;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
delete instance.getStartPoint;
|
|
49
|
+
}
|
|
50
|
+
if (saved.ownsOffset) {
|
|
51
|
+
instance.getOffset = saved.previousOffset;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
delete instance.getOffset;
|
|
14
55
|
}
|
|
15
|
-
return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => v.setDouble(content));
|
|
16
56
|
};
|
|
17
|
-
export const hover = (widget) => dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => controller.emit("enter", 0, 0));
|
|
18
|
-
export const unhover = (widget) => dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => controller.emit("leave"));
|
|
19
|
-
export const rotate = (widget, angle, deltaAngle = angle) => dispatchOnControllers(widget, Gtk.GestureRotate, (controller) => controller.emit("angle-changed", angle, deltaAngle));
|
|
20
|
-
export const zoom = (widget, scale) => dispatchOnControllers(widget, Gtk.GestureZoom, (controller) => controller.emit("scale-changed", scale));
|
|
21
|
-
export const swipe = (widget, velocityX, velocityY) => dispatchOnControllers(widget, Gtk.GestureSwipe, (controller) => controller.emit("swipe", velocityX, velocityY));
|
|
22
|
-
export const longPress = (widget, x = 0, y = 0) => dispatchOnControllers(widget, Gtk.GestureLongPress, (controller) => controller.emit("pressed", x, y));
|
|
23
57
|
const patchDragState = (controller, start, offset) => {
|
|
24
58
|
const instance = controller;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
59
|
+
const saved = {
|
|
60
|
+
instance,
|
|
61
|
+
ownsStartPoint: Object.hasOwn(instance, "getStartPoint"),
|
|
62
|
+
ownsOffset: Object.hasOwn(instance, "getOffset"),
|
|
63
|
+
previousStartPoint: instance.getStartPoint,
|
|
64
|
+
previousOffset: instance.getOffset,
|
|
65
|
+
};
|
|
29
66
|
instance.getStartPoint = () => [true, start.x, start.y];
|
|
30
67
|
instance.getOffset = () => {
|
|
31
68
|
const current = offset();
|
|
32
69
|
return [true, current.x, current.y];
|
|
33
70
|
};
|
|
34
71
|
return () => {
|
|
35
|
-
|
|
36
|
-
instance.getStartPoint = previousStartPoint;
|
|
37
|
-
else
|
|
38
|
-
delete instance.getStartPoint;
|
|
39
|
-
if (ownsOffset)
|
|
40
|
-
instance.getOffset = previousOffset;
|
|
41
|
-
else
|
|
42
|
-
delete instance.getOffset;
|
|
72
|
+
restoreDragState(saved);
|
|
43
73
|
};
|
|
44
74
|
};
|
|
75
|
+
const emitToControllers = (controllers, signal, x, y) => {
|
|
76
|
+
for (const controller of controllers) {
|
|
77
|
+
controller.emit(signal, x, y);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
45
80
|
const runDragSequence = (controllers, start, updates) => {
|
|
46
81
|
let current = { x: 0, y: 0 };
|
|
47
82
|
const restores = controllers.map((controller) => patchDragState(controller, start, () => current));
|
|
48
83
|
try {
|
|
49
|
-
|
|
50
|
-
controller.emit("drag-begin", start.x, start.y);
|
|
51
|
-
}
|
|
84
|
+
emitToControllers(controllers, "drag-begin", start.x, start.y);
|
|
52
85
|
for (const update of updates) {
|
|
53
86
|
current = update;
|
|
54
|
-
|
|
55
|
-
controller.emit("drag-update", update.x, update.y);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
for (const controller of controllers) {
|
|
59
|
-
controller.emit("drag-end", current.x, current.y);
|
|
87
|
+
emitToControllers(controllers, "drag-update", update.x, update.y);
|
|
60
88
|
}
|
|
89
|
+
emitToControllers(controllers, "drag-end", current.x, current.y);
|
|
61
90
|
}
|
|
62
91
|
finally {
|
|
63
|
-
for (const restore of restores)
|
|
92
|
+
for (const restore of restores) {
|
|
64
93
|
restore();
|
|
94
|
+
}
|
|
65
95
|
}
|
|
66
96
|
};
|
|
67
97
|
const resolveDragUpdates = (dx, dy, options) => {
|
|
68
|
-
if (options.offsets)
|
|
98
|
+
if (options.offsets) {
|
|
69
99
|
return [...options.offsets, { x: dx, y: dy }];
|
|
100
|
+
}
|
|
70
101
|
const steps = Math.max(1, Math.floor(options.steps ?? 2));
|
|
71
102
|
const updates = [];
|
|
72
103
|
for (let i = 1; i <= steps; i++) {
|
|
@@ -74,9 +105,10 @@ const resolveDragUpdates = (dx, dy, options) => {
|
|
|
74
105
|
}
|
|
75
106
|
return updates;
|
|
76
107
|
};
|
|
77
|
-
|
|
108
|
+
const drag = async (widget, dx, dy, options = {}) => {
|
|
78
109
|
if (widget instanceof Gtk.Range) {
|
|
79
|
-
throw new
|
|
110
|
+
throw new TypeError("userEvent.drag cannot drive a Gtk.Range's built-in slider " +
|
|
111
|
+
"(its drag reads pointer coordinates from the display); " +
|
|
80
112
|
"use userEvent.slide(range, value) or userEvent.keyboard for sliders");
|
|
81
113
|
}
|
|
82
114
|
const start = { x: options.startX ?? 0, y: options.startY ?? 0 };
|
|
@@ -91,10 +123,10 @@ const emitDrop = (target, content, options) => {
|
|
|
91
123
|
dropTarget.emit("drop", buildDropValue(content), options.x ?? 0, options.y ?? 0);
|
|
92
124
|
}
|
|
93
125
|
};
|
|
94
|
-
|
|
126
|
+
const drop = (widget, content, options = {}) => wrapEvent(widget, () => {
|
|
95
127
|
emitDrop(widget, content, options);
|
|
96
128
|
});
|
|
97
|
-
|
|
129
|
+
const dragAndDrop = async (source, target, content, options = {}) => {
|
|
98
130
|
await wrapEvent(source, () => {
|
|
99
131
|
getAllControllers(source, Gtk.DragSource);
|
|
100
132
|
});
|
|
@@ -102,4 +134,5 @@ export const dragAndDrop = async (source, target, content, options = {}) => {
|
|
|
102
134
|
emitDrop(target, content, options);
|
|
103
135
|
});
|
|
104
136
|
};
|
|
137
|
+
export { hover, unhover, rotate, zoom, swipe, longPress, drag, drop, dragAndDrop, };
|
|
105
138
|
//# sourceMappingURL=gesture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gesture.js","sourceRoot":"","sources":["../../src/user-event/gesture.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getAllControllers } from \"./controller.js\";\nimport { dispatchOnControllers, dispatchOnOrCreateControllers } from \"./dispatch.js\";\nimport { wrapEvent } from \"./event-wrapper.js\";\n\n/** The value delivered to a drop target: a primitive (converted to a GObject.Value) or an explicit GObject.Value. */\nexport type DropContent = string | number | boolean | GObject.Value;\n\n/** Options for a drop: the drop coordinates within the target. */\nexport type DropOptions = {\n x?: number;\n y?: number;\n};\n\n/** A drag offset relative to the drag start point. */\nexport type DragOffset = {\n x: number;\n y: number;\n};\n\n/** Options for a drag gesture: the starting point, the number of interpolated drag updates, or explicit intermediate offsets emitted before the final one. */\nexport type DragOptions = {\n startX?: number;\n startY?: number;\n steps?: number;\n offsets?: DragOffset[];\n};\n\nconst buildDropValue = (content: DropContent): GObject.Value => {\n if (content instanceof GObject.Value) return content;\n if (typeof content === \"string\") {\n return GObject.buildValue(GObject.TYPE_STRING, (v) => v.setString(content));\n }\n if (typeof content === \"boolean\") {\n return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) => v.setBoolean(content));\n }\n return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => v.setDouble(content));\n};\n\nexport const hover = (widget: Gtk.Widget): Promise<void> =>\n dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => controller.emit(\"enter\", 0, 0));\n\nexport const unhover = (widget: Gtk.Widget): Promise<void> =>\n dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => controller.emit(\"leave\"));\n\nexport const rotate = (widget: Gtk.Widget, angle: number, deltaAngle: number = angle): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureRotate, (controller) =>\n controller.emit(\"angle-changed\", angle, deltaAngle),\n );\n\nexport const zoom = (widget: Gtk.Widget, scale: number): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureZoom, (controller) => controller.emit(\"scale-changed\", scale));\n\nexport const swipe = (widget: Gtk.Widget, velocityX: number, velocityY: number): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureSwipe, (controller) => controller.emit(\"swipe\", velocityX, velocityY));\n\nexport const longPress = (widget: Gtk.Widget, x: number = 0, y: number = 0): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureLongPress, (controller) => controller.emit(\"pressed\", x, y));\n\ntype DragInstancePatch = {\n getStartPoint?: Gtk.GestureDrag[\"getStartPoint\"] | undefined;\n getOffset?: Gtk.GestureDrag[\"getOffset\"] | undefined;\n};\n\nconst patchDragState = (controller: Gtk.GestureDrag, start: DragOffset, offset: () => DragOffset): (() => void) => {\n const instance: DragInstancePatch = controller;\n const ownsStartPoint = Object.hasOwn(instance, \"getStartPoint\");\n const ownsOffset = Object.hasOwn(instance, \"getOffset\");\n const previousStartPoint = instance.getStartPoint;\n const previousOffset = instance.getOffset;\n instance.getStartPoint = () => [true, start.x, start.y];\n instance.getOffset = () => {\n const current = offset();\n return [true, current.x, current.y];\n };\n return () => {\n if (ownsStartPoint) instance.getStartPoint = previousStartPoint;\n else delete instance.getStartPoint;\n if (ownsOffset) instance.getOffset = previousOffset;\n else delete instance.getOffset;\n };\n};\n\nconst runDragSequence = (controllers: Gtk.GestureDrag[], start: DragOffset, updates: DragOffset[]): void => {\n let current: DragOffset = { x: 0, y: 0 };\n const restores = controllers.map((controller) => patchDragState(controller, start, () => current));\n try {\n for (const controller of controllers) {\n controller.emit(\"drag-begin\", start.x, start.y);\n }\n for (const update of updates) {\n current = update;\n for (const controller of controllers) {\n controller.emit(\"drag-update\", update.x, update.y);\n }\n }\n for (const controller of controllers) {\n controller.emit(\"drag-end\", current.x, current.y);\n }\n } finally {\n for (const restore of restores) restore();\n }\n};\n\nconst resolveDragUpdates = (dx: number, dy: number, options: DragOptions): DragOffset[] => {\n if (options.offsets) return [...options.offsets, { x: dx, y: dy }];\n const steps = Math.max(1, Math.floor(options.steps ?? 2));\n const updates: DragOffset[] = [];\n for (let i = 1; i <= steps; i++) {\n updates.push({ x: (dx * i) / steps, y: (dy * i) / steps });\n }\n return updates;\n};\n\nexport const drag = async (widget: Gtk.Widget, dx: number, dy: number, options: DragOptions = {}): Promise<void> => {\n if (widget instanceof Gtk.Range) {\n throw new Error(\n \"userEvent.drag cannot drive a Gtk.Range's built-in slider (its drag reads pointer coordinates from the display); \" +\n \"use userEvent.slide(range, value) or userEvent.keyboard for sliders\",\n );\n }\n const start = { x: options.startX ?? 0, y: options.startY ?? 0 };\n const updates = resolveDragUpdates(dx, dy, options);\n await wrapEvent(widget, () => {\n runDragSequence(getAllControllers(widget, Gtk.GestureDrag), start, updates);\n });\n};\n\nconst emitDrop = (target: Gtk.Widget, content: DropContent, options: DropOptions): void => {\n const dropTargets = getAllControllers(target, Gtk.DropTarget);\n for (const dropTarget of dropTargets) {\n dropTarget.emit(\"drop\", buildDropValue(content), options.x ?? 0, options.y ?? 0);\n }\n};\n\nexport const drop = (widget: Gtk.Widget, content: DropContent, options: DropOptions = {}): Promise<void> =>\n wrapEvent(widget, () => {\n emitDrop(widget, content, options);\n });\n\nexport const dragAndDrop = async (\n source: Gtk.Widget,\n target: Gtk.Widget,\n content: DropContent,\n options: DropOptions = {},\n): Promise<void> => {\n await wrapEvent(source, () => {\n getAllControllers(source, Gtk.DragSource);\n });\n await wrapEvent(target, () => {\n emitDrop(target, content, options);\n });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"gesture.js","sourceRoot":"","sources":["../../src/user-event/gesture.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getAllControllers } from \"./controller.js\";\nimport { dispatchOnControllers, dispatchOnOrCreateControllers } from \"./dispatch.js\";\nimport { wrapEvent } from \"./event-wrapper.js\";\n\n/** The value delivered to a drop target: a primitive (converted to a GObject.Value) or an explicit GObject.Value. */\ntype DropContent = string | number | boolean | GObject.Value;\n\n/** Options for a drop: the drop coordinates within the target. */\ntype DropOptions = {\n x?: number;\n y?: number;\n};\n\n/** A drag offset relative to the drag start point. */\ntype DragOffset = {\n x: number;\n y: number;\n};\n\n/**\n * Options for a drag gesture: the starting point, the number of interpolated drag updates, or\n * explicit intermediate offsets emitted before the final one.\n */\ntype DragOptions = {\n startX?: number;\n startY?: number;\n steps?: number;\n offsets?: DragOffset[];\n};\n\ntype DragInstancePatch = {\n getStartPoint?: Gtk.GestureDrag[\"getStartPoint\"] | undefined;\n getOffset?: Gtk.GestureDrag[\"getOffset\"] | undefined;\n};\n\ntype SavedDragState = {\n instance: DragInstancePatch;\n ownsStartPoint: boolean;\n ownsOffset: boolean;\n previousStartPoint: DragInstancePatch[\"getStartPoint\"];\n previousOffset: DragInstancePatch[\"getOffset\"];\n};\n\nconst buildDropValue = (content: DropContent): GObject.Value => {\n if (content instanceof GObject.Value) {\n return content;\n }\n\n if (typeof content === \"string\") {\n return GObject.buildValue(GObject.TYPE_STRING, (v) => {\n v.setString(content);\n });\n }\n\n if (typeof content === \"boolean\") {\n return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) => {\n v.setBoolean(content);\n });\n }\n\n return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => {\n v.setDouble(content);\n });\n};\n\nconst hover = (widget: Gtk.Widget): Promise<void> =>\n dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => {\n controller.emit(\"enter\", 0, 0);\n });\n\nconst unhover = (widget: Gtk.Widget): Promise<void> =>\n dispatchOnOrCreateControllers(widget, Gtk.EventControllerMotion, (controller) => {\n controller.emit(\"leave\");\n });\n\nconst rotate = (widget: Gtk.Widget, angle: number, deltaAngle: number = angle): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureRotate, (controller) => {\n controller.emit(\"angle-changed\", angle, deltaAngle);\n },\n );\n\nconst zoom = (widget: Gtk.Widget, scale: number): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureZoom, (controller) => {\n controller.emit(\"scale-changed\", scale);\n });\n\nconst swipe = (widget: Gtk.Widget, velocityX: number, velocityY: number): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureSwipe, (controller) => {\n controller.emit(\"swipe\", velocityX, velocityY);\n });\n\nconst longPress = (widget: Gtk.Widget, x = 0, y = 0): Promise<void> =>\n dispatchOnControllers(widget, Gtk.GestureLongPress, (controller) => {\n controller.emit(\"pressed\", x, y);\n });\n\nconst restoreDragState = (saved: SavedDragState): void => {\n const { instance } = saved;\n\n if (saved.ownsStartPoint) {\n instance.getStartPoint = saved.previousStartPoint;\n } else {\n delete instance.getStartPoint;\n }\n\n if (saved.ownsOffset) {\n instance.getOffset = saved.previousOffset;\n } else {\n delete instance.getOffset;\n }\n};\n\nconst patchDragState = (controller: Gtk.GestureDrag, start: DragOffset, offset: () => DragOffset): (() => void) => {\n const instance: DragInstancePatch = controller;\n\n const saved: SavedDragState = {\n instance,\n ownsStartPoint: Object.hasOwn(instance, \"getStartPoint\"),\n ownsOffset: Object.hasOwn(instance, \"getOffset\"),\n previousStartPoint: instance.getStartPoint,\n previousOffset: instance.getOffset,\n };\n\n instance.getStartPoint = () => [true, start.x, start.y];\n\n instance.getOffset = () => {\n const current = offset();\n\n return [true, current.x, current.y];\n };\n\n return () => {\n restoreDragState(saved);\n };\n};\n\nconst emitToControllers = (controllers: Gtk.GestureDrag[], signal: string, x: number, y: number): void => {\n for (const controller of controllers) {\n controller.emit(signal, x, y);\n }\n};\n\nconst runDragSequence = (controllers: Gtk.GestureDrag[], start: DragOffset, updates: DragOffset[]): void => {\n let current: DragOffset = { x: 0, y: 0 };\n const restores = controllers.map((controller) => patchDragState(controller, start, () => current));\n\n try {\n emitToControllers(controllers, \"drag-begin\", start.x, start.y);\n\n for (const update of updates) {\n current = update;\n emitToControllers(controllers, \"drag-update\", update.x, update.y);\n }\n\n emitToControllers(controllers, \"drag-end\", current.x, current.y);\n } finally {\n for (const restore of restores) {\n restore();\n }\n }\n};\n\nconst resolveDragUpdates = (dx: number, dy: number, options: DragOptions): DragOffset[] => {\n if (options.offsets) {\n return [...options.offsets, { x: dx, y: dy }];\n }\n\n const steps = Math.max(1, Math.floor(options.steps ?? 2));\n const updates: DragOffset[] = [];\n\n for (let i = 1; i <= steps; i++) {\n updates.push({ x: (dx * i) / steps, y: (dy * i) / steps });\n }\n\n return updates;\n};\n\nconst drag = async (widget: Gtk.Widget, dx: number, dy: number, options: DragOptions = {}): Promise<void> => {\n if (widget instanceof Gtk.Range) {\n throw new TypeError(\n \"userEvent.drag cannot drive a Gtk.Range's built-in slider \" +\n \"(its drag reads pointer coordinates from the display); \" +\n \"use userEvent.slide(range, value) or userEvent.keyboard for sliders\",\n );\n }\n\n const start = { x: options.startX ?? 0, y: options.startY ?? 0 };\n const updates = resolveDragUpdates(dx, dy, options);\n\n await wrapEvent(widget, () => {\n runDragSequence(getAllControllers(widget, Gtk.GestureDrag), start, updates);\n });\n};\n\nconst emitDrop = (target: Gtk.Widget, content: DropContent, options: DropOptions): void => {\n const dropTargets = getAllControllers(target, Gtk.DropTarget);\n\n for (const dropTarget of dropTargets) {\n dropTarget.emit(\"drop\", buildDropValue(content), options.x ?? 0, options.y ?? 0);\n }\n};\n\nconst drop = (widget: Gtk.Widget, content: DropContent, options: DropOptions = {}): Promise<void> =>\n wrapEvent(widget, () => {\n emitDrop(widget, content, options);\n });\n\nconst dragAndDrop = async (\n source: Gtk.Widget,\n target: Gtk.Widget,\n content: DropContent,\n options: DropOptions = {},\n): Promise<void> => {\n await wrapEvent(source, () => {\n getAllControllers(source, Gtk.DragSource);\n });\n\n await wrapEvent(target, () => {\n emitDrop(target, content, options);\n });\n};\n\nexport {\n hover,\n unhover,\n rotate,\n zoom,\n swipe,\n longPress,\n drag,\n drop,\n dragAndDrop,\n type DropContent,\n type DropOptions,\n type DragOffset,\n type DragOptions,\n};\n"]}
|
|
@@ -6,14 +6,11 @@ import { tab } from "./keyboard.js";
|
|
|
6
6
|
import { type PointerInput } from "./pointer.js";
|
|
7
7
|
import { deselectOptions, selectOptions } from "./selection.js";
|
|
8
8
|
import { clear, copy, cut, paste, type } from "./text.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export { resetClipboard } from "./text.js";
|
|
15
|
-
/** The set of user interaction helpers exposed by {@link userEvent}, covering clicks, typing, keyboard, pointer, gestures, selection, and scrolling. */
|
|
16
|
-
export type UserEvent = {
|
|
9
|
+
/**
|
|
10
|
+
* The set of user interaction helpers exposed by {@link userEvent}, covering clicks, typing,
|
|
11
|
+
* keyboard, pointer, gestures, selection, and scrolling.
|
|
12
|
+
*/
|
|
13
|
+
type UserEvent = {
|
|
17
14
|
click: typeof click;
|
|
18
15
|
dblClick: typeof dblClick;
|
|
19
16
|
tripleClick: typeof tripleClick;
|
|
@@ -39,6 +36,16 @@ export type UserEvent = {
|
|
|
39
36
|
keyboard: (widget: Gtk.Widget, input: string) => Promise<void>;
|
|
40
37
|
pointer: (widget: Gtk.Widget, input: PointerInput) => Promise<void>;
|
|
41
38
|
};
|
|
42
|
-
/**
|
|
43
|
-
|
|
39
|
+
/**
|
|
40
|
+
* High-level helpers that drive widgets by dispatching the same events and gestures GTK4 delivers
|
|
41
|
+
* when someone clicks, types, or drags.
|
|
42
|
+
*/
|
|
43
|
+
declare const userEvent: UserEvent;
|
|
44
|
+
export type { ScrollDelta } from "./adjustment.js";
|
|
45
|
+
export type { DragOffset, DragOptions, DropContent, DropOptions } from "./gesture.js";
|
|
46
|
+
export type { TabOptions } from "./keyboard.js";
|
|
47
|
+
export type { PointerInput } from "./pointer.js";
|
|
48
|
+
export type { TypeOptions } from "./text.js";
|
|
49
|
+
export { resetClipboard } from "./text.js";
|
|
50
|
+
export { userEvent, type UserEvent };
|
|
44
51
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAY,GAAG,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAY,GAAG,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1D;;;GAGG;AACH,KAAK,SAAS,GAAG;IACb,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE,CAAC;AAIF;;;GAGG;AACH,QAAA,MAAM,SAAS,EAAE,SAyBhB,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC"}
|
package/dist/user-event/index.js
CHANGED
|
@@ -6,10 +6,12 @@ import { pointer } from "./pointer.js";
|
|
|
6
6
|
import { deselectOptions, selectOptions } from "./selection.js";
|
|
7
7
|
import { createInitialState } from "./state.js";
|
|
8
8
|
import { clear, copy, cut, paste, type } from "./text.js";
|
|
9
|
-
export { resetClipboard } from "./text.js";
|
|
10
9
|
const state = createInitialState();
|
|
11
|
-
/**
|
|
12
|
-
|
|
10
|
+
/**
|
|
11
|
+
* High-level helpers that drive widgets by dispatching the same events and gestures GTK4 delivers
|
|
12
|
+
* when someone clicks, types, or drags.
|
|
13
|
+
*/
|
|
14
|
+
const userEvent = {
|
|
13
15
|
click,
|
|
14
16
|
dblClick,
|
|
15
17
|
tripleClick,
|
|
@@ -35,4 +37,6 @@ export const userEvent = {
|
|
|
35
37
|
keyboard: (widget, input) => keyboard(state, widget, input),
|
|
36
38
|
pointer: (widget, input) => pointer(state, widget, input),
|
|
37
39
|
};
|
|
40
|
+
export { resetClipboard } from "./text.js";
|
|
41
|
+
export { userEvent };
|
|
38
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiC1D,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;AAEnC;;;GAGG;AACH,MAAM,SAAS,GAAc;IACzB,KAAK;IACL,QAAQ;IACR,WAAW;IACX,GAAG;IACH,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,GAAG;IACH,KAAK;IACL,aAAa;IACb,eAAe;IACf,KAAK;IACL,OAAO;IACP,MAAM;IACN,IAAI;IACJ,KAAK;IACL,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,WAAW;IACX,KAAK;IACL,MAAM;IACN,QAAQ,EAAE,CAAC,MAAkB,EAAE,KAAa,EAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAC9F,OAAO,EAAE,CAAC,MAAkB,EAAE,KAAmB,EAAiB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;CACrG,CAAC;AAOF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAkB,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { scroll, slide } from \"./adjustment.js\";\nimport { click, dblClick, tripleClick } from \"./click.js\";\nimport { drag, dragAndDrop, drop, hover, longPress, rotate, swipe, unhover, zoom } from \"./gesture.js\";\nimport { keyboard, tab } from \"./keyboard.js\";\nimport { pointer, type PointerInput } from \"./pointer.js\";\nimport { deselectOptions, selectOptions } from \"./selection.js\";\nimport { createInitialState } from \"./state.js\";\nimport { clear, copy, cut, paste, type } from \"./text.js\";\n\n/**\n * The set of user interaction helpers exposed by {@link userEvent}, covering clicks, typing,\n * keyboard, pointer, gestures, selection, and scrolling.\n */\ntype UserEvent = {\n click: typeof click;\n dblClick: typeof dblClick;\n tripleClick: typeof tripleClick;\n tab: typeof tab;\n type: typeof type;\n clear: typeof clear;\n copy: typeof copy;\n cut: typeof cut;\n paste: typeof paste;\n selectOptions: typeof selectOptions;\n deselectOptions: typeof deselectOptions;\n hover: typeof hover;\n unhover: typeof unhover;\n rotate: typeof rotate;\n zoom: typeof zoom;\n swipe: typeof swipe;\n longPress: typeof longPress;\n drag: typeof drag;\n drop: typeof drop;\n dragAndDrop: typeof dragAndDrop;\n slide: typeof slide;\n scroll: typeof scroll;\n keyboard: (widget: Gtk.Widget, input: string) => Promise<void>;\n pointer: (widget: Gtk.Widget, input: PointerInput) => Promise<void>;\n};\n\nconst state = createInitialState();\n\n/**\n * High-level helpers that drive widgets by dispatching the same events and gestures GTK4 delivers\n * when someone clicks, types, or drags.\n */\nconst userEvent: UserEvent = {\n click,\n dblClick,\n tripleClick,\n tab,\n type,\n clear,\n copy,\n cut,\n paste,\n selectOptions,\n deselectOptions,\n hover,\n unhover,\n rotate,\n zoom,\n swipe,\n longPress,\n drag,\n drop,\n dragAndDrop,\n slide,\n scroll,\n keyboard: (widget: Gtk.Widget, input: string): Promise<void> => keyboard(state, widget, input),\n pointer: (widget: Gtk.Widget, input: PointerInput): Promise<void> => pointer(state, widget, input),\n};\n\nexport type { ScrollDelta } from \"./adjustment.js\";\nexport type { DragOffset, DragOptions, DropContent, DropOptions } from \"./gesture.js\";\nexport type { TabOptions } from \"./keyboard.js\";\nexport type { PointerInput } from \"./pointer.js\";\nexport type { TypeOptions } from \"./text.js\";\nexport { resetClipboard } from \"./text.js\";\nexport { userEvent, type UserEvent };\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/gi/gtk";
|
|
2
2
|
import type { UserEventState } from "./state.js";
|
|
3
3
|
/** Options for {@link tab}: when `shift` is set, move focus backward instead of forward. */
|
|
4
|
-
|
|
4
|
+
type TabOptions = {
|
|
5
5
|
shift?: boolean;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
declare const tab: (widget: Gtk.Widget, options?: TabOptions) => Promise<void>;
|
|
8
|
+
declare const keyboard: (state: UserEventState, widget: Gtk.Widget, input: string) => Promise<void>;
|
|
9
|
+
export { tab, keyboard, type TabOptions };
|
|
9
10
|
//# sourceMappingURL=keyboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/user-event/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/user-event/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,4FAA4F;AAC5F,KAAK,UAAU,GAAG;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAiDF,QAAA,MAAM,GAAG,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAU,UAAU,KAAG,OAAO,CAAC,IAAI,CAQ9D,CAAC;AAoNP,QAAA,MAAM,QAAQ,GAAI,OAAO,cAAc,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAOnF,CAAC;AAEP,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC"}
|