@gtkx/testing 2.0.0-beta.1 → 2.0.0-beta.10
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 +43 -40
- package/dist/accessible-native.d.ts +1 -1
- package/dist/accessible-native.d.ts.map +1 -1
- package/dist/accessible-native.js +29 -8
- package/dist/accessible-native.js.map +1 -1
- package/dist/build-queries.d.ts +9 -9
- package/dist/build-queries.d.ts.map +1 -1
- package/dist/build-queries.js +2 -1
- package/dist/build-queries.js.map +1 -1
- package/dist/fire-event.d.ts +3 -3
- package/dist/fire-event.d.ts.map +1 -1
- package/dist/fire-event.js +14 -4
- package/dist/fire-event.js.map +1 -1
- package/dist/matchers.d.ts +52 -56
- package/dist/matchers.d.ts.map +1 -1
- package/dist/matchers.js +4 -16
- package/dist/matchers.js.map +1 -1
- package/dist/queries.d.ts +7 -7
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +18 -10
- package/dist/queries.js.map +1 -1
- package/dist/query-helpers.d.ts +2 -2
- package/dist/query-helpers.d.ts.map +1 -1
- package/dist/query-helpers.js +10 -3
- package/dist/query-helpers.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +4 -0
- package/dist/render.js.map +1 -1
- package/dist/role-helpers.d.ts +1 -1
- package/dist/role-helpers.d.ts.map +1 -1
- package/dist/role-helpers.js +2 -1
- package/dist/role-helpers.js.map +1 -1
- package/dist/screenshot.d.ts +1 -1
- package/dist/screenshot.d.ts.map +1 -1
- package/dist/screenshot.js +25 -5
- package/dist/screenshot.js.map +1 -1
- package/dist/suggestions.d.ts +1 -1
- package/dist/suggestions.d.ts.map +1 -1
- package/dist/suggestions.js +3 -1
- package/dist/suggestions.js.map +1 -1
- package/dist/traversal.d.ts +4 -4
- package/dist/traversal.d.ts.map +1 -1
- package/dist/traversal.js +25 -7
- package/dist/traversal.js.map +1 -1
- package/dist/types.d.ts +10 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/user-event/click.d.ts +17 -4
- package/dist/user-event/click.d.ts.map +1 -1
- package/dist/user-event/click.js +28 -9
- package/dist/user-event/click.js.map +1 -1
- package/dist/user-event/controller.d.ts +5 -5
- package/dist/user-event/controller.d.ts.map +1 -1
- package/dist/user-event/controller.js +5 -2
- package/dist/user-event/controller.js.map +1 -1
- package/dist/user-event/index.d.ts +22 -22
- package/dist/user-event/index.d.ts.map +1 -1
- package/dist/user-event/index.js +28 -25
- package/dist/user-event/index.js.map +1 -1
- package/dist/user-event/keyboard.d.ts.map +1 -1
- package/dist/user-event/keyboard.js +23 -2
- package/dist/user-event/keyboard.js.map +1 -1
- package/dist/user-event/list-row-click.d.ts +1 -1
- package/dist/user-event/list-row-click.d.ts.map +1 -1
- package/dist/user-event/list-row-click.js +2 -1
- package/dist/user-event/list-row-click.js.map +1 -1
- package/dist/user-event/pointer.d.ts.map +1 -1
- package/dist/user-event/pointer.js +9 -11
- package/dist/user-event/pointer.js.map +1 -1
- package/dist/user-event/selection.d.ts +2 -2
- package/dist/user-event/selection.d.ts.map +1 -1
- package/dist/user-event/selection.js +8 -2
- package/dist/user-event/selection.js.map +1 -1
- package/dist/wait-for.d.ts +2 -2
- package/dist/wait-for.d.ts.map +1 -1
- package/dist/wait-for.js +6 -4
- package/dist/wait-for.js.map +1 -1
- package/dist/widget-accessible-properties.d.ts +4 -3
- package/dist/widget-accessible-properties.d.ts.map +1 -1
- package/dist/widget-accessible-properties.js +24 -17
- package/dist/widget-accessible-properties.js.map +1 -1
- package/dist/widget-getters.d.ts +7 -9
- package/dist/widget-getters.d.ts.map +1 -1
- package/dist/widget-getters.js.map +1 -1
- package/dist/widget-target.d.ts +4 -0
- package/dist/widget-target.d.ts.map +1 -0
- package/dist/widget-target.js +9 -0
- package/dist/widget-target.js.map +1 -0
- package/package.json +13 -10
- package/src/accessible-native.ts +45 -9
- package/src/build-queries.ts +60 -30
- package/src/fire-event.ts +32 -8
- package/src/matchers.ts +63 -85
- package/src/queries.ts +64 -30
- package/src/query-helpers.ts +17 -9
- package/src/render.tsx +7 -2
- package/src/role-helpers.ts +3 -1
- package/src/screenshot.ts +48 -5
- package/src/suggestions.ts +3 -1
- package/src/traversal.ts +35 -11
- package/src/types.ts +14 -10
- package/src/user-event/click.ts +37 -17
- package/src/user-event/controller.ts +8 -5
- package/src/user-event/index.ts +133 -47
- package/src/user-event/keyboard.ts +32 -3
- package/src/user-event/list-row-click.ts +2 -2
- package/src/user-event/pointer.ts +11 -15
- package/src/user-event/selection.ts +12 -4
- package/src/wait-for.ts +9 -6
- package/src/widget-accessible-properties.ts +39 -25
- package/src/widget-getters.ts +11 -13
- package/src/widget-target.ts +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../src/user-event/click.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../src/user-event/click.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAMpC,OAAO,EAAsB,KAAK,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEzF,KAAK,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3C,KAAK,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACzC,KAAK,SAAS,GAAG;IAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAErE,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC;AAiDvE,QAAA,MAAM,aAAa,GAAI,OAAO,SAAS,EAAE,EAAE,QAAQ,MAAM,EAAE,OAAO,UAAU,KAAG,IAI9E,CAAC;AAwKF,QAAA,MAAM,cAAc,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,WAQ5C,CAAC;AA+BF,kDAAkD;AAClD,QAAA,MAAM,KAAK,GAAU,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAMrD,CAAC;AAEF,uCAAuC;AACvC,QAAA,MAAM,QAAQ,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;AAChF,uCAAuC;AACvC,QAAA,MAAM,WAAW,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/user-event/click.js
CHANGED
|
@@ -31,9 +31,6 @@ const emitGesture = (point, controllers, nPress, signal) => {
|
|
|
31
31
|
controller.emit(signal, nPress, point.x, point.y);
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
const emitClickPhase = (widget, controllers, nPress, phase) => {
|
|
35
|
-
emitGesture(getCenterPoint(widget), controllers, nPress, phase);
|
|
36
|
-
};
|
|
37
34
|
const emitSitePhase = (sites, nPress, phase) => {
|
|
38
35
|
for (const site of sites) {
|
|
39
36
|
emitGesture(site.point, site.gestures, nPress, phase);
|
|
@@ -54,11 +51,20 @@ const isInternalGesture = (gesture) => !hasSignalListener(gesture);
|
|
|
54
51
|
const isPrimaryGesture = (gesture) => PRIMARY_BUTTONS.has(gesture.getButton());
|
|
55
52
|
const clickGestures = (widget) => queryAllControllers(widget, Gtk.GestureClick).filter((gesture) => isPrimaryGesture(gesture));
|
|
56
53
|
const getAuthoredClickGestures = (widget) => clickGestures(widget).filter((gesture) => hasClickHandlers(gesture));
|
|
57
|
-
const isClaimingTarget = (widget) => widget instanceof Gtk.Button || containerFor(widget) !== null;
|
|
58
54
|
const gestureTargetFor = (widget, isInternalAllowed) => {
|
|
59
55
|
const gestures = clickGestures(widget);
|
|
60
|
-
if (
|
|
61
|
-
return { widget, container:
|
|
56
|
+
if (widget instanceof Gtk.Button) {
|
|
57
|
+
return { widget, container: null, gestures, isClaiming: true, native: null };
|
|
58
|
+
}
|
|
59
|
+
const container = containerFor(widget);
|
|
60
|
+
if (container !== null) {
|
|
61
|
+
return {
|
|
62
|
+
widget,
|
|
63
|
+
container,
|
|
64
|
+
gestures: gestures.filter((gesture) => hasClickHandlers(gesture)),
|
|
65
|
+
isClaiming: true,
|
|
66
|
+
native: null,
|
|
67
|
+
};
|
|
62
68
|
}
|
|
63
69
|
const authored = gestures.filter((gesture) => hasClickHandlers(gesture));
|
|
64
70
|
if (authored.length > 0) {
|
|
@@ -124,7 +130,7 @@ const applyContainerOutcome = (target, nPress) => {
|
|
|
124
130
|
return;
|
|
125
131
|
}
|
|
126
132
|
if (isActivatedByClick(container, nPress)) {
|
|
127
|
-
|
|
133
|
+
Gtk.Widget.prototype.activate.call(widget);
|
|
128
134
|
}
|
|
129
135
|
if (isSelectionReplacedByClick(container, nPress)) {
|
|
130
136
|
replaceContainerSelection(container, widget);
|
|
@@ -137,6 +143,19 @@ const applyClickOutcome = (target, nPress) => {
|
|
|
137
143
|
}
|
|
138
144
|
target.native(target.widget, nPress);
|
|
139
145
|
};
|
|
146
|
+
const applyContainerClick = (widget, nPress) => {
|
|
147
|
+
const container = containerFor(widget);
|
|
148
|
+
if (container !== null) {
|
|
149
|
+
applyContainerOutcome({ widget, container, gestures: [], isClaiming: true, native: null }, nPress);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const directClickFor = (widget) => {
|
|
153
|
+
const native = nativeClickFor(widget, true);
|
|
154
|
+
const container = native === null ? containerFor(widget) : null;
|
|
155
|
+
const gestures = native !== null || container !== null ? getAuthoredClickGestures(widget) : clickGestures(widget);
|
|
156
|
+
const target = { widget, container, gestures, isClaiming: true, native };
|
|
157
|
+
return { sites: targetSites(widget, target), outcome: native ?? (container === null ? null : applyContainerClick) };
|
|
158
|
+
};
|
|
140
159
|
const applyClickOutcomes = (targets, nPress) => {
|
|
141
160
|
for (const target of targets) {
|
|
142
161
|
applyClickOutcome(target, nPress);
|
|
@@ -155,7 +174,7 @@ const tryActivate = async (widget) => {
|
|
|
155
174
|
}
|
|
156
175
|
let isActivated = false;
|
|
157
176
|
await wrapEvent(widget, () => {
|
|
158
|
-
isActivated =
|
|
177
|
+
isActivated = Gtk.Widget.prototype.activate.call(widget);
|
|
159
178
|
});
|
|
160
179
|
return isActivated;
|
|
161
180
|
};
|
|
@@ -170,5 +189,5 @@ const click = async (widget) => {
|
|
|
170
189
|
const dblClick = (widget) => deliverClick(widget, 2);
|
|
171
190
|
/** Delivers a triple-click gesture. */
|
|
172
191
|
const tripleClick = (widget) => deliverClick(widget, 3);
|
|
173
|
-
export {
|
|
192
|
+
export { directClickFor, emitSitePhase, click, dblClick, tripleClick };
|
|
174
193
|
//# sourceMappingURL=click.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click.js","sourceRoot":"","sources":["../../src/user-event/click.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Gdk from \"@gtkx/gi/gdk\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { hasSignalListener } from \"@gtkx/runtime/internal\";\nimport { callBooleanGetter, getCallableMethod, hasWidgetMethod } from \"../widget-getters.js\";\nimport { queryAllControllers } from \"./controller.js\";\nimport { wrapEvent } from \"./event-wrapper.js\";\nimport { hasIndexedChildren, selectContainerChild, SELECTED_PROBE, unselectOtherChildren } from \"./indexed-children.js\";\nimport { isClickTransparent, type NativeClick, nativeClickFor } from \"./native-click.js\";\n\ntype PressPoint = { x: number; y: number };\ntype ClickPhase = \"pressed\" | \"released\";\ntype ClickSite = { gestures: Gtk.GestureClick[]; point: PressPoint };\ntype ClickScope = { isClicked: boolean; isInternalAllowed: boolean };\n\ntype ClickTarget = {\n widget: Gtk.Widget;\n container: Gtk.Widget | null;\n gestures: Gtk.GestureClick[];\n isClaiming: boolean;\n native: NativeClick | null;\n};\n\nconst CLICK_SIGNALS = [\"pressed\", \"released\"];\nconst PRIMARY_BUTTONS: Set<number> = new Set([0, Gdk.BUTTON_PRIMARY]);\n\nconst getCenterPoint = (widget: Gtk.Widget): PressPoint => {\n const width = widget.getWidth();\n const height = widget.getHeight();\n\n if (width > 0 && height > 0) {\n return { x: width / 2, y: height / 2 };\n }\n\n return { x: 0, y: 0 };\n};\n\nconst getClickPoint = (clicked: Gtk.Widget, carrier: Gtk.Widget): PressPoint => {\n if (clicked === carrier) {\n return getCenterPoint(clicked);\n }\n\n const [isComputed, bounds] = clicked.computeBounds(carrier);\n\n if (!isComputed) {\n return getCenterPoint(carrier);\n }\n\n return { x: bounds.getX() + bounds.getWidth() / 2, y: bounds.getY() + bounds.getHeight() / 2 };\n};\n\nconst emitGesture = (\n point: PressPoint,\n controllers: Gtk.GestureClick[],\n nPress: number,\n signal: ClickPhase,\n): void => {\n for (const controller of controllers) {\n controller.emit(signal, nPress, point.x, point.y);\n }\n};\n\nconst emitClickPhase = (\n widget: Gtk.Widget,\n controllers: Gtk.GestureClick[],\n nPress: number,\n phase: ClickPhase,\n): void => {\n emitGesture(getCenterPoint(widget), controllers, nPress, phase);\n};\n\nconst emitSitePhase = (sites: ClickSite[], nPress: number, phase: ClickPhase): void => {\n for (const site of sites) {\n emitGesture(site.point, site.gestures, nPress, phase);\n }\n};\n\nconst emitClickSequence = (sites: ClickSite[], nPress: number): void => {\n for (let i = 1; i <= nPress; i++) {\n emitSitePhase(sites, i, \"pressed\");\n emitSitePhase(sites, i, \"released\");\n }\n};\n\nconst containerFor = (widget: Gtk.Widget): Gtk.Widget | null => {\n const parent = widget.getParent();\n\n return parent !== null && hasWidgetMethod(widget, SELECTED_PROBE) && hasIndexedChildren(parent) ? parent : null;\n};\n\nconst hasClickHandlers = (gesture: Gtk.GestureClick): boolean => hasSignalListener(gesture, CLICK_SIGNALS);\nconst isInternalGesture = (gesture: Gtk.GestureClick): boolean => !hasSignalListener(gesture);\nconst isPrimaryGesture = (gesture: Gtk.GestureClick): boolean => PRIMARY_BUTTONS.has(gesture.getButton());\n\nconst clickGestures = (widget: Gtk.Widget): Gtk.GestureClick[] =>\n queryAllControllers(widget, Gtk.GestureClick).filter((gesture) => isPrimaryGesture(gesture));\n\nconst getAuthoredClickGestures = (widget: Gtk.Widget): Gtk.GestureClick[] =>\n clickGestures(widget).filter((gesture) => hasClickHandlers(gesture));\n\nconst isClaimingTarget = (widget: Gtk.Widget): boolean =>\n widget instanceof Gtk.Button || containerFor(widget) !== null;\n\nconst gestureTargetFor = (widget: Gtk.Widget, isInternalAllowed: boolean): ClickTarget | null => {\n const gestures = clickGestures(widget);\n\n if (isClaimingTarget(widget)) {\n return { widget, container: containerFor(widget), gestures, isClaiming: true, native: null };\n }\n\n const authored = gestures.filter((gesture) => hasClickHandlers(gesture));\n\n if (authored.length > 0) {\n return { widget, container: null, gestures: authored, isClaiming: false, native: null };\n }\n\n if (isInternalAllowed && gestures.some((gesture) => isInternalGesture(gesture))) {\n return { widget, container: null, gestures, isClaiming: true, native: null };\n }\n\n return null;\n};\n\nconst clickTargetFor = (widget: Gtk.Widget, scope: ClickScope): ClickTarget | null => {\n if (isClickTransparent(widget)) {\n return null;\n }\n\n const native = nativeClickFor(widget, scope.isClicked);\n\n if (native !== null) {\n return { widget, container: null, gestures: getAuthoredClickGestures(widget), isClaiming: true, native };\n }\n\n return gestureTargetFor(widget, scope.isInternalAllowed);\n};\n\nconst isSelfClickTarget = (widget: Gtk.Widget): boolean =>\n isClickTransparent(widget) || clickTargetFor(widget, { isClicked: true, isInternalAllowed: false }) !== null;\n\nconst nextClickWidget = (current: Gtk.Widget, target: ClickTarget | null): Gtk.Widget | null =>\n target?.isClaiming === true ? null : current.getParent();\n\nconst collectClickTargets = (widget: Gtk.Widget): ClickTarget[] => {\n const targets: ClickTarget[] = [];\n let current: Gtk.Widget | null = widget;\n\n while (current !== null) {\n const isClicked = current === widget;\n const scope = { isClicked, isInternalAllowed: !isClicked && targets.length === 0 };\n const target = clickTargetFor(current, scope);\n const next = nextClickWidget(current, target);\n\n if (target !== null) {\n targets.push(target);\n }\n\n current = next;\n }\n\n return targets;\n};\n\nconst targetSites = (clicked: Gtk.Widget, target: ClickTarget): ClickSite[] => {\n const { container } = target;\n const site = { gestures: target.gestures, point: getClickPoint(clicked, target.widget) };\n\n if (container === null) {\n return [site];\n }\n\n return [site, { gestures: getAuthoredClickGestures(container), point: getClickPoint(clicked, container) }];\n};\n\nconst isSingleClickActivating = (container: Gtk.Widget): boolean =>\n callBooleanGetter(container, \"getActivateOnSingleClick\") ?? true;\n\nconst isMultipleSelection = (container: Gtk.Widget): boolean =>\n getCallableMethod<[], Gtk.SelectionMode>(container, \"getSelectionMode\")?.() === Gtk.SelectionMode.MULTIPLE;\n\nconst isChildSelectable = (child: Gtk.Widget): boolean => callBooleanGetter(child, \"getSelectable\") ?? true;\n\nconst replaceContainerSelection = (container: Gtk.Widget, child: Gtk.Widget): void => {\n if (!isChildSelectable(child)) {\n return;\n }\n\n selectContainerChild(container, child);\n\n if (isMultipleSelection(container)) {\n unselectOtherChildren(container, child);\n }\n};\n\nconst isActivatedByClick = (container: Gtk.Widget, nPress: number): boolean =>\n isSingleClickActivating(container) || nPress > 1;\n\nconst isSelectionReplacedByClick = (container: Gtk.Widget, nPress: number): boolean =>\n nPress > 1 || !isSingleClickActivating(container);\n\nconst applyContainerOutcome = (target: ClickTarget, nPress: number): void => {\n const { container, widget } = target;\n\n if (container === null || widget.getParent() !== container) {\n return;\n }\n\n if (isActivatedByClick(container, nPress)) {\n widget.activate();\n }\n\n if (isSelectionReplacedByClick(container, nPress)) {\n replaceContainerSelection(container, widget);\n }\n};\n\nconst applyClickOutcome = (target: ClickTarget, nPress: number): void => {\n if (target.native === null) {\n applyContainerOutcome(target, nPress);\n\n return;\n }\n\n target.native(target.widget, nPress);\n};\n\nconst applyClickOutcomes = (targets: ClickTarget[], nPress: number): void => {\n for (const target of targets) {\n applyClickOutcome(target, nPress);\n }\n};\n\nconst deliverClick = (widget: Gtk.Widget, nPress: number): Promise<void> =>\n wrapEvent(widget, () => {\n const targets = collectClickTargets(widget);\n const sites = targets.flatMap((target) => targetSites(widget, target));\n emitClickSequence(sites, nPress);\n applyClickOutcomes(targets, nPress);\n });\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether activation succeeded */\nconst tryActivate = async (widget: Gtk.Widget): Promise<boolean> => {\n if (widget.getAccessibleRole() === Gtk.AccessibleRole.LABEL) {\n return false;\n }\n\n let isActivated = false;\n\n await wrapEvent(widget, () => {\n isActivated = widget.activate();\n });\n\n return isActivated;\n};\n\n/** Activates or presses and releases a widget. */\nconst click = async (widget: Gtk.Widget): Promise<void> => {\n if (!isSelfClickTarget(widget) && (await tryActivate(widget))) {\n return;\n }\n\n await deliverClick(widget, 1);\n};\n\n/** Delivers a double-click gesture. */\nconst dblClick = (widget: Gtk.Widget): Promise<void> => deliverClick(widget, 2);\n/** Delivers a triple-click gesture. */\nconst tripleClick = (widget: Gtk.Widget): Promise<void> => deliverClick(widget, 3);\n\nexport { clickGestures, emitClickPhase, getAuthoredClickGestures, click, dblClick, tripleClick };\n"]}
|
|
1
|
+
{"version":3,"file":"click.js","sourceRoot":"","sources":["../../src/user-event/click.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Gdk from \"@gtkx/gi/gdk\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { hasSignalListener } from \"@gtkx/runtime/internal\";\nimport { callBooleanGetter, getCallableMethod, hasWidgetMethod } from \"../widget-getters.js\";\nimport { queryAllControllers } from \"./controller.js\";\nimport { wrapEvent } from \"./event-wrapper.js\";\nimport { hasIndexedChildren, selectContainerChild, SELECTED_PROBE, unselectOtherChildren } from \"./indexed-children.js\";\nimport { isClickTransparent, type NativeClick, nativeClickFor } from \"./native-click.js\";\n\ntype PressPoint = { x: number; y: number };\ntype ClickPhase = \"pressed\" | \"released\";\ntype ClickSite = { gestures: Gtk.GestureClick[]; point: PressPoint };\ntype ClickScope = { isClicked: boolean; isInternalAllowed: boolean };\ntype DirectClick = { sites: ClickSite[]; outcome: NativeClick | null };\n\ntype ClickTarget = {\n widget: Gtk.Widget;\n container: Gtk.Widget | null;\n gestures: Gtk.GestureClick[];\n isClaiming: boolean;\n native: NativeClick | null;\n};\n\nconst CLICK_SIGNALS = [\"pressed\", \"released\"];\nconst PRIMARY_BUTTONS: Set<number> = new Set([0, Gdk.BUTTON_PRIMARY]);\n\nconst getCenterPoint = (widget: Gtk.Widget): PressPoint => {\n const width = widget.getWidth();\n const height = widget.getHeight();\n\n if (width > 0 && height > 0) {\n return { x: width / 2, y: height / 2 };\n }\n\n return { x: 0, y: 0 };\n};\n\nconst getClickPoint = (clicked: Gtk.Widget, carrier: Gtk.Widget): PressPoint => {\n if (clicked === carrier) {\n return getCenterPoint(clicked);\n }\n\n const [isComputed, bounds] = clicked.computeBounds(carrier);\n\n if (!isComputed) {\n return getCenterPoint(carrier);\n }\n\n return { x: bounds.getX() + bounds.getWidth() / 2, y: bounds.getY() + bounds.getHeight() / 2 };\n};\n\nconst emitGesture = (\n point: PressPoint,\n controllers: Gtk.GestureClick[],\n nPress: number,\n signal: ClickPhase,\n): void => {\n for (const controller of controllers) {\n controller.emit(signal, nPress, point.x, point.y);\n }\n};\n\nconst emitSitePhase = (sites: ClickSite[], nPress: number, phase: ClickPhase): void => {\n for (const site of sites) {\n emitGesture(site.point, site.gestures, nPress, phase);\n }\n};\n\nconst emitClickSequence = (sites: ClickSite[], nPress: number): void => {\n for (let i = 1; i <= nPress; i++) {\n emitSitePhase(sites, i, \"pressed\");\n emitSitePhase(sites, i, \"released\");\n }\n};\n\nconst containerFor = (widget: Gtk.Widget): Gtk.Widget | null => {\n const parent = widget.getParent();\n\n return parent !== null && hasWidgetMethod(widget, SELECTED_PROBE) && hasIndexedChildren(parent) ? parent : null;\n};\n\nconst hasClickHandlers = (gesture: Gtk.GestureClick): boolean => hasSignalListener(gesture, CLICK_SIGNALS);\nconst isInternalGesture = (gesture: Gtk.GestureClick): boolean => !hasSignalListener(gesture);\nconst isPrimaryGesture = (gesture: Gtk.GestureClick): boolean => PRIMARY_BUTTONS.has(gesture.getButton());\n\nconst clickGestures = (widget: Gtk.Widget): Gtk.GestureClick[] =>\n queryAllControllers(widget, Gtk.GestureClick).filter((gesture) => isPrimaryGesture(gesture));\n\nconst getAuthoredClickGestures = (widget: Gtk.Widget): Gtk.GestureClick[] =>\n clickGestures(widget).filter((gesture) => hasClickHandlers(gesture));\n\nconst gestureTargetFor = (widget: Gtk.Widget, isInternalAllowed: boolean): ClickTarget | null => {\n const gestures = clickGestures(widget);\n\n if (widget instanceof Gtk.Button) {\n return { widget, container: null, gestures, isClaiming: true, native: null };\n }\n\n const container = containerFor(widget);\n\n if (container !== null) {\n return {\n widget,\n container,\n gestures: gestures.filter((gesture) => hasClickHandlers(gesture)),\n isClaiming: true,\n native: null,\n };\n }\n\n const authored = gestures.filter((gesture) => hasClickHandlers(gesture));\n\n if (authored.length > 0) {\n return { widget, container: null, gestures: authored, isClaiming: false, native: null };\n }\n\n if (isInternalAllowed && gestures.some((gesture) => isInternalGesture(gesture))) {\n return { widget, container: null, gestures, isClaiming: true, native: null };\n }\n\n return null;\n};\n\nconst clickTargetFor = (widget: Gtk.Widget, scope: ClickScope): ClickTarget | null => {\n if (isClickTransparent(widget)) {\n return null;\n }\n\n const native = nativeClickFor(widget, scope.isClicked);\n\n if (native !== null) {\n return { widget, container: null, gestures: getAuthoredClickGestures(widget), isClaiming: true, native };\n }\n\n return gestureTargetFor(widget, scope.isInternalAllowed);\n};\n\nconst isSelfClickTarget = (widget: Gtk.Widget): boolean =>\n isClickTransparent(widget) || clickTargetFor(widget, { isClicked: true, isInternalAllowed: false }) !== null;\n\nconst nextClickWidget = (current: Gtk.Widget, target: ClickTarget | null): Gtk.Widget | null =>\n target?.isClaiming === true ? null : current.getParent();\n\nconst collectClickTargets = (widget: Gtk.Widget): ClickTarget[] => {\n const targets: ClickTarget[] = [];\n let current: Gtk.Widget | null = widget;\n\n while (current !== null) {\n const isClicked = current === widget;\n const scope = { isClicked, isInternalAllowed: !isClicked && targets.length === 0 };\n const target = clickTargetFor(current, scope);\n const next = nextClickWidget(current, target);\n\n if (target !== null) {\n targets.push(target);\n }\n\n current = next;\n }\n\n return targets;\n};\n\nconst targetSites = (clicked: Gtk.Widget, target: ClickTarget): ClickSite[] => {\n const { container } = target;\n const site = { gestures: target.gestures, point: getClickPoint(clicked, target.widget) };\n\n if (container === null) {\n return [site];\n }\n\n return [site, { gestures: getAuthoredClickGestures(container), point: getClickPoint(clicked, container) }];\n};\n\nconst isSingleClickActivating = (container: Gtk.Widget): boolean =>\n callBooleanGetter(container, \"getActivateOnSingleClick\") ?? true;\n\nconst isMultipleSelection = (container: Gtk.Widget): boolean =>\n getCallableMethod<[], Gtk.SelectionMode>(container, \"getSelectionMode\")?.() === Gtk.SelectionMode.MULTIPLE;\n\nconst isChildSelectable = (child: Gtk.Widget): boolean => callBooleanGetter(child, \"getSelectable\") ?? true;\n\nconst replaceContainerSelection = (container: Gtk.Widget, child: Gtk.Widget): void => {\n if (!isChildSelectable(child)) {\n return;\n }\n\n selectContainerChild(container, child);\n\n if (isMultipleSelection(container)) {\n unselectOtherChildren(container, child);\n }\n};\n\nconst isActivatedByClick = (container: Gtk.Widget, nPress: number): boolean =>\n isSingleClickActivating(container) || nPress > 1;\n\nconst isSelectionReplacedByClick = (container: Gtk.Widget, nPress: number): boolean =>\n nPress > 1 || !isSingleClickActivating(container);\n\nconst applyContainerOutcome = (target: ClickTarget, nPress: number): void => {\n const { container, widget } = target;\n\n if (container === null || widget.getParent() !== container) {\n return;\n }\n\n if (isActivatedByClick(container, nPress)) {\n Gtk.Widget.prototype.activate.call(widget);\n }\n\n if (isSelectionReplacedByClick(container, nPress)) {\n replaceContainerSelection(container, widget);\n }\n};\n\nconst applyClickOutcome = (target: ClickTarget, nPress: number): void => {\n if (target.native === null) {\n applyContainerOutcome(target, nPress);\n\n return;\n }\n\n target.native(target.widget, nPress);\n};\n\nconst applyContainerClick: NativeClick = (widget, nPress) => {\n const container = containerFor(widget);\n\n if (container !== null) {\n applyContainerOutcome({ widget, container, gestures: [], isClaiming: true, native: null }, nPress);\n }\n};\n\nconst directClickFor = (widget: Gtk.Widget): DirectClick => {\n const native = nativeClickFor(widget, true);\n const container = native === null ? containerFor(widget) : null;\n const gestures =\n native !== null || container !== null ? getAuthoredClickGestures(widget) : clickGestures(widget);\n const target: ClickTarget = { widget, container, gestures, isClaiming: true, native };\n\n return { sites: targetSites(widget, target), outcome: native ?? (container === null ? null : applyContainerClick) };\n};\n\nconst applyClickOutcomes = (targets: ClickTarget[], nPress: number): void => {\n for (const target of targets) {\n applyClickOutcome(target, nPress);\n }\n};\n\nconst deliverClick = (widget: Gtk.Widget, nPress: number): Promise<void> =>\n wrapEvent(widget, () => {\n const targets = collectClickTargets(widget);\n const sites = targets.flatMap((target) => targetSites(widget, target));\n emitClickSequence(sites, nPress);\n applyClickOutcomes(targets, nPress);\n });\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether activation succeeded */\nconst tryActivate = async (widget: Gtk.Widget): Promise<boolean> => {\n if (widget.getAccessibleRole() === Gtk.AccessibleRole.LABEL) {\n return false;\n }\n\n let isActivated = false;\n\n await wrapEvent(widget, () => {\n isActivated = Gtk.Widget.prototype.activate.call(widget);\n });\n\n return isActivated;\n};\n\n/** Activates or presses and releases a widget. */\nconst click = async (widget: Gtk.Widget): Promise<void> => {\n if (!isSelfClickTarget(widget) && (await tryActivate(widget))) {\n return;\n }\n\n await deliverClick(widget, 1);\n};\n\n/** Delivers a double-click gesture. */\nconst dblClick = (widget: Gtk.Widget): Promise<void> => deliverClick(widget, 2);\n/** Delivers a triple-click gesture. */\nconst tripleClick = (widget: Gtk.Widget): Promise<void> => deliverClick(widget, 3);\n\nexport { directClickFor, emitSitePhase, click, dblClick, tripleClick };\nexport type { DirectClick };\n"]}
|
|
@@ -8,7 +8,7 @@ type ControllerConstructor<T extends Gtk.EventController> = new () => T;
|
|
|
8
8
|
* @param controllerType The controller class to match.
|
|
9
9
|
* @returns The matching controllers, or an empty array when the widget has none.
|
|
10
10
|
*/
|
|
11
|
-
declare const queryAllControllers: <T extends Gtk.EventController>(
|
|
11
|
+
declare const queryAllControllers: <T extends Gtk.EventController>(target: Gtk.Accessible, controllerType: ControllerConstructor<T>) => T[];
|
|
12
12
|
/**
|
|
13
13
|
* Returns the first controller of the given type attached to a widget.
|
|
14
14
|
*
|
|
@@ -16,7 +16,7 @@ declare const queryAllControllers: <T extends Gtk.EventController>(widget: Gtk.W
|
|
|
16
16
|
* @param controllerType The controller class to match.
|
|
17
17
|
* @returns The first matching controller, or null when the widget has none.
|
|
18
18
|
*/
|
|
19
|
-
declare const queryController: <T extends Gtk.EventController>(widget: Gtk.
|
|
19
|
+
declare const queryController: <T extends Gtk.EventController>(widget: Gtk.Accessible, controllerType: ControllerConstructor<T>) => T | null;
|
|
20
20
|
/**
|
|
21
21
|
* Returns every controller of the given type attached to a widget.
|
|
22
22
|
*
|
|
@@ -24,7 +24,7 @@ declare const queryController: <T extends Gtk.EventController>(widget: Gtk.Widge
|
|
|
24
24
|
* @param controllerType The controller class to match.
|
|
25
25
|
* @throws When the widget has no controller of that type.
|
|
26
26
|
*/
|
|
27
|
-
declare const getAllControllers: <T extends Gtk.EventController>(widget: Gtk.
|
|
27
|
+
declare const getAllControllers: <T extends Gtk.EventController>(widget: Gtk.Accessible, controllerType: ControllerConstructor<T>) => T[];
|
|
28
28
|
/**
|
|
29
29
|
* Returns the first controller of the given type attached to a widget.
|
|
30
30
|
*
|
|
@@ -32,7 +32,7 @@ declare const getAllControllers: <T extends Gtk.EventController>(widget: Gtk.Wid
|
|
|
32
32
|
* @param controllerType The controller class to match.
|
|
33
33
|
* @throws When the widget has no controller of that type.
|
|
34
34
|
*/
|
|
35
|
-
declare const getController: <T extends Gtk.EventController>(widget: Gtk.
|
|
36
|
-
declare const getOrCreateControllers: <T extends Gtk.EventController>(
|
|
35
|
+
declare const getController: <T extends Gtk.EventController>(widget: Gtk.Accessible, controllerType: ControllerConstructor<T>) => T;
|
|
36
|
+
declare const getOrCreateControllers: <T extends Gtk.EventController>(target: Gtk.Accessible, controllerType: ControllerConstructor<T>) => T[];
|
|
37
37
|
export { queryAllControllers, queryController, getAllControllers, getController, getOrCreateControllers, type ControllerConstructor, };
|
|
38
38
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-event/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-event/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AAGzC,uGAAuG;AACvG,KAAK,qBAAqB,CAAC,CAAC,SAAS,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,GAAG,CAAC,eAAe,EACtD,QAAQ,GAAG,CAAC,UAAU,EACtB,gBAAgB,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAAC,EAeH,CAAC;AAEF;;;;;;GAMG;AACH,QAAA,MAAM,eAAe,GAAI,CAAC,SAAS,GAAG,CAAC,eAAe,EAClD,QAAQ,GAAG,CAAC,UAAU,EACtB,gBAAgB,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAAC,GAAG,IAA8D,CAAC;AAEtE;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,GAAI,CAAC,SAAS,GAAG,CAAC,eAAe,EACpD,QAAQ,GAAG,CAAC,UAAU,EACtB,gBAAgB,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAAC,EAQH,CAAC;AAEF;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,GAAG,CAAC,eAAe,EAChD,QAAQ,GAAG,CAAC,UAAU,EACtB,gBAAgB,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAQF,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAI,CAAC,SAAS,GAAG,CAAC,eAAe,EACzD,QAAQ,GAAG,CAAC,UAAU,EACtB,gBAAgB,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAAC,EAYH,CAAC;AAEF,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,KAAK,qBAAqB,GAC7B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { requireWidget } from "../widget-target.js";
|
|
1
2
|
/**
|
|
2
3
|
* Returns every controller of the given type attached to a widget, in the order GTK4 reports them.
|
|
3
4
|
*
|
|
@@ -5,7 +6,8 @@
|
|
|
5
6
|
* @param controllerType The controller class to match.
|
|
6
7
|
* @returns The matching controllers, or an empty array when the widget has none.
|
|
7
8
|
*/
|
|
8
|
-
const queryAllControllers = (
|
|
9
|
+
const queryAllControllers = (target, controllerType) => {
|
|
10
|
+
const widget = requireWidget(target);
|
|
9
11
|
const controllers = widget.observeControllers();
|
|
10
12
|
const nItems = controllers.getNItems();
|
|
11
13
|
const matches = [];
|
|
@@ -53,7 +55,8 @@ const getController = (widget, controllerType) => {
|
|
|
53
55
|
}
|
|
54
56
|
return controller;
|
|
55
57
|
};
|
|
56
|
-
const getOrCreateControllers = (
|
|
58
|
+
const getOrCreateControllers = (target, controllerType) => {
|
|
59
|
+
const widget = requireWidget(target);
|
|
57
60
|
const existing = queryAllControllers(widget, controllerType);
|
|
58
61
|
if (existing.length > 0) {
|
|
59
62
|
return existing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/user-event/controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/user-event/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKpD;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,CACxB,MAAsB,EACtB,cAAwC,EACrC,EAAE;IACL,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,UAAU,YAAY,cAAc,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CACpB,MAAsB,EACtB,cAAwC,EAChC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CACtB,MAAsB,EACtB,cAAwC,EACrC,EAAE;IACL,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEhE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,cAAc,CAAC,IAAI,uCAAuC,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAClB,MAAsB,EACtB,cAAwC,EACvC,EAAE;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE/D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,cAAc,CAAC,IAAI,uCAAuC,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC3B,MAAsB,EACtB,cAAwC,EACrC,EAAE;IACL,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE7D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;IACxC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEjC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GAEzB,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { requireWidget } from \"../widget-target.js\";\n\n/** An event controller class that can be constructed without arguments, such as `Gtk.GestureClick`. */\ntype ControllerConstructor<T extends Gtk.EventController> = new () => T;\n\n/**\n * Returns every controller of the given type attached to a widget, in the order GTK4 reports them.\n *\n * @param widget The widget whose controllers are inspected.\n * @param controllerType The controller class to match.\n * @returns The matching controllers, or an empty array when the widget has none.\n */\nconst queryAllControllers = <T extends Gtk.EventController>(\n target: Gtk.Accessible,\n controllerType: ControllerConstructor<T>,\n): T[] => {\n const widget = requireWidget(target);\n const controllers = widget.observeControllers();\n const nItems = controllers.getNItems();\n const matches: T[] = [];\n\n for (let i = 0; i < nItems; i++) {\n const controller = controllers.getItem(i);\n\n if (controller instanceof controllerType) {\n matches.push(controller);\n }\n }\n\n return matches;\n};\n\n/**\n * Returns the first controller of the given type attached to a widget.\n *\n * @param widget The widget whose controllers are inspected.\n * @param controllerType The controller class to match.\n * @returns The first matching controller, or null when the widget has none.\n */\nconst queryController = <T extends Gtk.EventController>(\n widget: Gtk.Accessible,\n controllerType: ControllerConstructor<T>,\n): T | null => queryAllControllers(widget, controllerType)[0] ?? null;\n\n/**\n * Returns every controller of the given type attached to a widget.\n *\n * @param widget The widget whose controllers are inspected.\n * @param controllerType The controller class to match.\n * @throws When the widget has no controller of that type.\n */\nconst getAllControllers = <T extends Gtk.EventController>(\n widget: Gtk.Accessible,\n controllerType: ControllerConstructor<T>,\n): T[] => {\n const controllers = queryAllControllers(widget, controllerType);\n\n if (controllers.length === 0) {\n throw new Error(`No ${controllerType.name} controller is attached to the widget`);\n }\n\n return controllers;\n};\n\n/**\n * Returns the first controller of the given type attached to a widget.\n *\n * @param widget The widget whose controllers are inspected.\n * @param controllerType The controller class to match.\n * @throws When the widget has no controller of that type.\n */\nconst getController = <T extends Gtk.EventController>(\n widget: Gtk.Accessible,\n controllerType: ControllerConstructor<T>,\n): T => {\n const [controller] = getAllControllers(widget, controllerType);\n\n if (controller === undefined) {\n throw new Error(`No ${controllerType.name} controller is attached to the widget`);\n }\n\n return controller;\n};\n\nconst getOrCreateControllers = <T extends Gtk.EventController>(\n target: Gtk.Accessible,\n controllerType: ControllerConstructor<T>,\n): T[] => {\n const widget = requireWidget(target);\n const existing = queryAllControllers(widget, controllerType);\n\n if (existing.length > 0) {\n return existing;\n }\n\n const controller = new controllerType();\n widget.addController(controller);\n\n return [controller];\n};\n\nexport {\n queryAllControllers,\n queryController,\n getAllControllers,\n getController,\n getOrCreateControllers,\n type ControllerConstructor,\n};\n"]}
|
|
@@ -16,53 +16,53 @@ type UserEvent = {
|
|
|
16
16
|
/** Creates an instance with shared keyboard and pointer state. */
|
|
17
17
|
setup: (options?: UserEventOptions) => UserEvent;
|
|
18
18
|
/** Activates or presses and releases a widget. */
|
|
19
|
-
click: typeof click
|
|
19
|
+
click: (widget: Gtk.Accessible, ...args: Parameters<typeof click> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
20
20
|
/** Delivers a double-click gesture. */
|
|
21
|
-
dblClick: typeof dblClick
|
|
21
|
+
dblClick: (widget: Gtk.Accessible, ...args: Parameters<typeof dblClick> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
22
22
|
/** Delivers a triple-click gesture. */
|
|
23
|
-
tripleClick: typeof tripleClick
|
|
23
|
+
tripleClick: (widget: Gtk.Accessible, ...args: Parameters<typeof tripleClick> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
24
24
|
/** Moves focus forward or backward within the root. */
|
|
25
|
-
tab: typeof tab
|
|
25
|
+
tab: (widget: Gtk.Accessible, ...args: Parameters<typeof tab> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
26
26
|
/** Types into an editable widget. */
|
|
27
|
-
type: typeof type
|
|
27
|
+
type: (widget: Gtk.Accessible, ...args: Parameters<typeof type> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
28
28
|
/** Deletes all text from an editable widget. */
|
|
29
|
-
clear: typeof clear
|
|
29
|
+
clear: (widget: Gtk.Accessible, ...args: Parameters<typeof clear> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
30
30
|
/** Copies the current selection. */
|
|
31
|
-
copy: typeof copy
|
|
31
|
+
copy: (widget: Gtk.Accessible, ...args: Parameters<typeof copy> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
32
32
|
/** Cuts the current selection. */
|
|
33
|
-
cut: typeof cut
|
|
33
|
+
cut: (widget: Gtk.Accessible, ...args: Parameters<typeof cut> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
34
34
|
/** Pastes text or clipboard contents. */
|
|
35
|
-
paste: typeof paste
|
|
35
|
+
paste: (widget: Gtk.Accessible, ...args: Parameters<typeof paste> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
36
36
|
/** Selects positions without activating them. */
|
|
37
37
|
selectOptions: typeof selectOptions;
|
|
38
38
|
/** Unselects positions without activating them. */
|
|
39
39
|
deselectOptions: typeof deselectOptions;
|
|
40
40
|
/** Emits a motion `enter` on the widget, adding a motion controller when it has none. */
|
|
41
|
-
hover: typeof hover
|
|
41
|
+
hover: (widget: Gtk.Accessible, ...args: Parameters<typeof hover> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
42
42
|
/** Emits a motion `leave` on the widget, adding a motion controller when it has none. */
|
|
43
|
-
unhover: typeof unhover
|
|
43
|
+
unhover: (widget: Gtk.Accessible, ...args: Parameters<typeof unhover> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
44
44
|
/** Emits `angle-changed` on the widget's rotate gestures. */
|
|
45
|
-
rotate: typeof rotate
|
|
45
|
+
rotate: (widget: Gtk.Accessible, ...args: Parameters<typeof rotate> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
46
46
|
/** Emits `scale-changed` on the widget's zoom gestures. */
|
|
47
|
-
zoom: typeof zoom
|
|
47
|
+
zoom: (widget: Gtk.Accessible, ...args: Parameters<typeof zoom> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
48
48
|
/** Emits `swipe` with the given velocity on the widget's swipe gestures. */
|
|
49
|
-
swipe: typeof swipe
|
|
49
|
+
swipe: (widget: Gtk.Accessible, ...args: Parameters<typeof swipe> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
50
50
|
/** Emits `pressed` at the given point on the widget's long-press gestures. */
|
|
51
|
-
longPress: typeof longPress
|
|
51
|
+
longPress: (widget: Gtk.Accessible, ...args: Parameters<typeof longPress> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
52
52
|
/** Runs a begin, update, and end sequence on the widget's drag gestures, ending at the given offset. */
|
|
53
|
-
drag: typeof drag
|
|
53
|
+
drag: (widget: Gtk.Accessible, ...args: Parameters<typeof drag> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
54
54
|
/** Emits `drop` with the given content on the widget's drop targets. */
|
|
55
|
-
drop: typeof drop
|
|
55
|
+
drop: (widget: Gtk.Accessible, ...args: Parameters<typeof drop> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
56
56
|
/** Requires a drag source on the source widget, then emits `drop` with the content on the target's drop targets. */
|
|
57
|
-
dragAndDrop: typeof dragAndDrop
|
|
57
|
+
dragAndDrop: (source: Gtk.Accessible, target: Gtk.Accessible, ...args: Parameters<typeof dragAndDrop> extends [Gtk.Widget, Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
58
58
|
/** Emits a jump `change-value` on a Gtk.Range so it moves to the given value. */
|
|
59
|
-
slide: typeof slide
|
|
59
|
+
slide: (widget: Gtk.Accessible, ...args: Parameters<typeof slide> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
60
60
|
/** Adds the delta to the adjustments of the widget itself, or of its nearest scrollable ancestor. */
|
|
61
|
-
scroll: typeof scroll
|
|
61
|
+
scroll: (widget: Gtk.Accessible, ...args: Parameters<typeof scroll> extends [Gtk.Widget, ...infer Args] ? Args : never) => Promise<void>;
|
|
62
62
|
/** Sends a key sequence through GTK's propagation chain. */
|
|
63
|
-
keyboard: (widget: Gtk.
|
|
63
|
+
keyboard: (widget: Gtk.Accessible, input: string) => Promise<void>;
|
|
64
64
|
/** Applies a pointer token while preserving held-button state. */
|
|
65
|
-
pointer: (widget: Gtk.
|
|
65
|
+
pointer: (widget: Gtk.Accessible, input: PointerInput) => Promise<void>;
|
|
66
66
|
};
|
|
67
67
|
/** User interactions that dispatch GTK events and gestures. */
|
|
68
68
|
declare const userEvent: UserEvent;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EACH,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,KAAK,EACL,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACP,MAAM,cAAc,CAAC;AACtB,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,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACpB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,sDAAsD;AACtD,KAAK,SAAS,GAAG;IACb,kEAAkE;IAClE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,SAAS,CAAC;IACjD,kDAAkD;IAClD,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uCAAuC;IACvC,QAAQ,EAAE,CACN,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACtF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uCAAuC;IACvC,WAAW,EAAE,CACT,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACzF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uDAAuD;IACvD,GAAG,EAAE,CACD,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACjF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qCAAqC;IACrC,IAAI,EAAE,CACF,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAClF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,gDAAgD;IAChD,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oCAAoC;IACpC,IAAI,EAAE,CACF,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAClF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,kCAAkC;IAClC,GAAG,EAAE,CACD,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACjF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,yCAAyC;IACzC,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iDAAiD;IACjD,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,mDAAmD;IACnD,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,yFAAyF;IACzF,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,yFAAyF;IACzF,OAAO,EAAE,CACL,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACrF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,CACJ,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACpF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,CACF,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAClF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,8EAA8E;IAC9E,SAAS,EAAE,CACP,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACvF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,wGAAwG;IACxG,IAAI,EAAE,CACF,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAClF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,wEAAwE;IACxE,IAAI,EAAE,CACF,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAClF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oHAAoH;IACpH,WAAW,EAAE,CACT,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACrG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,CACH,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACnF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qGAAqG;IACrG,MAAM,EAAE,CACJ,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KACpF,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,kEAAkE;IAClE,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,CAAC;AAYF,+DAA+D;AAC/D,QAAA,MAAM,SAAS,EAAE,SAGhB,CAAC;AAmDF,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,KAAK,gBAAgB,EAAE,CAAC"}
|
package/dist/user-event/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { delay } from "../timers.js";
|
|
2
|
+
import { requireWidget } from "../widget-target.js";
|
|
2
3
|
import { scroll, slide } from "./adjustment.js";
|
|
3
4
|
import { click, dblClick, tripleClick } from "./click.js";
|
|
4
|
-
import { drag, dragAndDrop, drop, hover, longPress, rotate, swipe, unhover, zoom } from "./gesture.js";
|
|
5
|
+
import { drag, dragAndDrop, drop, hover, longPress, rotate, swipe, unhover, zoom, } from "./gesture.js";
|
|
5
6
|
import { keyboard, tab } from "./keyboard.js";
|
|
6
7
|
import { pointer } from "./pointer.js";
|
|
7
8
|
import { deselectOptions, selectOptions } from "./selection.js";
|
|
8
9
|
import { createInitialState } from "./state.js";
|
|
9
10
|
import { clear, copy, cut, paste, type } from "./text.js";
|
|
11
|
+
const onWidget = (helper) => (target, ...args) => helper(requireWidget(target), ...args);
|
|
12
|
+
const onWidgetPair = (helper) => (source, target, ...args) => helper(requireWidget(source), requireWidget(target), ...args);
|
|
10
13
|
/** User interactions that dispatch GTK events and gestures. */
|
|
11
14
|
const userEvent = {
|
|
12
15
|
...createInstance(createInitialState(), {}),
|
|
@@ -25,30 +28,30 @@ function createInstance(state, options) {
|
|
|
25
28
|
};
|
|
26
29
|
return {
|
|
27
30
|
setup: (overrides) => createInstance(state, { ...options, ...overrides }),
|
|
28
|
-
click: after(click),
|
|
29
|
-
dblClick: after(dblClick),
|
|
30
|
-
tripleClick: after(tripleClick),
|
|
31
|
-
tab: after(tab),
|
|
32
|
-
type: after(type),
|
|
33
|
-
clear: after(clear),
|
|
34
|
-
copy: after(copy),
|
|
35
|
-
cut: after(cut),
|
|
36
|
-
paste: after(paste),
|
|
37
|
-
selectOptions: after(selectOptions),
|
|
38
|
-
deselectOptions: after(deselectOptions),
|
|
39
|
-
hover: after(hover),
|
|
40
|
-
unhover: after(unhover),
|
|
41
|
-
rotate: after(rotate),
|
|
42
|
-
zoom: after(zoom),
|
|
43
|
-
swipe: after(swipe),
|
|
44
|
-
longPress: after(longPress),
|
|
45
|
-
drag: after(drag),
|
|
46
|
-
drop: after(drop),
|
|
47
|
-
dragAndDrop: after(dragAndDrop),
|
|
48
|
-
slide: after(slide),
|
|
49
|
-
scroll: after(scroll),
|
|
50
|
-
keyboard: after((widget, input) => keyboard(state, widget, input)),
|
|
51
|
-
pointer: after((widget, input) => pointer(state, widget, input)),
|
|
31
|
+
click: after(onWidget(click)),
|
|
32
|
+
dblClick: after(onWidget(dblClick)),
|
|
33
|
+
tripleClick: after(onWidget(tripleClick)),
|
|
34
|
+
tab: after(onWidget(tab)),
|
|
35
|
+
type: after(onWidget(type)),
|
|
36
|
+
clear: after(onWidget(clear)),
|
|
37
|
+
copy: after(onWidget(copy)),
|
|
38
|
+
cut: after(onWidget(cut)),
|
|
39
|
+
paste: after(onWidget(paste)),
|
|
40
|
+
selectOptions: after(onWidget(selectOptions)),
|
|
41
|
+
deselectOptions: after(onWidget(deselectOptions)),
|
|
42
|
+
hover: after(onWidget(hover)),
|
|
43
|
+
unhover: after(onWidget(unhover)),
|
|
44
|
+
rotate: after(onWidget(rotate)),
|
|
45
|
+
zoom: after(onWidget(zoom)),
|
|
46
|
+
swipe: after(onWidget(swipe)),
|
|
47
|
+
longPress: after(onWidget(longPress)),
|
|
48
|
+
drag: after(onWidget(drag)),
|
|
49
|
+
drop: after(onWidget(drop)),
|
|
50
|
+
dragAndDrop: after(onWidgetPair(dragAndDrop)),
|
|
51
|
+
slide: after(onWidget(slide)),
|
|
52
|
+
scroll: after(onWidget(scroll)),
|
|
53
|
+
keyboard: after(onWidget((widget, input) => keyboard(state, widget, input))),
|
|
54
|
+
pointer: after(onWidget((widget, input) => pointer(state, widget, input))),
|
|
52
55
|
};
|
|
53
56
|
}
|
|
54
57
|
export { resetClipboard } from "./text.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { delay } from \"../timers.js\";\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, type UserEventState } from \"./state.js\";\nimport { clear, copy, cut, paste, type } from \"./text.js\";\n\n/** Options shared by every helper on a {@link UserEvent} instance. */\ntype UserEventOptions = {\n /** Milliseconds to wait after each helper resolves; null, the default, waits not at all. */\n delay?: number | null | undefined;\n};\n\n/** User interactions exposed by {@link userEvent}. */\ntype UserEvent = {\n /** Creates an instance with shared keyboard and pointer state. */\n setup: (options?: UserEventOptions) => UserEvent;\n /** Activates or presses and releases a widget. */\n click: typeof click;\n /** Delivers a double-click gesture. */\n dblClick: typeof dblClick;\n /** Delivers a triple-click gesture. */\n tripleClick: typeof tripleClick;\n /** Moves focus forward or backward within the root. */\n tab: typeof tab;\n /** Types into an editable widget. */\n type: typeof type;\n /** Deletes all text from an editable widget. */\n clear: typeof clear;\n /** Copies the current selection. */\n copy: typeof copy;\n /** Cuts the current selection. */\n cut: typeof cut;\n /** Pastes text or clipboard contents. */\n paste: typeof paste;\n /** Selects positions without activating them. */\n selectOptions: typeof selectOptions;\n /** Unselects positions without activating them. */\n deselectOptions: typeof deselectOptions;\n /** Emits a motion `enter` on the widget, adding a motion controller when it has none. */\n hover: typeof hover;\n /** Emits a motion `leave` on the widget, adding a motion controller when it has none. */\n unhover: typeof unhover;\n /** Emits `angle-changed` on the widget's rotate gestures. */\n rotate: typeof rotate;\n /** Emits `scale-changed` on the widget's zoom gestures. */\n zoom: typeof zoom;\n /** Emits `swipe` with the given velocity on the widget's swipe gestures. */\n swipe: typeof swipe;\n /** Emits `pressed` at the given point on the widget's long-press gestures. */\n longPress: typeof longPress;\n /** Runs a begin, update, and end sequence on the widget's drag gestures, ending at the given offset. */\n drag: typeof drag;\n /** Emits `drop` with the given content on the widget's drop targets. */\n drop: typeof drop;\n /** Requires a drag source on the source widget, then emits `drop` with the content on the target's drop targets. */\n dragAndDrop: typeof dragAndDrop;\n /** Emits a jump `change-value` on a Gtk.Range so it moves to the given value. */\n slide: typeof slide;\n /** Adds the delta to the adjustments of the widget itself, or of its nearest scrollable ancestor. */\n scroll: typeof scroll;\n /** Sends a key sequence through GTK's propagation chain. */\n keyboard: (widget: Gtk.Widget, input: string) => Promise<void>;\n /** Applies a pointer token while preserving held-button state. */\n pointer: (widget: Gtk.Widget, input: PointerInput) => Promise<void>;\n};\n\n/** User interactions that dispatch GTK events and gestures. */\nconst userEvent: UserEvent = {\n ...createInstance(createInitialState(), {}),\n setup: (options?: UserEventOptions): UserEvent => createInstance(createInitialState(), options ?? {}),\n};\n\nconst settle = (ms: number | null | undefined): Promise<void> => {\n if (ms === null || ms === undefined) {\n return Promise.resolve();\n }\n\n return delay(ms);\n};\n\nfunction createInstance(state: UserEventState, options: UserEventOptions): UserEvent {\n const after =\n <Args extends unknown[]>(helper: (...args: Args) => Promise<void>) =>\n async (...args: Args): Promise<void> => {\n await helper(...args);\n await settle(options.delay);\n };\n\n return {\n setup: (overrides?: UserEventOptions): UserEvent => createInstance(state, { ...options, ...overrides }),\n click: after(click),\n dblClick: after(dblClick),\n tripleClick: after(tripleClick),\n tab: after(tab),\n type: after(type),\n clear: after(clear),\n copy: after(copy),\n cut: after(cut),\n paste: after(paste),\n selectOptions: after(selectOptions),\n deselectOptions: after(deselectOptions),\n hover: after(hover),\n unhover: after(unhover),\n rotate: after(rotate),\n zoom: after(zoom),\n swipe: after(swipe),\n longPress: after(longPress),\n drag: after(drag),\n drop: after(drop),\n dragAndDrop: after(dragAndDrop),\n slide: after(slide),\n scroll: after(scroll),\n keyboard: after((widget: Gtk.Widget, input: string): Promise<void> => keyboard(state, widget, input)),\n pointer: after((widget: Gtk.Widget, input: PointerInput): Promise<void> => pointer(state, widget, input)),\n };\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, type UserEventOptions };\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-event/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { delay } from \"../timers.js\";\nimport { requireWidget } from \"../widget-target.js\";\nimport { scroll, slide } from \"./adjustment.js\";\nimport { click, dblClick, tripleClick } from \"./click.js\";\nimport {\n drag,\n dragAndDrop,\n drop,\n hover,\n longPress,\n rotate,\n swipe,\n unhover,\n zoom,\n} from \"./gesture.js\";\nimport { keyboard, tab } from \"./keyboard.js\";\nimport { pointer, type PointerInput } from \"./pointer.js\";\nimport { deselectOptions, selectOptions } from \"./selection.js\";\nimport { createInitialState, type UserEventState } from \"./state.js\";\nimport { clear, copy, cut, paste, type } from \"./text.js\";\n\n/** Options shared by every helper on a {@link UserEvent} instance. */\ntype UserEventOptions = {\n /** Milliseconds to wait after each helper resolves; null, the default, waits not at all. */\n delay?: number | null | undefined;\n};\n\n/** User interactions exposed by {@link userEvent}. */\ntype UserEvent = {\n /** Creates an instance with shared keyboard and pointer state. */\n setup: (options?: UserEventOptions) => UserEvent;\n /** Activates or presses and releases a widget. */\n click: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof click> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Delivers a double-click gesture. */\n dblClick: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof dblClick> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Delivers a triple-click gesture. */\n tripleClick: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof tripleClick> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Moves focus forward or backward within the root. */\n tab: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof tab> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Types into an editable widget. */\n type: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof type> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Deletes all text from an editable widget. */\n clear: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof clear> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Copies the current selection. */\n copy: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof copy> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Cuts the current selection. */\n cut: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof cut> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Pastes text or clipboard contents. */\n paste: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof paste> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Selects positions without activating them. */\n selectOptions: typeof selectOptions;\n /** Unselects positions without activating them. */\n deselectOptions: typeof deselectOptions;\n /** Emits a motion `enter` on the widget, adding a motion controller when it has none. */\n hover: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof hover> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits a motion `leave` on the widget, adding a motion controller when it has none. */\n unhover: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof unhover> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits `angle-changed` on the widget's rotate gestures. */\n rotate: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof rotate> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits `scale-changed` on the widget's zoom gestures. */\n zoom: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof zoom> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits `swipe` with the given velocity on the widget's swipe gestures. */\n swipe: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof swipe> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits `pressed` at the given point on the widget's long-press gestures. */\n longPress: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof longPress> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Runs a begin, update, and end sequence on the widget's drag gestures, ending at the given offset. */\n drag: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof drag> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits `drop` with the given content on the widget's drop targets. */\n drop: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof drop> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Requires a drag source on the source widget, then emits `drop` with the content on the target's drop targets. */\n dragAndDrop: (\n source: Gtk.Accessible,\n target: Gtk.Accessible,\n ...args: Parameters<typeof dragAndDrop> extends [Gtk.Widget, Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Emits a jump `change-value` on a Gtk.Range so it moves to the given value. */\n slide: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof slide> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Adds the delta to the adjustments of the widget itself, or of its nearest scrollable ancestor. */\n scroll: (\n widget: Gtk.Accessible,\n ...args: Parameters<typeof scroll> extends [Gtk.Widget, ...infer Args] ? Args : never\n ) => Promise<void>;\n /** Sends a key sequence through GTK's propagation chain. */\n keyboard: (widget: Gtk.Accessible, input: string) => Promise<void>;\n /** Applies a pointer token while preserving held-button state. */\n pointer: (widget: Gtk.Accessible, input: PointerInput) => Promise<void>;\n};\n\nconst onWidget =\n <Args extends unknown[]>(helper: (widget: Gtk.Widget, ...args: Args) => Promise<void>) =>\n (target: Gtk.Accessible, ...args: Args): Promise<void> =>\n helper(requireWidget(target), ...args);\n\nconst onWidgetPair =\n <Args extends unknown[]>(helper: (source: Gtk.Widget, target: Gtk.Widget, ...args: Args) => Promise<void>) =>\n (source: Gtk.Accessible, target: Gtk.Accessible, ...args: Args): Promise<void> =>\n helper(requireWidget(source), requireWidget(target), ...args);\n\n/** User interactions that dispatch GTK events and gestures. */\nconst userEvent: UserEvent = {\n ...createInstance(createInitialState(), {}),\n setup: (options?: UserEventOptions): UserEvent => createInstance(createInitialState(), options ?? {}),\n};\n\nconst settle = (ms: number | null | undefined): Promise<void> => {\n if (ms === null || ms === undefined) {\n return Promise.resolve();\n }\n\n return delay(ms);\n};\n\nfunction createInstance(state: UserEventState, options: UserEventOptions): UserEvent {\n const after =\n <Args extends unknown[]>(helper: (...args: Args) => Promise<void>) =>\n async (...args: Args): Promise<void> => {\n await helper(...args);\n await settle(options.delay);\n };\n\n return {\n setup: (overrides?: UserEventOptions): UserEvent => createInstance(state, { ...options, ...overrides }),\n click: after(onWidget(click)),\n dblClick: after(onWidget(dblClick)),\n tripleClick: after(onWidget(tripleClick)),\n tab: after(onWidget(tab)),\n type: after(onWidget(type)),\n clear: after(onWidget(clear)),\n copy: after(onWidget(copy)),\n cut: after(onWidget(cut)),\n paste: after(onWidget(paste)),\n selectOptions: after(onWidget(selectOptions)),\n deselectOptions: after(onWidget(deselectOptions)),\n hover: after(onWidget(hover)),\n unhover: after(onWidget(unhover)),\n rotate: after(onWidget(rotate)),\n zoom: after(onWidget(zoom)),\n swipe: after(onWidget(swipe)),\n longPress: after(onWidget(longPress)),\n drag: after(onWidget(drag)),\n drop: after(onWidget(drop)),\n dragAndDrop: after(onWidgetPair(dragAndDrop)),\n slide: after(onWidget(slide)),\n scroll: after(onWidget(scroll)),\n keyboard: after(\n onWidget((widget: Gtk.Widget, input: string): Promise<void> => keyboard(state, widget, input)),\n ),\n pointer: after(\n onWidget((widget: Gtk.Widget, input: PointerInput): Promise<void> => pointer(state, widget, input)),\n ),\n };\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, type UserEventOptions };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/user-event/keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,mCAAmC;AACnC,KAAK,UAAU,GAAG;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/user-event/keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,mCAAmC;AACnC,KAAK,UAAU,GAAG;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAsDF,4CAA4C;AAC5C,QAAA,MAAM,GAAG,GAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAU,UAAU,KAAG,OAAO,CAAC,IAAI,CAQ9D,CAAC;AAkWP,QAAA,MAAM,QAAQ,GAAI,OAAO,cAAc,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAKnF,CAAC;AAEP,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC"}
|
|
@@ -255,8 +255,29 @@ const didStopHandlePress = (stop, keyval, modifiers) => {
|
|
|
255
255
|
}
|
|
256
256
|
return controller.emit("key-pressed", keyval, 0, modifiers);
|
|
257
257
|
};
|
|
258
|
-
const
|
|
259
|
-
|
|
258
|
+
const keyTargetFor = (widget) => {
|
|
259
|
+
const root = widget.getRoot();
|
|
260
|
+
return { root, focus: root instanceof Gtk.Window ? root.getFocus() : null };
|
|
261
|
+
};
|
|
262
|
+
const isKeyTargetInvalidated = (widget, target) => {
|
|
263
|
+
const current = keyTargetFor(widget);
|
|
264
|
+
return current.root !== target.root || current.focus !== target.focus || !widget.getMapped();
|
|
265
|
+
};
|
|
266
|
+
const didHandlePress = (widget, keyval, modifiers) => {
|
|
267
|
+
const target = keyTargetFor(widget);
|
|
268
|
+
if (didDispatchApplicationAccels(widget, keyval, modifiers)) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
if (isKeyTargetInvalidated(widget, target)) {
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
for (const stop of keyPropagationChain(widget)) {
|
|
275
|
+
if (didStopHandlePress(stop, keyval, modifiers) || isKeyTargetInvalidated(widget, target)) {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return false;
|
|
280
|
+
};
|
|
260
281
|
const emitKeyReleased = (widget, keyval, modifiers) => {
|
|
261
282
|
for (const stop of keyPropagationChain(widget)) {
|
|
262
283
|
if (stop.controller instanceof Gtk.EventControllerKey) {
|