@textui/core 0.5.0 → 0.7.0

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":"focus.d.ts","sourceRoot":"","sources":["../../src/core/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAClE,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASzD,8EAA8E;AAC9E,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAAa,KAAM,YAAW,YAAY;IAQ5B,OAAO,CAAC,QAAQ;IAP5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAAuC;IACpD,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAuB;gBAElB,QAAQ,GAAE,MAAM,IAAe;IAOnD,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAQrD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAe/B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgCjC,WAAW,IAAI,MAAM,GAAG,IAAI;IAK5B,qDAAqD;IACrD,OAAO,CAAC,aAAa;IAQrB,6EAA6E;IAC7E,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAM/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IA4C/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAgB1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAa1B,IAAI,IAAI,IAAI;IAQZ,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,KAAK,IAAI,MAAM,EAAE;IAOjB,kEAAkE;IAClE,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjC,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAe9C;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwCvB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgBvC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAiClC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;CAItC;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,KAAK,CAExD"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/core/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAClE,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASzD,8EAA8E;AAC9E,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAAa,KAAM,YAAW,YAAY;IAQ5B,OAAO,CAAC,QAAQ;IAP5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAAuC;IACpD,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAuB;gBAElB,QAAQ,GAAE,MAAM,IAAe;IAOnD,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAQrD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAe/B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgCjC,WAAW,IAAI,MAAM,GAAG,IAAI;IAK5B,qDAAqD;IACrD,OAAO,CAAC,aAAa;IAQrB,6EAA6E;IAC7E,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAM/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IA4C/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAgB1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAa1B,IAAI,IAAI,IAAI;IAQZ,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,KAAK,IAAI,MAAM,EAAE;IAOjB,kEAAkE;IAClE,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAuCjC,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAe9C;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwCvB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgBvC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAiClC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;CAItC;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,KAAK,CAExD"}
@@ -202,12 +202,32 @@ export class Focus {
202
202
  return true;
203
203
  return (n.scopeId ?? GLOBAL_SCOPE) === scope;
204
204
  });
205
- return candidates
206
- .map((n, i) => ({ n, i }))
205
+ // A tree is placed where its first control registered, and its controls
206
+ // by where they sit in it. Registration order alone put a control that
207
+ // mounted late - a field a choice revealed - after everything that was
208
+ // already there, however far up the form it is drawn.
209
+ const firstOf = new Map();
210
+ const entries = candidates.map((n, i) => {
211
+ const place = n.place?.();
212
+ const root = place ? place.root : n;
213
+ if (!firstOf.has(root))
214
+ firstOf.set(root, i);
215
+ return { n, i, root, path: place?.path };
216
+ });
217
+ return entries
207
218
  .sort((a, b) => {
208
219
  const ao = a.n.order ?? Number.MAX_SAFE_INTEGER;
209
220
  const bo = b.n.order ?? Number.MAX_SAFE_INTEGER;
210
- return ao === bo ? a.i - b.i : ao - bo;
221
+ if (ao !== bo)
222
+ return ao - bo;
223
+ if (a.root !== b.root)
224
+ return firstOf.get(a.root) - firstOf.get(b.root);
225
+ if (a.path && b.path) {
226
+ const by = comparePaths(a.path, b.path);
227
+ if (by !== 0)
228
+ return by;
229
+ }
230
+ return a.i - b.i;
211
231
  })
212
232
  .map((e) => e.n.id);
213
233
  }
