@es-joy/jsoe 0.25.0 → 0.25.1
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/CHANGES.md +4 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/typeChoices.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/typeChoices.js +28 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeChoices.d.ts","sourceRoot":"","sources":["../src/typeChoices.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typeChoices.d.ts","sourceRoot":"","sources":["../src/typeChoices.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/typeChoices.js
CHANGED
|
@@ -6,8 +6,33 @@ import {$e, DOM} from './utils/templateUtils.js';
|
|
|
6
6
|
import {isUnionLike} from './utils/types.js';
|
|
7
7
|
import {getXorBranchMatchInfo, valueMatchesSchema} from './formats/schema.js';
|
|
8
8
|
import dialogs from './utils/dialogs.js';
|
|
9
|
+
import {tick} from './utils/timing.js';
|
|
9
10
|
import deepEqual from 'fast-deep-equal/es6/index.js';
|
|
10
11
|
|
|
12
|
+
/**
|
|
13
|
+
* A deferred `setValue`/auto-select runs a tick after the control is built, but
|
|
14
|
+
* the caller may only connect it to the document on a deferred tick of its own
|
|
15
|
+
* (e.g. `setTimeout(0)` DOM insertion). Wait this many ticks for the connection
|
|
16
|
+
* before giving up, rather than dropping the pre-set value on the first miss.
|
|
17
|
+
*/
|
|
18
|
+
const MAX_CONNECT_WAIT_TICKS = 50;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {HTMLSelectElement} sel
|
|
22
|
+
* @returns {Promise<boolean>} Whether `sel` became connected within the bound.
|
|
23
|
+
*/
|
|
24
|
+
const waitForConnection = async (sel) => {
|
|
25
|
+
for (
|
|
26
|
+
let waited = 0;
|
|
27
|
+
!sel.isConnected && waited < MAX_CONNECT_WAIT_TICKS;
|
|
28
|
+
waited++
|
|
29
|
+
) {
|
|
30
|
+
// eslint-disable-next-line no-await-in-loop -- Sequential by design
|
|
31
|
+
await tick();
|
|
32
|
+
}
|
|
33
|
+
return sel.isConnected;
|
|
34
|
+
};
|
|
35
|
+
|
|
11
36
|
// This is technically just `import('./index.js').SetType`, but our
|
|
12
37
|
// redirect file causes problems, so we redefine here
|
|
13
38
|
/**
|
|
@@ -663,8 +688,8 @@ export const buildTypeChoices = ({
|
|
|
663
688
|
: selectEl;
|
|
664
689
|
|
|
665
690
|
if (autoTrigger && !setValue && typeOptions.length === 1) {
|
|
666
|
-
setTimeout(() => {
|
|
667
|
-
if (!sel
|
|
691
|
+
setTimeout(async () => {
|
|
692
|
+
if (!await waitForConnection(sel)) {
|
|
668
693
|
return;
|
|
669
694
|
}
|
|
670
695
|
sel.selectedIndex = 1;
|
|
@@ -672,7 +697,7 @@ export const buildTypeChoices = ({
|
|
|
672
697
|
}, 0);
|
|
673
698
|
} else if (setValue || (requireObject && !objectHasValue)) {
|
|
674
699
|
setTimeout(async () => {
|
|
675
|
-
if (!sel
|
|
700
|
+
if (!await waitForConnection(sel)) {
|
|
676
701
|
return;
|
|
677
702
|
}
|
|
678
703
|
if (!setValue) { // if (requireObject && !objectHasValue) {
|