@gtkx/testing 1.0.0-rc.1 → 1.0.0-rc.3
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 +5 -5
- 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 +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/matchers.d.ts +99 -35
- package/dist/matchers.d.ts.map +1 -1
- package/dist/matchers.js +314 -63
- package/dist/matchers.js.map +1 -1
- package/dist/normalize.d.ts +10 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +20 -0
- package/dist/normalize.js.map +1 -0
- 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 +129 -90
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +235 -164
- 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 +25 -19
- 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 +65 -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 +7 -5
- package/dist/user-event/controller.d.ts.map +1 -1
- package/dist/user-event/controller.js +16 -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 +36 -25
- package/dist/widget-accessible-properties.d.ts.map +1 -1
- package/dist/widget-accessible-properties.js +215 -68
- 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 +6 -6
- 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 +13 -3
- package/src/matchers.ts +568 -114
- package/src/normalize.ts +28 -0
- package/src/pretty-widget.ts +114 -42
- package/src/queries.ts +418 -256
- package/src/register-test-hooks.ts +4 -1
- package/src/render-hook.tsx +10 -4
- package/src/render.tsx +59 -34
- 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 +111 -32
- package/src/user-event/adjustment.ts +23 -10
- package/src/user-event/click.ts +49 -20
- package/src/user-event/controller.ts +41 -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 +385 -79
- package/src/within.ts +8 -5
package/dist/act.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
declare global {
|
|
2
2
|
var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;
|
|
3
3
|
}
|
|
4
|
-
export declare const getIsReactActEnvironment: () => boolean | undefined;
|
|
5
|
-
export declare const setIsReactActEnvironment: (value: boolean | undefined) => void;
|
|
6
4
|
type ActCallback<T> = () => T | PromiseLike<T>;
|
|
7
5
|
type ActImplementation = <T>(callback: ActCallback<T>) => PromiseLike<T>;
|
|
8
|
-
export declare const runWithActEnvironment: <T>(forced: boolean, fn: () => T | PromiseLike<T>) => T | PromiseLike<T>;
|
|
9
6
|
/**
|
|
10
7
|
* Runs a callback inside React's act environment, flushing pending state
|
|
11
8
|
* updates and effects, and resolves once the work has settled.
|
|
@@ -13,7 +10,10 @@ export declare const runWithActEnvironment: <T>(forced: boolean, fn: () => T | P
|
|
|
13
10
|
* @param callback Work to run within the act environment.
|
|
14
11
|
* @returns A promise that resolves with the callback's result after updates flush.
|
|
15
12
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
declare const act: ActImplementation;
|
|
14
|
+
declare const getIsReactActEnvironment: () => boolean | undefined;
|
|
15
|
+
declare const setIsReactActEnvironment: (value: boolean | undefined) => void;
|
|
16
|
+
declare const runWithActEnvironment: <T>(isForced: boolean, fn: () => T | PromiseLike<T>) => Promise<T>;
|
|
17
|
+
declare const runInAct: (callback: () => unknown) => Promise<void>;
|
|
18
|
+
export { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };
|
|
19
19
|
//# sourceMappingURL=act.d.ts.map
|
package/dist/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,wBAAwB,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD;
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,wBAAwB,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,iBAAiB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AAGzE;;;;;;GAMG;AACH,QAAA,MAAM,GAAG,EAAE,iBAA+D,CAAC;AAU3E,QAAA,MAAM,wBAAwB,QAAO,OAAO,GAAG,SAAqD,CAAC;AAErG,QAAA,MAAM,wBAAwB,GAAI,OAAO,OAAO,GAAG,SAAS,KAAG,IAE9D,CAAC;AAaF,QAAA,MAAM,qBAAqB,GAAI,CAAC,EAAE,UAAU,OAAO,EAAE,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB5F,CAAC;AAUF,QAAA,MAAM,QAAQ,GAAU,UAAU,MAAM,OAAO,KAAG,OAAO,CAAC,IAAI,CAE7D,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/act.js
CHANGED
|
@@ -1,48 +1,56 @@
|
|
|
1
1
|
import { act as reactAct } from "react";
|
|
2
|
+
const actImplementation = reactAct;
|
|
3
|
+
/**
|
|
4
|
+
* Runs a callback inside React's act environment, flushing pending state
|
|
5
|
+
* updates and effects, and resolves once the work has settled.
|
|
6
|
+
*
|
|
7
|
+
* @param callback Work to run within the act environment.
|
|
8
|
+
* @returns A promise that resolves with the callback's result after updates flush.
|
|
9
|
+
*/
|
|
10
|
+
const act = withGlobalActEnvironment(actImplementation);
|
|
2
11
|
const getGlobalThis = () => {
|
|
3
|
-
if (typeof globalThis !== "undefined")
|
|
12
|
+
if (typeof globalThis !== "undefined") {
|
|
4
13
|
return globalThis;
|
|
14
|
+
}
|
|
5
15
|
throw new Error("unable to locate global object");
|
|
6
16
|
};
|
|
7
|
-
|
|
8
|
-
|
|
17
|
+
const getIsReactActEnvironment = () => getGlobalThis().IS_REACT_ACT_ENVIRONMENT;
|
|
18
|
+
const setIsReactActEnvironment = (value) => {
|
|
9
19
|
getGlobalThis().IS_REACT_ACT_ENVIRONMENT = value;
|
|
10
20
|
};
|
|
11
21
|
const isThenable = (value) => value !== null && typeof value === "object" && typeof value.then === "function";
|
|
12
|
-
|
|
22
|
+
const restoreAfter = async (result, previous) => {
|
|
23
|
+
try {
|
|
24
|
+
return await result;
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
setIsReactActEnvironment(previous);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const runWithActEnvironment = (isForced, fn) => {
|
|
13
31
|
const previousActEnvironment = getIsReactActEnvironment();
|
|
14
|
-
setIsReactActEnvironment(
|
|
32
|
+
setIsReactActEnvironment(isForced);
|
|
15
33
|
try {
|
|
16
34
|
const result = fn();
|
|
17
35
|
if (isThenable(result)) {
|
|
18
|
-
return
|
|
19
|
-
setIsReactActEnvironment(previousActEnvironment);
|
|
20
|
-
return value;
|
|
21
|
-
}, (error) => {
|
|
22
|
-
setIsReactActEnvironment(previousActEnvironment);
|
|
23
|
-
throw error;
|
|
24
|
-
});
|
|
36
|
+
return restoreAfter(result, previousActEnvironment);
|
|
25
37
|
}
|
|
26
38
|
setIsReactActEnvironment(previousActEnvironment);
|
|
27
|
-
return result;
|
|
39
|
+
return Promise.resolve(result);
|
|
28
40
|
}
|
|
29
41
|
catch (error) {
|
|
30
42
|
setIsReactActEnvironment(previousActEnvironment);
|
|
31
43
|
throw error;
|
|
32
44
|
}
|
|
33
45
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
function withGlobalActEnvironment(actImplementation) {
|
|
47
|
+
return (callback) => {
|
|
48
|
+
const settled = runWithActEnvironment(true, () => actImplementation(() => callback()));
|
|
49
|
+
return Promise.resolve(settled);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const runInAct = async (callback) => {
|
|
53
|
+
await act(() => callback());
|
|
37
54
|
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Runs a callback inside React's act environment, flushing pending state
|
|
41
|
-
* updates and effects, and resolves once the work has settled.
|
|
42
|
-
*
|
|
43
|
-
* @param callback Work to run within the act environment.
|
|
44
|
-
* @returns A promise that resolves with the callback's result after updates flush.
|
|
45
|
-
*/
|
|
46
|
-
export const act = withGlobalActEnvironment(actImplementation);
|
|
47
|
-
export const runInAct = (callback) => Promise.resolve(act(() => callback())).then(() => undefined);
|
|
55
|
+
export { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };
|
|
48
56
|
//# sourceMappingURL=act.js.map
|
package/dist/act.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAC;AASxC,MAAM,iBAAiB,GAAsB,QAAQ,CAAC;AACtD;;;;;;GAMG;AACH,MAAM,GAAG,GAAsB,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;AAE3E,MAAM,aAAa,GAAG,GAAsB,EAAE;IAC1C,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,GAAwB,EAAE,CAAC,aAAa,EAAE,CAAC,wBAAwB,CAAC;AAErG,MAAM,wBAAwB,GAAG,CAAC,KAA0B,EAAQ,EAAE;IAClE,aAAa,EAAE,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAI,KAAc,EAA2B,EAAE,CAC9D,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AAExG,MAAM,YAAY,GAAG,KAAK,EAAK,MAAsB,EAAE,QAA6B,EAAc,EAAE;IAChG,IAAI,CAAC;QACD,OAAO,MAAM,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAI,QAAiB,EAAE,EAA4B,EAAc,EAAE;IAC7F,MAAM,sBAAsB,GAAG,wBAAwB,EAAE,CAAC;IAC1D,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC;QACD,MAAM,MAAM,GAAuB,EAAE,EAAE,CAAC;QAExC,IAAI,UAAU,CAAI,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,iBAAoC;IAClE,OAAO,CAAI,QAAwB,EAAkB,EAAE;QACnD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEvF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAuB,EAAiB,EAAE;IAC9D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["import { act as reactAct } from \"react\";\n\ndeclare global {\n var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;\n}\n\ntype ActCallback<T> = () => T | PromiseLike<T>;\ntype ActImplementation = <T>(callback: ActCallback<T>) => PromiseLike<T>;\n\nconst actImplementation: ActImplementation = reactAct;\n/**\n * Runs a callback inside React's act environment, flushing pending state\n * updates and effects, and resolves once the work has settled.\n *\n * @param callback Work to run within the act environment.\n * @returns A promise that resolves with the callback's result after updates flush.\n */\nconst act: ActImplementation = withGlobalActEnvironment(actImplementation);\n\nconst getGlobalThis = (): typeof globalThis => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n\n throw new Error(\"unable to locate global object\");\n};\n\nconst getIsReactActEnvironment = (): boolean | undefined => getGlobalThis().IS_REACT_ACT_ENVIRONMENT;\n\nconst setIsReactActEnvironment = (value: boolean | undefined): void => {\n getGlobalThis().IS_REACT_ACT_ENVIRONMENT = value;\n};\n\nconst isThenable = <T>(value: unknown): value is PromiseLike<T> =>\n value !== null && typeof value === \"object\" && typeof (value as PromiseLike<T>).then === \"function\";\n\nconst restoreAfter = async <T>(result: PromiseLike<T>, previous: boolean | undefined): Promise<T> => {\n try {\n return await result;\n } finally {\n setIsReactActEnvironment(previous);\n }\n};\n\nconst runWithActEnvironment = <T>(isForced: boolean, fn: () => T | PromiseLike<T>): Promise<T> => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(isForced);\n\n try {\n const result: T | PromiseLike<T> = fn();\n\n if (isThenable<T>(result)) {\n return restoreAfter(result, previousActEnvironment);\n }\n\n setIsReactActEnvironment(previousActEnvironment);\n\n return Promise.resolve(result);\n } catch (error) {\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n};\n\nfunction withGlobalActEnvironment(actImplementation: ActImplementation): ActImplementation {\n return <T>(callback: ActCallback<T>): PromiseLike<T> => {\n const settled = runWithActEnvironment(true, () => actImplementation(() => callback()));\n\n return Promise.resolve(settled);\n };\n}\n\nconst runInAct = async (callback: () => unknown): Promise<void> => {\n await act(() => callback());\n};\n\nexport { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };\n"]}
|
package/dist/bound-queries.d.ts
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import type * as Gtk from "@gtkx/gi/gtk";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
-
import type { builtinQueries } from "./queries.js";
|
|
4
3
|
import type { Container } from "./traversal.js";
|
|
5
|
-
import type { BoundCustomQueries, DebugUtilities, QueryMap } from "./types.js";
|
|
4
|
+
import type { BoundCustomQueries, DebugUtilities, QueryFamilies, QueryMap } from "./types.js";
|
|
6
5
|
/**
|
|
7
6
|
* The set of built-in queries (getBy, findBy, queryBy, and their All variants)
|
|
8
7
|
* bound to a specific container.
|
|
9
8
|
*/
|
|
10
|
-
|
|
9
|
+
type BoundQueries = QueryFamilies<[]>;
|
|
11
10
|
/**
|
|
12
11
|
* The global screen object's shape: built-in queries scoped to the current
|
|
13
12
|
* toplevels, plus debug utilities.
|
|
14
13
|
*/
|
|
15
|
-
|
|
14
|
+
type Screen = BoundQueries & DebugUtilities;
|
|
16
15
|
/**
|
|
17
16
|
* The result of a render call: queries scoped to the rendered tree, debug
|
|
18
17
|
* utilities, and controls for updating or tearing down the render.
|
|
19
18
|
*
|
|
20
19
|
* @typeParam Q Custom queries provided at render time, merged with the built-in ones.
|
|
21
20
|
*/
|
|
22
|
-
|
|
21
|
+
type RenderResult<Q extends QueryMap = Record<never, never>> = BoundQueries & BoundCustomQueries<Q> & DebugUtilities & {
|
|
23
22
|
/** The top-level widget the element was rendered into. */
|
|
24
23
|
container: Gtk.Widget;
|
|
25
24
|
/** The root the queries are scoped to (defaults to all toplevels). */
|
|
@@ -29,4 +28,5 @@ export type RenderResult<Q extends QueryMap = Record<never, never>> = BoundQueri
|
|
|
29
28
|
/** Re-renders the tree with a new element, reusing the same root. */
|
|
30
29
|
rerender: (element: ReactNode) => Promise<void>;
|
|
31
30
|
};
|
|
31
|
+
export { type BoundQueries, type Screen, type RenderResult };
|
|
32
32
|
//# sourceMappingURL=bound-queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bound-queries.d.ts","sourceRoot":"","sources":["../src/bound-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"bound-queries.d.ts","sourceRoot":"","sources":["../src/bound-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9F;;;GAGG;AACH,KAAK,YAAY,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;AACtC;;;GAGG;AACH,KAAK,MAAM,GAAG,YAAY,GAAG,cAAc,CAAC;AAE5C;;;;;GAKG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,GACvE,kBAAkB,CAAC,CAAC,CAAC,GACrB,cAAc,GAAG;IACb,0DAA0D;IAC1D,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,sEAAsE;IACtE,WAAW,EAAE,SAAS,CAAC;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD,CAAC;AAEN,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bound-queries.js","sourceRoot":"","sources":["../src/bound-queries.ts"],"names":[],"mappings":"","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { ReactNode } from \"react\";\nimport type {
|
|
1
|
+
{"version":3,"file":"bound-queries.js","sourceRoot":"","sources":["../src/bound-queries.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAqD,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { ReactNode } from \"react\";\nimport type { Container } from \"./traversal.js\";\nimport type { BoundCustomQueries, DebugUtilities, QueryFamilies, QueryMap } from \"./types.js\";\n\n/**\n * The set of built-in queries (getBy, findBy, queryBy, and their All variants)\n * bound to a specific container.\n */\ntype BoundQueries = QueryFamilies<[]>;\n/**\n * The global screen object's shape: built-in queries scoped to the current\n * toplevels, plus debug utilities.\n */\ntype Screen = BoundQueries & DebugUtilities;\n\n/**\n * The result of a render call: queries scoped to the rendered tree, debug\n * utilities, and controls for updating or tearing down the render.\n *\n * @typeParam Q Custom queries provided at render time, merged with the built-in ones.\n */\ntype RenderResult<Q extends QueryMap = Record<never, never>> = BoundQueries &\n BoundCustomQueries<Q> &\n DebugUtilities & {\n /** The top-level widget the element was rendered into. */\n container: Gtk.Widget;\n /** The root the queries are scoped to (defaults to all toplevels). */\n baseElement: Container;\n /** Unmounts the rendered tree and disposes its resources. */\n unmount: () => Promise<void>;\n /** Re-renders the tree with a new element, reusing the same root. */\n rerender: (element: ReactNode) => Promise<void>;\n };\n\nexport { type BoundQueries, type Screen, type RenderResult };\n"]}
|
package/dist/build-queries.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
-
import { type Method } from "./suggestions.js";
|
|
3
2
|
import type { Container } from "./traversal.js";
|
|
4
|
-
|
|
3
|
+
import { type Method } from "./suggestions.js";
|
|
4
|
+
type QueryAllBy<Args extends unknown[]> = (container: Container, ...args: Args) => Gtk.Widget[];
|
|
5
5
|
type MultipleErrorBuilder<Args extends unknown[]> = (container: Container, matches: Gtk.Widget[], ...args: Args) => Error;
|
|
6
6
|
type MissingErrorBuilder<Args extends unknown[]> = (container: Container, ...args: Args) => Error;
|
|
7
|
-
|
|
7
|
+
type BuiltQueries<Args extends unknown[]> = {
|
|
8
8
|
queryBy: (container: Container, ...args: Args) => Gtk.Widget | null;
|
|
9
9
|
getAllBy: QueryAllBy<Args>;
|
|
10
10
|
getBy: (container: Container, ...args: Args) => Gtk.Widget;
|
|
11
11
|
findAllBy: (container: Container, ...args: Args) => Promise<Gtk.Widget[]>;
|
|
12
12
|
findBy: (container: Container, ...args: Args) => Promise<Gtk.Widget>;
|
|
13
13
|
};
|
|
14
|
-
|
|
15
|
-
export {};
|
|
14
|
+
declare const buildQueries: <Args extends unknown[]>(queryName: Method, queryAllBy: QueryAllBy<Args>, getMultipleError: MultipleErrorBuilder<Args>, getMissingError: MissingErrorBuilder<Args>) => BuiltQueries<Args>;
|
|
15
|
+
export { buildQueries, type QueryAllBy, type BuiltQueries };
|
|
16
16
|
//# sourceMappingURL=build-queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-queries.d.ts","sourceRoot":"","sources":["../src/build-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"build-queries.d.ts","sourceRoot":"","sources":["../src/build-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EAAqB,KAAK,MAAM,EAAgB,MAAM,kBAAkB,CAAC;AAGhF,KAAK,UAAU,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;AAEhG,KAAK,oBAAoB,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAChD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,EACrB,GAAG,IAAI,EAAE,IAAI,KACZ,KAAK,CAAC;AAEX,KAAK,mBAAmB,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC;AAElG,KAAK,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI;IACxC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC;IAC3D,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACxE,CAAC;AA4JF,QAAA,MAAM,YAAY,GAAI,IAAI,SAAS,OAAO,EAAE,EACxC,WAAW,MAAM,EACjB,YAAY,UAAU,CAAC,IAAI,CAAC,EAC5B,kBAAkB,oBAAoB,CAAC,IAAI,CAAC,EAC5C,iBAAiB,mBAAmB,CAAC,IAAI,CAAC,KAC3C,YAAY,CAAC,IAAI,CAsCnB,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,CAAC"}
|
package/dist/build-queries.js
CHANGED
|
@@ -3,7 +3,7 @@ import { runWithExpensiveErrorDiagnosticsDisabled, suggestionError } from "./err
|
|
|
3
3
|
import { getSuggestedQuery } from "./suggestions.js";
|
|
4
4
|
import { waitFor } from "./wait-for.js";
|
|
5
5
|
const extractWaitForOptions = (args) => {
|
|
6
|
-
const last = args
|
|
6
|
+
const last = args.at(-1);
|
|
7
7
|
if (last && typeof last === "object" && !(last instanceof RegExp)) {
|
|
8
8
|
const { timeout, interval, onTimeout } = last;
|
|
9
9
|
return { timeout, interval, onTimeout };
|
|
@@ -11,7 +11,7 @@ const extractWaitForOptions = (args) => {
|
|
|
11
11
|
return {};
|
|
12
12
|
};
|
|
13
13
|
const extractSuggestOption = (args) => {
|
|
14
|
-
const last = args
|
|
14
|
+
const last = args.at(-1);
|
|
15
15
|
if (last && typeof last === "object" && !(last instanceof RegExp)) {
|
|
16
16
|
return last.suggest;
|
|
17
17
|
}
|
|
@@ -20,8 +20,9 @@ const extractSuggestOption = (args) => {
|
|
|
20
20
|
const maybeThrowSuggestion = (options) => {
|
|
21
21
|
const { container, match, queryName, variant, suggest } = options;
|
|
22
22
|
const shouldSuggest = suggest ?? getConfig().throwSuggestions;
|
|
23
|
-
if (!shouldSuggest)
|
|
23
|
+
if (!shouldSuggest) {
|
|
24
24
|
return;
|
|
25
|
+
}
|
|
25
26
|
const suggestion = getSuggestedQuery(match, variant);
|
|
26
27
|
if (suggestion && suggestion.queryName !== queryName) {
|
|
27
28
|
throw suggestionError(suggestion.toString(), container);
|
|
@@ -32,8 +33,9 @@ const reRunForDiagnostics = (query, container, args, fallback) => {
|
|
|
32
33
|
query(container, ...args);
|
|
33
34
|
}
|
|
34
35
|
catch (error) {
|
|
35
|
-
if (error instanceof Error)
|
|
36
|
+
if (error instanceof Error) {
|
|
36
37
|
return error;
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
return fallback;
|
|
39
41
|
};
|
|
@@ -49,14 +51,16 @@ const findOptions = (query, container, args) => {
|
|
|
49
51
|
};
|
|
50
52
|
const singleFrom = (allQuery, getMultipleError) => (container, ...args) => {
|
|
51
53
|
const matches = allQuery(container, ...args);
|
|
52
|
-
if (matches.length > 1)
|
|
54
|
+
if (matches.length > 1) {
|
|
53
55
|
throw getMultipleError(container, matches, ...args);
|
|
56
|
+
}
|
|
54
57
|
return matches[0] ?? null;
|
|
55
58
|
};
|
|
56
59
|
const allOrThrow = (allQuery, getMissingError) => (container, ...args) => {
|
|
57
60
|
const matches = allQuery(container, ...args);
|
|
58
|
-
if (matches.length === 0)
|
|
61
|
+
if (matches.length === 0) {
|
|
59
62
|
throw getMissingError(container, ...args);
|
|
63
|
+
}
|
|
60
64
|
return matches;
|
|
61
65
|
};
|
|
62
66
|
const wrapSingleWithSuggestion = (query, queryName, variant) => (container, ...args) => {
|
|
@@ -70,17 +74,24 @@ const wrapAllWithSuggestion = (query, queryName, variant) => (container, ...args
|
|
|
70
74
|
const matches = query(container, ...args);
|
|
71
75
|
const [first] = matches;
|
|
72
76
|
if (first !== undefined) {
|
|
73
|
-
maybeThrowSuggestion({
|
|
77
|
+
maybeThrowSuggestion({
|
|
78
|
+
container,
|
|
79
|
+
match: first,
|
|
80
|
+
queryName,
|
|
81
|
+
variant,
|
|
82
|
+
suggest: extractSuggestOption(args),
|
|
83
|
+
});
|
|
74
84
|
}
|
|
75
85
|
return matches;
|
|
76
86
|
};
|
|
77
87
|
const requireSingle = (query, getMissingError) => (container, ...args) => {
|
|
78
88
|
const match = query(container, ...args);
|
|
79
|
-
if (match === null)
|
|
89
|
+
if (match === null) {
|
|
80
90
|
throw getMissingError(container, ...args);
|
|
91
|
+
}
|
|
81
92
|
return match;
|
|
82
93
|
};
|
|
83
|
-
|
|
94
|
+
const buildQueries = (queryName, queryAllBy, getMultipleError, getMissingError) => {
|
|
84
95
|
const getAllBy = allOrThrow(queryAllBy, getMissingError);
|
|
85
96
|
const getBy = requireSingle(singleFrom(getAllBy, getMultipleError), getMissingError);
|
|
86
97
|
const queryByWithSuggestion = wrapSingleWithSuggestion(singleFrom(queryAllBy, getMultipleError), queryName, "query");
|
|
@@ -100,4 +111,5 @@ export const buildQueries = (queryName, queryAllBy, getMultipleError, getMissing
|
|
|
100
111
|
findBy,
|
|
101
112
|
};
|
|
102
113
|
};
|
|
114
|
+
export { buildQueries };
|
|
103
115
|
//# sourceMappingURL=build-queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-queries.js","sourceRoot":"","sources":["../src/build-queries.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { getConfig } from \"./config.js\";\nimport { runWithExpensiveErrorDiagnosticsDisabled, suggestionError } from \"./errors.js\";\nimport { getSuggestedQuery, type Method, type Variant } from \"./suggestions.js\";\nimport type { Container } from \"./traversal.js\";\nimport type { MatcherOptions, WaitForOptions } from \"./types.js\";\nimport { waitFor } from \"./wait-for.js\";\n\nexport type QueryAllBy<Args extends unknown[]> = (container: Container, ...args: Args) => Gtk.Widget[];\n\ntype MultipleErrorBuilder<Args extends unknown[]> = (\n container: Container,\n matches: Gtk.Widget[],\n ...args: Args\n) => Error;\ntype MissingErrorBuilder<Args extends unknown[]> = (container: Container, ...args: Args) => Error;\n\nexport type BuiltQueries<Args extends unknown[]> = {\n queryBy: (container: Container, ...args: Args) => Gtk.Widget | null;\n getAllBy: QueryAllBy<Args>;\n getBy: (container: Container, ...args: Args) => Gtk.Widget;\n findAllBy: (container: Container, ...args: Args) => Promise<Gtk.Widget[]>;\n findBy: (container: Container, ...args: Args) => Promise<Gtk.Widget>;\n};\n\nconst extractWaitForOptions = (args: unknown[]): WaitForOptions => {\n const last = args[args.length - 1];\n if (last && typeof last === \"object\" && !(last instanceof RegExp)) {\n const { timeout, interval, onTimeout } = last as WaitForOptions;\n return { timeout, interval, onTimeout };\n }\n return {};\n};\n\nconst extractSuggestOption = (args: unknown[]): boolean | undefined => {\n const last = args[args.length - 1];\n if (last && typeof last === \"object\" && !(last instanceof RegExp)) {\n return (last as MatcherOptions).suggest;\n }\n return undefined;\n};\n\nconst maybeThrowSuggestion = (options: {\n container: Container;\n match: Gtk.Widget;\n queryName: Method;\n variant: Variant;\n suggest: boolean | undefined;\n}): void => {\n const { container, match, queryName, variant, suggest } = options;\n const shouldSuggest = suggest ?? getConfig().throwSuggestions;\n if (!shouldSuggest) return;\n\n const suggestion = getSuggestedQuery(match, variant);\n if (suggestion && suggestion.queryName !== queryName) {\n throw suggestionError(suggestion.toString(), container);\n }\n};\n\ntype FindQuery<Args extends unknown[]> = (container: Container, ...args: Args) => unknown;\n\nconst reRunForDiagnostics = <Args extends unknown[]>(\n query: FindQuery<Args>,\n container: Container,\n args: Args,\n fallback: Error,\n): Error => {\n try {\n query(container, ...args);\n } catch (error) {\n if (error instanceof Error) return error;\n }\n return fallback;\n};\n\nconst findOptions = <Args extends unknown[]>(\n query: FindQuery<Args>,\n container: Container,\n args: Args,\n): WaitForOptions => {\n const userOptions = extractWaitForOptions(args);\n const onTimeout =\n userOptions.onTimeout ?? ((fallback: Error) => reRunForDiagnostics(query, container, args, fallback));\n return {\n stackTraceError: new Error(\"STACK_TRACE_MESSAGE\"),\n onTimeout,\n timeout: userOptions.timeout,\n interval: userOptions.interval,\n };\n};\n\ntype SingleQuery<Args extends unknown[]> = (container: Container, ...args: Args) => Gtk.Widget | null;\n\nconst singleFrom =\n <Args extends unknown[]>(\n allQuery: QueryAllBy<Args>,\n getMultipleError: MultipleErrorBuilder<Args>,\n ): SingleQuery<Args> =>\n (container, ...args) => {\n const matches = allQuery(container, ...args);\n if (matches.length > 1) throw getMultipleError(container, matches, ...args);\n return matches[0] ?? null;\n };\n\nconst allOrThrow =\n <Args extends unknown[]>(\n allQuery: QueryAllBy<Args>,\n getMissingError: MissingErrorBuilder<Args>,\n ): QueryAllBy<Args> =>\n (container, ...args) => {\n const matches = allQuery(container, ...args);\n if (matches.length === 0) throw getMissingError(container, ...args);\n return matches;\n };\n\nconst wrapSingleWithSuggestion =\n <Args extends unknown[]>(query: SingleQuery<Args>, queryName: Method, variant: Variant): SingleQuery<Args> =>\n (container, ...args) => {\n const match = query(container, ...args);\n if (match) {\n maybeThrowSuggestion({ container, match, queryName, variant, suggest: extractSuggestOption(args) });\n }\n return match;\n };\n\nconst wrapAllWithSuggestion =\n <Args extends unknown[]>(query: QueryAllBy<Args>, queryName: Method, variant: Variant): QueryAllBy<Args> =>\n (container, ...args) => {\n const matches = query(container, ...args);\n const [first] = matches;\n if (first !== undefined) {\n maybeThrowSuggestion({ container, match: first, queryName, variant, suggest: extractSuggestOption(args) });\n }\n return matches;\n };\n\nconst requireSingle =\n <Args extends unknown[]>(query: SingleQuery<Args>, getMissingError: MissingErrorBuilder<Args>) =>\n (container: Container, ...args: Args): Gtk.Widget => {\n const match = query(container, ...args);\n if (match === null) throw getMissingError(container, ...args);\n return match;\n };\n\nexport const buildQueries = <Args extends unknown[]>(\n queryName: Method,\n queryAllBy: QueryAllBy<Args>,\n getMultipleError: MultipleErrorBuilder<Args>,\n getMissingError: MissingErrorBuilder<Args>,\n): BuiltQueries<Args> => {\n const getAllBy = allOrThrow(queryAllBy, getMissingError);\n const getBy = requireSingle(singleFrom(getAllBy, getMultipleError), getMissingError);\n\n const queryByWithSuggestion = wrapSingleWithSuggestion(\n singleFrom(queryAllBy, getMultipleError),\n queryName,\n \"query\",\n );\n const getAllByWithSuggestion = wrapAllWithSuggestion(getAllBy, queryName, \"getAll\");\n const getByWithSuggestion: (container: Container, ...args: Args) => Gtk.Widget = (container, ...args) => {\n const match = getBy(container, ...args);\n maybeThrowSuggestion({ container, match, queryName, variant: \"get\", suggest: extractSuggestOption(args) });\n return match;\n };\n\n const findAllBy = (container: Container, ...args: Args): Promise<Gtk.Widget[]> =>\n waitFor(\n () => runWithExpensiveErrorDiagnosticsDisabled(() => getAllByWithSuggestion(container, ...args)),\n findOptions(getAllByWithSuggestion, container, args),\n );\n\n const findBy = (container: Container, ...args: Args): Promise<Gtk.Widget> =>\n waitFor(\n () => runWithExpensiveErrorDiagnosticsDisabled(() => getByWithSuggestion(container, ...args)),\n findOptions(getByWithSuggestion, container, args),\n );\n\n return {\n queryBy: queryByWithSuggestion,\n getAllBy: getAllByWithSuggestion,\n getBy: getByWithSuggestion,\n findAllBy,\n findBy,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"build-queries.js","sourceRoot":"","sources":["../src/build-queries.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { Container } from \"./traversal.js\";\nimport type { MatcherOptions, WaitForOptions } from \"./types.js\";\nimport { getConfig } from \"./config.js\";\nimport { runWithExpensiveErrorDiagnosticsDisabled, suggestionError } from \"./errors.js\";\nimport { getSuggestedQuery, type Method, type Variant } from \"./suggestions.js\";\nimport { waitFor } from \"./wait-for.js\";\n\ntype QueryAllBy<Args extends unknown[]> = (container: Container, ...args: Args) => Gtk.Widget[];\n\ntype MultipleErrorBuilder<Args extends unknown[]> = (\n container: Container,\n matches: Gtk.Widget[],\n ...args: Args\n) => Error;\n\ntype MissingErrorBuilder<Args extends unknown[]> = (container: Container, ...args: Args) => Error;\n\ntype BuiltQueries<Args extends unknown[]> = {\n queryBy: (container: Container, ...args: Args) => Gtk.Widget | null;\n getAllBy: QueryAllBy<Args>;\n getBy: (container: Container, ...args: Args) => Gtk.Widget;\n findAllBy: (container: Container, ...args: Args) => Promise<Gtk.Widget[]>;\n findBy: (container: Container, ...args: Args) => Promise<Gtk.Widget>;\n};\n\ntype FindQuery<Args extends unknown[]> = (container: Container, ...args: Args) => unknown;\ntype SingleQuery<Args extends unknown[]> = (container: Container, ...args: Args) => Gtk.Widget | null;\n\nconst extractWaitForOptions = (args: unknown[]): WaitForOptions => {\n const last = args.at(-1);\n\n if (last && typeof last === \"object\" && !(last instanceof RegExp)) {\n const { timeout, interval, onTimeout } = last as WaitForOptions;\n\n return { timeout, interval, onTimeout };\n }\n\n return {};\n};\n\nconst extractSuggestOption = (args: unknown[]): boolean | undefined => {\n const last = args.at(-1);\n\n if (last && typeof last === \"object\" && !(last instanceof RegExp)) {\n return (last as MatcherOptions).suggest;\n }\n\n return undefined;\n};\n\nconst maybeThrowSuggestion = (options: {\n container: Container;\n match: Gtk.Widget;\n queryName: Method;\n variant: Variant;\n suggest: boolean | undefined;\n}): void => {\n const { container, match, queryName, variant, suggest } = options;\n const shouldSuggest = suggest ?? getConfig().throwSuggestions;\n\n if (!shouldSuggest) {\n return;\n }\n\n const suggestion = getSuggestedQuery(match, variant);\n\n if (suggestion && suggestion.queryName !== queryName) {\n throw suggestionError(suggestion.toString(), container);\n }\n};\n\nconst reRunForDiagnostics = <Args extends unknown[]>(\n query: FindQuery<Args>,\n container: Container,\n args: Args,\n fallback: Error,\n): Error => {\n try {\n query(container, ...args);\n } catch (error) {\n if (error instanceof Error) {\n return error;\n }\n }\n\n return fallback;\n};\n\nconst findOptions = <Args extends unknown[]>(\n query: FindQuery<Args>,\n container: Container,\n args: Args,\n): WaitForOptions => {\n const userOptions = extractWaitForOptions(args);\n\n const onTimeout =\n userOptions.onTimeout ?? ((fallback: Error) => reRunForDiagnostics(query, container, args, fallback));\n\n return {\n stackTraceError: new Error(\"STACK_TRACE_MESSAGE\"),\n onTimeout,\n timeout: userOptions.timeout,\n interval: userOptions.interval,\n };\n};\n\nconst singleFrom =\n <Args extends unknown[]>(\n allQuery: QueryAllBy<Args>,\n getMultipleError: MultipleErrorBuilder<Args>,\n ): SingleQuery<Args> =>\n (container, ...args) => {\n const matches = allQuery(container, ...args);\n\n if (matches.length > 1) {\n throw getMultipleError(container, matches, ...args);\n }\n\n return matches[0] ?? null;\n };\n\nconst allOrThrow =\n <Args extends unknown[]>(\n allQuery: QueryAllBy<Args>,\n getMissingError: MissingErrorBuilder<Args>,\n ): QueryAllBy<Args> =>\n (container, ...args) => {\n const matches = allQuery(container, ...args);\n\n if (matches.length === 0) {\n throw getMissingError(container, ...args);\n }\n\n return matches;\n };\n\nconst wrapSingleWithSuggestion =\n <Args extends unknown[]>(query: SingleQuery<Args>, queryName: Method, variant: Variant): SingleQuery<Args> =>\n (container, ...args) => {\n const match = query(container, ...args);\n\n if (match) {\n maybeThrowSuggestion({ container, match, queryName, variant, suggest: extractSuggestOption(args) });\n }\n\n return match;\n };\n\nconst wrapAllWithSuggestion =\n <Args extends unknown[]>(query: QueryAllBy<Args>, queryName: Method, variant: Variant): QueryAllBy<Args> =>\n (container, ...args) => {\n const matches = query(container, ...args);\n const [first] = matches;\n\n if (first !== undefined) {\n maybeThrowSuggestion({\n container,\n match: first,\n queryName,\n variant,\n suggest: extractSuggestOption(args),\n });\n }\n\n return matches;\n };\n\nconst requireSingle =\n <Args extends unknown[]>(query: SingleQuery<Args>, getMissingError: MissingErrorBuilder<Args>) =>\n (container: Container, ...args: Args): Gtk.Widget => {\n const match = query(container, ...args);\n\n if (match === null) {\n throw getMissingError(container, ...args);\n }\n\n return match;\n };\n\nconst buildQueries = <Args extends unknown[]>(\n queryName: Method,\n queryAllBy: QueryAllBy<Args>,\n getMultipleError: MultipleErrorBuilder<Args>,\n getMissingError: MissingErrorBuilder<Args>,\n): BuiltQueries<Args> => {\n const getAllBy = allOrThrow(queryAllBy, getMissingError);\n const getBy = requireSingle(singleFrom(getAllBy, getMultipleError), getMissingError);\n\n const queryByWithSuggestion = wrapSingleWithSuggestion(\n singleFrom(queryAllBy, getMultipleError),\n queryName,\n \"query\",\n );\n\n const getAllByWithSuggestion = wrapAllWithSuggestion(getAllBy, queryName, \"getAll\");\n\n const getByWithSuggestion: (container: Container, ...args: Args) => Gtk.Widget = (container, ...args) => {\n const match = getBy(container, ...args);\n maybeThrowSuggestion({ container, match, queryName, variant: \"get\", suggest: extractSuggestOption(args) });\n\n return match;\n };\n\n const findAllBy = (container: Container, ...args: Args): Promise<Gtk.Widget[]> =>\n waitFor(\n () => runWithExpensiveErrorDiagnosticsDisabled(() => getAllByWithSuggestion(container, ...args)),\n findOptions(getAllByWithSuggestion, container, args),\n );\n\n const findBy = (container: Container, ...args: Args): Promise<Gtk.Widget> =>\n waitFor(\n () => runWithExpensiveErrorDiagnosticsDisabled(() => getByWithSuggestion(container, ...args)),\n findOptions(getByWithSuggestion, container, args),\n );\n\n return {\n queryBy: queryByWithSuggestion,\n getAllBy: getAllByWithSuggestion,\n getBy: getByWithSuggestion,\n findAllBy,\n findBy,\n };\n};\n\nexport { buildQueries, type QueryAllBy, type BuiltQueries };\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type CleanupFunction = () => void | Promise<void>;
|
|
2
|
+
declare const addToCleanupQueue: (fn: CleanupFunction) => void;
|
|
3
|
+
declare const runCleanup: () => Promise<void>;
|
|
4
|
+
export { addToCleanupQueue, runCleanup, type CleanupFunction };
|
|
4
5
|
//# sourceMappingURL=cleanup-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-registry.d.ts","sourceRoot":"","sources":["../src/cleanup-registry.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"cleanup-registry.d.ts","sourceRoot":"","sources":["../src/cleanup-registry.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAIlD,QAAA,MAAM,iBAAiB,GAAI,IAAI,eAAe,KAAG,IAEhD,CAAC;AAEF,QAAA,MAAM,UAAU,QAAa,OAAO,CAAC,IAAI,CAgBxC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
package/dist/cleanup-registry.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
const cleanupQueue = new Set();
|
|
2
|
-
|
|
2
|
+
const addToCleanupQueue = (fn) => {
|
|
3
3
|
cleanupQueue.add(fn);
|
|
4
4
|
};
|
|
5
|
-
|
|
5
|
+
const runCleanup = async () => {
|
|
6
|
+
const failures = [];
|
|
6
7
|
for (const fn of cleanupQueue) {
|
|
7
|
-
|
|
8
|
+
try {
|
|
9
|
+
await fn();
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
failures.push(error);
|
|
13
|
+
}
|
|
8
14
|
}
|
|
9
15
|
cleanupQueue.clear();
|
|
16
|
+
if (failures.length > 0) {
|
|
17
|
+
throw new AggregateError(failures, "Cleanup failed");
|
|
18
|
+
}
|
|
10
19
|
};
|
|
20
|
+
export { addToCleanupQueue, runCleanup };
|
|
11
21
|
//# sourceMappingURL=cleanup-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-registry.js","sourceRoot":"","sources":["../src/cleanup-registry.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"cleanup-registry.js","sourceRoot":"","sources":["../src/cleanup-registry.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAyB,IAAI,GAAG,EAAE,CAAC;AAErD,MAAM,iBAAiB,GAAG,CAAC,EAAmB,EAAQ,EAAE;IACpD,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;IACzC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,EAAE,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,YAAY,CAAC,KAAK,EAAE,CAAC;IAErB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAwB,CAAC","sourcesContent":["type CleanupFunction = () => void | Promise<void>;\n\nconst cleanupQueue: Set<CleanupFunction> = new Set();\n\nconst addToCleanupQueue = (fn: CleanupFunction): void => {\n cleanupQueue.add(fn);\n};\n\nconst runCleanup = async (): Promise<void> => {\n const failures: unknown[] = [];\n\n for (const fn of cleanupQueue) {\n try {\n await fn();\n } catch (error) {\n failures.push(error);\n }\n }\n\n cleanupQueue.clear();\n\n if (failures.length > 0) {\n throw new AggregateError(failures, \"Cleanup failed\");\n }\n};\n\nexport { addToCleanupQueue, runCleanup, type CleanupFunction };\n"]}
|
package/dist/config.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Container } from "./traversal.js";
|
|
|
4
4
|
* error formatting, and the timeouts used by async utilities and actionability
|
|
5
5
|
* checks.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
type Config = {
|
|
8
8
|
throwSuggestions: boolean;
|
|
9
9
|
/** Builds the error thrown when a query fails, given a message and optional container. */
|
|
10
10
|
getElementError: (message: string, container?: Container) => Error;
|
|
@@ -17,16 +17,17 @@ export type Config = {
|
|
|
17
17
|
* Function form of a configuration update: receives the current config and
|
|
18
18
|
* returns the fields to override.
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
type ConfigFn = (existingConfig: Config) => Partial<Config>;
|
|
21
21
|
/**
|
|
22
22
|
* Returns the current global testing configuration.
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
declare const getConfig: () => Config;
|
|
25
25
|
/**
|
|
26
26
|
* Merges the given overrides into the global testing configuration.
|
|
27
27
|
*
|
|
28
28
|
* @param newConfig Either a partial config object or a function that receives
|
|
29
29
|
* the current config and returns the fields to override.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
declare const configure: (newConfig: Partial<Config> | ConfigFn) => void;
|
|
32
|
+
export { getConfig, configure, type Config, type ConfigFn };
|
|
32
33
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,KAAK,MAAM,GAAG;IACV,gBAAgB,EAAE,OAAO,CAAC;IAE1B,0FAA0F;IAC1F,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,KAAK,KAAK,CAAC;IAEnE,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IAEzB,4EAA4E;IAC5E,oBAAoB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,KAAK,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAe5D;;GAEG;AACH,QAAA,MAAM,SAAS,QAAO,MAErB,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,SAAS,GAAI,WAAW,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,KAAG,IAG1D,CAAC;AAMF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
const defaultGetElementError = (message, _container) => {
|
|
2
|
-
const error = new Error(message);
|
|
3
|
-
error.name = "GtkxElementError";
|
|
4
|
-
return error;
|
|
5
|
-
};
|
|
6
1
|
const defaultConfig = {
|
|
7
2
|
throwSuggestions: false,
|
|
8
3
|
getElementError: defaultGetElementError,
|
|
9
4
|
asyncUtilTimeout: 1000,
|
|
10
5
|
actionabilityTimeout: 500,
|
|
11
6
|
};
|
|
12
|
-
|
|
7
|
+
const currentConfig = { ...defaultConfig };
|
|
8
|
+
function defaultGetElementError(message) {
|
|
9
|
+
return new GtkxElementError(message);
|
|
10
|
+
}
|
|
13
11
|
/**
|
|
14
12
|
* Returns the current global testing configuration.
|
|
15
13
|
*/
|
|
16
|
-
|
|
14
|
+
const getConfig = () => {
|
|
17
15
|
return currentConfig;
|
|
18
16
|
};
|
|
19
17
|
/**
|
|
@@ -22,8 +20,12 @@ export const getConfig = () => {
|
|
|
22
20
|
* @param newConfig Either a partial config object or a function that receives
|
|
23
21
|
* the current config and returns the fields to override.
|
|
24
22
|
*/
|
|
25
|
-
|
|
23
|
+
const configure = (newConfig) => {
|
|
26
24
|
const updates = typeof newConfig === "function" ? newConfig(currentConfig) : newConfig;
|
|
27
|
-
currentConfig
|
|
25
|
+
Object.assign(currentConfig, updates);
|
|
28
26
|
};
|
|
27
|
+
class GtkxElementError extends Error {
|
|
28
|
+
name = "GtkxElementError";
|
|
29
|
+
}
|
|
30
|
+
export { getConfig, configure };
|
|
29
31
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA0BA,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA0BA,MAAM,aAAa,GAAW;IAC1B,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,sBAAsB;IACvC,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,GAAG;CAC5B,CAAC;AAEF,MAAM,aAAa,GAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AAEnD,SAAS,sBAAsB,CAAC,OAAe;IAC3C,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAG,GAAW,EAAE;IAC3B,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,SAAqC,EAAQ,EAAE;IAC9D,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,gBAAiB,SAAQ,KAAK;IACvB,IAAI,GAAG,kBAAkB,CAAC;CACtC;AAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAA8B,CAAC","sourcesContent":["import type { Container } from \"./traversal.js\";\n\n/**\n * Global configuration for the testing harness, controlling query behavior,\n * error formatting, and the timeouts used by async utilities and actionability\n * checks.\n */\ntype Config = {\n throwSuggestions: boolean;\n\n /** Builds the error thrown when a query fails, given a message and optional container. */\n getElementError: (message: string, container?: Container) => Error;\n\n /** Default timeout in milliseconds for async utilities such as waitFor. */\n asyncUtilTimeout: number;\n\n /** Timeout in milliseconds for waiting on a widget to become actionable. */\n actionabilityTimeout: number;\n};\n\n/**\n * Function form of a configuration update: receives the current config and\n * returns the fields to override.\n */\ntype ConfigFn = (existingConfig: Config) => Partial<Config>;\n\nconst defaultConfig: Config = {\n throwSuggestions: false,\n getElementError: defaultGetElementError,\n asyncUtilTimeout: 1000,\n actionabilityTimeout: 500,\n};\n\nconst currentConfig: Config = { ...defaultConfig };\n\nfunction defaultGetElementError(message: string): Error {\n return new GtkxElementError(message);\n}\n\n/**\n * Returns the current global testing configuration.\n */\nconst getConfig = (): Config => {\n return currentConfig;\n};\n\n/**\n * Merges the given overrides into the global testing configuration.\n *\n * @param newConfig Either a partial config object or a function that receives\n * the current config and returns the fields to override.\n */\nconst configure = (newConfig: Partial<Config> | ConfigFn): void => {\n const updates = typeof newConfig === \"function\" ? newConfig(currentConfig) : newConfig;\n Object.assign(currentConfig, updates);\n};\n\nclass GtkxElementError extends Error {\n override name = \"GtkxElementError\";\n}\n\nexport { getConfig, configure, type Config, type ConfigFn };\n"]}
|
package/dist/editable.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
type EditableTarget = Gtk.Editable | Gtk.TextView;
|
|
3
|
+
declare const EDITABLE_ROLES: Set<Gtk.AccessibleRole>;
|
|
4
|
+
declare const isEditable: (widget: unknown) => widget is EditableTarget;
|
|
5
|
+
declare const getEditableDelegate: (widget: Gtk.Widget) => Gtk.Widget | null;
|
|
6
|
+
declare const readEditableText: (widget: EditableTarget) => string;
|
|
7
|
+
export { EDITABLE_ROLES, isEditable, getEditableDelegate, readEditableText, type EditableTarget };
|
|
7
8
|
//# sourceMappingURL=editable.d.ts.map
|
package/dist/editable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../src/editable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,
|
|
1
|
+
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../src/editable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,KAAK,cAAc,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAElD,QAAA,MAAM,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAI1C,CAAC;AAEH,QAAA,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAG,MAAM,IAAI,cACoB,CAAC;AAErE,QAAA,MAAM,mBAAmB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,GAAG,CAAC,MAAM,GAAG,IAM9D,CAAC;AASF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,cAAc,KAAG,MAMlD,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,CAAC"}
|
package/dist/editable.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
-
|
|
2
|
+
const EDITABLE_ROLES = new Set([
|
|
3
3
|
Gtk.AccessibleRole.TEXT_BOX,
|
|
4
4
|
Gtk.AccessibleRole.SEARCH_BOX,
|
|
5
5
|
Gtk.AccessibleRole.SPIN_BUTTON,
|
|
6
6
|
]);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!(widget instanceof Gtk.Editable))
|
|
7
|
+
const isEditable = (widget) => widget instanceof Gtk.Editable || widget instanceof Gtk.TextView;
|
|
8
|
+
const getEditableDelegate = (widget) => {
|
|
9
|
+
if (!(widget instanceof Gtk.Editable)) {
|
|
10
10
|
return null;
|
|
11
|
+
}
|
|
11
12
|
return widget.getDelegate();
|
|
12
13
|
};
|
|
13
14
|
const readTextViewBufferText = (widget) => {
|
|
@@ -15,10 +16,11 @@ const readTextViewBufferText = (widget) => {
|
|
|
15
16
|
const [start, end] = buffer.getBounds();
|
|
16
17
|
return buffer.getText(start, end, true);
|
|
17
18
|
};
|
|
18
|
-
|
|
19
|
+
const readEditableText = (widget) => {
|
|
19
20
|
if (widget instanceof Gtk.TextView) {
|
|
20
21
|
return readTextViewBufferText(widget);
|
|
21
22
|
}
|
|
22
23
|
return widget.getText();
|
|
23
24
|
};
|
|
25
|
+
export { EDITABLE_ROLES, isEditable, getEditableDelegate, readEditableText };
|
|
24
26
|
//# sourceMappingURL=editable.js.map
|
package/dist/editable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable.js","sourceRoot":"","sources":["../src/editable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAIpC,MAAM,
|
|
1
|
+
{"version":3,"file":"editable.js","sourceRoot":"","sources":["../src/editable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAIpC,MAAM,cAAc,GAA4B,IAAI,GAAG,CAAqB;IACxE,GAAG,CAAC,cAAc,CAAC,QAAQ;IAC3B,GAAG,CAAC,cAAc,CAAC,UAAU;IAC7B,GAAG,CAAC,cAAc,CAAC,WAAW;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,MAAe,EAA4B,EAAE,CAC7D,MAAM,YAAY,GAAG,CAAC,QAAQ,IAAI,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC;AAErE,MAAM,mBAAmB,GAAG,CAAC,MAAkB,EAAqB,EAAE;IAClE,IAAI,CAAC,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,MAAoB,EAAU,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAExC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAAU,EAAE;IACxD,IAAI,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAuB,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\n\ntype EditableTarget = Gtk.Editable | Gtk.TextView;\n\nconst EDITABLE_ROLES: Set<Gtk.AccessibleRole> = new Set<Gtk.AccessibleRole>([\n Gtk.AccessibleRole.TEXT_BOX,\n Gtk.AccessibleRole.SEARCH_BOX,\n Gtk.AccessibleRole.SPIN_BUTTON,\n]);\n\nconst isEditable = (widget: unknown): widget is EditableTarget =>\n widget instanceof Gtk.Editable || widget instanceof Gtk.TextView;\n\nconst getEditableDelegate = (widget: Gtk.Widget): Gtk.Widget | null => {\n if (!(widget instanceof Gtk.Editable)) {\n return null;\n }\n\n return widget.getDelegate();\n};\n\nconst readTextViewBufferText = (widget: Gtk.TextView): string => {\n const buffer = widget.getBuffer();\n const [start, end] = buffer.getBounds();\n\n return buffer.getText(start, end, true);\n};\n\nconst readEditableText = (widget: EditableTarget): string => {\n if (widget instanceof Gtk.TextView) {\n return readTextViewBufferText(widget);\n }\n\n return widget.getText();\n};\n\nexport { EDITABLE_ROLES, isEditable, getEditableDelegate, readEditableText, type EditableTarget };\n"]}
|