@@ -345,3 +365,13 @@ export class Focus {
345
365
  export function createFocus(onChange) {
346
366
  return new Focus(onChange);
347
367
  }
368
+ /** Document order of two places in one tree; an ancestor comes first. */
369
+ function comparePaths(a, b) {
370
+ const length = Math.min(a.length, b.length);
371
+ for (let i = 0; i < length; i++) {
372
+ const by = a[i] - b[i];
373
+ if (by !== 0)
374
+ return by;
375
+ }
376
+ return a.length - b.length;
377
+ }
@@ -14,8 +14,11 @@ export declare class I18nRegistry implements I18n {
14
14
  setLocale(locale: LocaleId): void;
15
15
  register(bundle: TranslationBundle): Disposable;
16
16
  locales(): LocaleId[];
17
- /** Missing keys fall through to the fallback locale, then to the key. */
18
- t(key: string, values?: Record<string, unknown>): string;
17
+ /**
18
+ * Missing keys fall through to the base language, then the fallback locale,
19
+ * then `fallback`, then the key.
20
+ */
21
+ t(key: string, values?: Record<string, unknown>, fallback?: string): string;
19
22
  number(value: number, options?: Intl.NumberFormatOptions): string;
20
23
  date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
21
24
  relative(value: number, unit: Intl.RelativeTimeFormatUnit): string;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAsBzD;;;;GAIG;AACH,qBAAa,YAAa,YAAW,IAAI;IAOrC,OAAO,CAAC,cAAc;IANxB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,OAAO,CAAgD;IAC/D,OAAO,CAAC,SAAS,CAAyC;gBAGxD,MAAM,GAAE,QAAe,EACf,cAAc,GAAE,QAAe;IAKzC,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMjC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU;IAS/C,OAAO,IAAI,QAAQ,EAAE;IAIrB,yEAAyE;IACzE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAgBxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM;IAIjE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM;IAIxE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,GAAG,MAAM;IAIlE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM;IAI/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAM5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,UAAU;CAIrD;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAE3E"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAsBzD;;;;GAIG;AACH,qBAAa,YAAa,YAAW,IAAI;IAOrC,OAAO,CAAC,cAAc;IANxB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,OAAO,CAAgD;IAC/D,OAAO,CAAC,SAAS,CAAyC;gBAGxD,MAAM,GAAE,QAAe,EACf,cAAc,GAAE,QAAe;IAKzC,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMjC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU;IAS/C,OAAO,IAAI,QAAQ,EAAE;IAIrB;;;OAGG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAiB3E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM;IAIjE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM;IAIxE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,GAAG,MAAM;IAIlE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM;IAI/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAM5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,UAAU;CAIrD;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAE3E"}
package/dist/core/i18n.js CHANGED
@@ -48,16 +48,20 @@ export class I18nRegistry {
48
48
  locales() {
49
49
  return [...this.bundles.keys()];
50
50
  }
51
- /** Missing keys fall through to the fallback locale, then to the key. */
52
- t(key, values) {
51
+ /**
52
+ * Missing keys fall through to the base language, then the fallback locale,
53
+ * then `fallback`, then the key.
54
+ */
55
+ t(key, values, fallback) {
53
56
  const primary = this.bundles.get(this.locale);
54
57
  const base = this.locale.includes('-')
55
58
  ? this.bundles.get(this.locale.split('-')[0])
56
59
  : undefined;
57
- const fallback = this.bundles.get(this.fallbackLocale);
60
+ const secondary = this.bundles.get(this.fallbackLocale);
58
61
  const template = (primary && lookup(primary, key)) ??
59
62
  (base && lookup(base, key)) ??
60
- (fallback && lookup(fallback, key)) ??
63
+ (secondary && lookup(secondary, key)) ??
64
+ fallback ??
61
65
  key;
62
66
  return values ? interpolate(template, values) : template;
63
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/runtime/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/runtime/hooks.ts"],"names":[],"mappings":"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"}
@@ -431,6 +431,20 @@ export function focusScopeOf(instance) {
431
431
  const found = readContext(instance, FOCUS_SCOPE_CONTEXT);
432
432
  return typeof found === 'string' ? found : undefined;
433
433
  }
434
+ /** Where an instance sits: its root, and its child index at each level. */
435
+ function placeOf(instance) {
436
+ const path = [];
437
+ let cursor = instance;
438
+ while (cursor.parent) {
439
+ const at = cursor.parent.children.indexOf(cursor);
440
+ // Rendered but not yet adopted, or already dropped: no place to answer.
441
+ if (at < 0)
442
+ return undefined;
443
+ path.unshift(at);
444
+ cursor = cursor.parent;
445
+ }
446
+ return { root: cursor, path };
447
+ }
434
448
  export function useFocus(options = {}) {
435
449
  const instance = currentInstance();
436
450
  const runtime = instance.runtime;
@@ -448,6 +462,7 @@ export function useFocus(options = {}) {
448
462
  skipTab: options.skipTab,
449
463
  order: options.order,
450
464
  scopeId,
465
+ place: () => placeOf(instance),
451
466
  onFocus: () => {
452
467
  invalidate(instance, 'focus');
453
468
  options.onFocus?.();
@@ -36,8 +36,17 @@ export interface ArgSpec {
36
36
  type: 'string' | 'number' | 'boolean' | 'unknown';
37
37
  required?: boolean;
38
38
  description?: string;
39
- /** Fixed choices, or a resolver for a picker. */
40
- choices?: ArgChoices | (() => Promise<ArgChoices> | ArgChoices);
39
+ /**
40
+ * Fixed choices, or a resolver for a picker.
41
+ *
42
+ * The resolver is handed the arguments answered before this one, so a
43
+ * second question can depend on the first - the models of the provider
44
+ * just chosen, the branches of the repository just named. An earlier
45
+ * argument that was not asked because its `default` stood is in there under
46
+ * that default. A resolver that takes no parameter is the common case and
47
+ * is unchanged by this.
48
+ */
49
+ choices?: ArgChoices | ((collected: Readonly<Record<string, unknown>>) => Promise<ArgChoices> | ArgChoices);
41
50
  default?: unknown;
42
51
  /**
43
52
  * How the picker should lay out each choice's `description`.
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,17 @@ export interface FocusableOptions {
22
22
  id: string;
23
23
  /** Explicit order within the scope. Unset = document order. */
24
24
  order?: number;
25
+ /**
26
+ * Where the focusable sits in the tree, asked each time the tab order is.
27
+ *
28
+ * `root` is the tree it is in and `path` the child index at each level
29
+ * below it. Left off, or answering `undefined`, the focusable is placed by
30
+ * when it registered.
31
+ */
32
+ place?(): {
33
+ root: unknown;
34
+ path: number[];
35
+ } | undefined;
25
36
  disabled?: boolean;
26
37
  /** Skipped by tab, still reachable by directional navigation and click. */
27
38
  skipTab?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/types/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACtD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAE7B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3D,wDAAwD;IACxD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC;IACzB,+CAA+C;IAC/C,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,gEAAgE;IAChE,KAAK,IAAI,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,gDAAgD;IAChD,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/types/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,KAAK,CAAC,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACtD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAE7B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3D,wDAAwD;IACxD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC;IACzB,+CAA+C;IAC/C,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,gEAAgE;IAChE,KAAK,IAAI,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,gDAAgD;IAChD,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC"}
@@ -10,8 +10,11 @@ export interface I18n {
10
10
  setLocale(locale: LocaleId): void;
11
11
  register(bundle: TranslationBundle): Disposable;
12
12
  locales(): LocaleId[];
13
- /** Missing keys fall back to the fallback locale, then to the key itself. */
14
- t(key: string, values?: Record<string, unknown>): string;
13
+ /**
14
+ * Missing keys fall back to the fallback locale, then to `fallback` (the
15
+ * text a component draws when nobody translated it), then to the key itself.
16
+ */
17
+ t(key: string, values?: Record<string, unknown>, fallback?: string): string;
15
18
  /** Intl-backed; TextUI does not reimplement formatting. */
16
19
  number(value: number, options?: Intl.NumberFormatOptions): string;
17
20
  date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/types/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC;IAChD,OAAO,IAAI,QAAQ,EAAE,CAAC;IACtB,6EAA6E;IAC7E,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IACzD,2DAA2D;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,UAAU,CAAC;CACtD"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/types/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC;IAChD,OAAO,IAAI,QAAQ,EAAE,CAAC;IACtB;;;OAGG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5E,2DAA2D;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,UAAU,CAAC;CACtD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@textui/core",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Graph-mounted terminal UI runtime - store, registries, renderer, host primitives",
5
5
  "keywords": [
6
6
  "terminal",
package/src/core/focus.ts CHANGED
@@ -223,12 +223,29 @@ export class Focus implements FocusManager {
223
223
  return (n.scopeId ?? GLOBAL_SCOPE) === scope;
224
224
  });
225
225
 
226
- return candidates
227
- .map((n, i) => ({ n, i }))
226
+ // A tree is placed where its first control registered, and its controls
227
+ // by where they sit in it. Registration order alone put a control that
228
+ // mounted late - a field a choice revealed - after everything that was
229
+ // already there, however far up the form it is drawn.
230
+ const firstOf = new Map<unknown, number>();
231
+ const entries = candidates.map((n, i) => {
232
+ const place = n.place?.();
233
+ const root = place ? place.root : n;
234
+ if (!firstOf.has(root)) firstOf.set(root, i);
235
+ return { n, i, root, path: place?.path };
236
+ });
237
+
238
+ return entries
228
239
  .sort((a, b) => {
229
240
  const ao = a.n.order ?? Number.MAX_SAFE_INTEGER;
230
241
  const bo = b.n.order ?? Number.MAX_SAFE_INTEGER;
231
- return ao === bo ? a.i - b.i : ao - bo;
242
+ if (ao !== bo) return ao - bo;
243
+ if (a.root !== b.root) return (firstOf.get(a.root) as number) - (firstOf.get(b.root) as number);
244
+ if (a.path && b.path) {
245
+ const by = comparePaths(a.path, b.path);
246
+ if (by !== 0) return by;
247
+ }
248
+ return a.i - b.i;
232
249
  })
233
250
  .map((e) => e.n.id);
234
251
  }
@@ -367,3 +384,13 @@ export class Focus implements FocusManager {
367
384
  export function createFocus(onChange?: () => void): Focus {
368
385
  return new Focus(onChange);
369
386
  }
387
+
388
+ /** Document order of two places in one tree; an ancestor comes first. */
389
+ function comparePaths(a: number[], b: number[]): number {
390
+ const length = Math.min(a.length, b.length);
391
+ for (let i = 0; i < length; i++) {
392
+ const by = (a[i] as number) - (b[i] as number);
393
+ if (by !== 0) return by;
394
+ }
395
+ return a.length - b.length;
396
+ }
package/src/core/i18n.ts CHANGED
@@ -57,18 +57,22 @@ export class I18nRegistry implements I18n {
57
57
  return [...this.bundles.keys()];
58
58
  }
59
59
 
60
- /** Missing keys fall through to the fallback locale, then to the key. */
61
- t(key: string, values?: Record<string, unknown>): string {
60
+ /**
61
+ * Missing keys fall through to the base language, then the fallback locale,
62
+ * then `fallback`, then the key.
63
+ */
64
+ t(key: string, values?: Record<string, unknown>, fallback?: string): string {
62
65
  const primary = this.bundles.get(this.locale);
63
66
  const base = this.locale.includes('-')
64
67
  ? this.bundles.get(this.locale.split('-')[0] as string)
65
68
  : undefined;
66
- const fallback = this.bundles.get(this.fallbackLocale);
69
+ const secondary = this.bundles.get(this.fallbackLocale);
67
70
 
68
71
  const template =
69
72
  (primary && lookup(primary, key)) ??
70
73
  (base && lookup(base, key)) ??
71
- (fallback && lookup(fallback, key)) ??
74
+ (secondary && lookup(secondary, key)) ??
75
+ fallback ??
72
76
  key;
73
77
 
74
78
  return values ? interpolate(template, values) : template;
@@ -556,6 +556,20 @@ export function focusScopeOf(instance: Instance): string | undefined {
556
556
  return typeof found === 'string' ? found : undefined;
557
557
  }
558
558
 
559
+ /** Where an instance sits: its root, and its child index at each level. */
560
+ function placeOf(instance: Instance): { root: unknown; path: number[] } | undefined {
561
+ const path: number[] = [];
562
+ let cursor = instance;
563
+ while (cursor.parent) {
564
+ const at = cursor.parent.children.indexOf(cursor);
565
+ // Rendered but not yet adopted, or already dropped: no place to answer.
566
+ if (at < 0) return undefined;
567
+ path.unshift(at);
568
+ cursor = cursor.parent;
569
+ }
570
+ return { root: cursor, path };
571
+ }
572
+
559
573
  export function useFocus(options: UseFocusOptions = {}): FocusHandle {
560
574
  const instance = currentInstance();
561
575
  const runtime = instance.runtime;
@@ -575,6 +589,7 @@ export function useFocus(options: UseFocusOptions = {}): FocusHandle {
575
589
  skipTab: options.skipTab,
576
590
  order: options.order,
577
591
  scopeId,
592
+ place: () => placeOf(instance),
578
593
  onFocus: () => {
579
594
  invalidate(instance, 'focus');
580
595
  options.onFocus?.();
@@ -40,8 +40,17 @@ export interface ArgSpec {
40
40
  type: 'string' | 'number' | 'boolean' | 'unknown';
41
41
  required?: boolean;
42
42
  description?: string;
43
- /** Fixed choices, or a resolver for a picker. */
44
- choices?: ArgChoices | (() => Promise<ArgChoices> | ArgChoices);
43
+ /**
44
+ * Fixed choices, or a resolver for a picker.
45
+ *
46
+ * The resolver is handed the arguments answered before this one, so a
47
+ * second question can depend on the first - the models of the provider
48
+ * just chosen, the branches of the repository just named. An earlier
49
+ * argument that was not asked because its `default` stood is in there under
50
+ * that default. A resolver that takes no parameter is the common case and
51
+ * is unchanged by this.
52
+ */
53
+ choices?: ArgChoices | ((collected: Readonly<Record<string, unknown>>) => Promise<ArgChoices> | ArgChoices);
45
54
  default?: unknown;
46
55
  /**
47
56
  * How the picker should lay out each choice's `description`.
@@ -25,6 +25,14 @@ export interface FocusableOptions {
25
25
  id: string;
26
26
  /** Explicit order within the scope. Unset = document order. */
27
27
  order?: number;
28
+ /**
29
+ * Where the focusable sits in the tree, asked each time the tab order is.
30
+ *
31
+ * `root` is the tree it is in and `path` the child index at each level
32
+ * below it. Left off, or answering `undefined`, the focusable is placed by
33
+ * when it registered.
34
+ */
35
+ place?(): { root: unknown; path: number[] } | undefined;
28
36
  disabled?: boolean;
29
37
  /** Skipped by tab, still reachable by directional navigation and click. */
30
38
  skipTab?: boolean;
package/src/types/i18n.ts CHANGED
@@ -13,8 +13,11 @@ export interface I18n {
13
13
  setLocale(locale: LocaleId): void;
14
14
  register(bundle: TranslationBundle): Disposable;
15
15
  locales(): LocaleId[];
16
- /** Missing keys fall back to the fallback locale, then to the key itself. */
17
- t(key: string, values?: Record<string, unknown>): string;
16
+ /**
17
+ * Missing keys fall back to the fallback locale, then to `fallback` (the
18
+ * text a component draws when nobody translated it), then to the key itself.
19
+ */
20
+ t(key: string, values?: Record<string, unknown>, fallback?: string): string;
18
21
  /** Intl-backed; TextUI does not reimplement formatting. */
19
22
  number(value: number, options?: Intl.NumberFormatOptions): string;
20
23
  date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;