@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.
@@ -1 +1 @@
1
- {"version":3,"file":"typeChoices.d.ts","sourceRoot":"","sources":["../src/typeChoices.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeChoices.d.ts","sourceRoot":"","sources":["../src/typeChoices.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@es-joy/jsoe",
3
- "version": "0.25.0",
3
+ "version": "0.25.1",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./src/index.js",
@@ -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.isConnected) {
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.isConnected) {
700
+ if (!await waitForConnection(sel)) {
676
701
  return;
677
702
  }
678
703
  if (!setValue) { // if (requireObject && !objectHasValue) {