@kgdiff/viewer 0.4.0 → 0.5.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.
Files changed (84) hide show
  1. package/dist/context.d.ts +42 -0
  2. package/dist/context.d.ts.map +1 -0
  3. package/dist/context.js +87 -0
  4. package/dist/context.js.map +1 -0
  5. package/dist/controller.d.ts +26 -185
  6. package/dist/controller.d.ts.map +1 -1
  7. package/dist/controller.js +45 -1155
  8. package/dist/controller.js.map +1 -1
  9. package/dist/element.d.ts +6 -3
  10. package/dist/element.d.ts.map +1 -1
  11. package/dist/element.js +49 -229
  12. package/dist/element.js.map +1 -1
  13. package/dist/index.d.ts +3 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/pipeline.d.ts.map +1 -1
  17. package/dist/pipeline.js +3 -2
  18. package/dist/pipeline.js.map +1 -1
  19. package/dist/root.d.ts +54 -0
  20. package/dist/root.d.ts.map +1 -0
  21. package/dist/root.js +265 -0
  22. package/dist/root.js.map +1 -0
  23. package/dist/schedule.d.ts +22 -0
  24. package/dist/schedule.d.ts.map +1 -0
  25. package/dist/schedule.js +41 -0
  26. package/dist/schedule.js.map +1 -0
  27. package/dist/session.d.ts +253 -0
  28. package/dist/session.d.ts.map +1 -0
  29. package/dist/session.js +1239 -0
  30. package/dist/session.js.map +1 -0
  31. package/dist/standalone/kgdiff-viewer-compute.js +1 -1
  32. package/dist/standalone/kgdiff-viewer.js +4 -4
  33. package/dist/styles.d.ts +13 -6
  34. package/dist/styles.d.ts.map +1 -1
  35. package/dist/styles.js +217 -248
  36. package/dist/styles.js.map +1 -1
  37. package/dist/theme.d.ts +25 -0
  38. package/dist/theme.d.ts.map +1 -0
  39. package/dist/theme.js +149 -0
  40. package/dist/theme.js.map +1 -0
  41. package/dist/ui/change-list.d.ts +18 -0
  42. package/dist/ui/change-list.d.ts.map +1 -0
  43. package/dist/ui/change-list.js +331 -0
  44. package/dist/ui/change-list.js.map +1 -0
  45. package/dist/ui/context.d.ts +19 -5
  46. package/dist/ui/context.d.ts.map +1 -1
  47. package/dist/ui/context.js.map +1 -1
  48. package/dist/ui/filters.d.ts +9 -0
  49. package/dist/ui/filters.d.ts.map +1 -0
  50. package/dist/ui/filters.js +68 -0
  51. package/dist/ui/filters.js.map +1 -0
  52. package/dist/ui/header.js +2 -2
  53. package/dist/ui/header.js.map +1 -1
  54. package/dist/ui/search.d.ts +13 -0
  55. package/dist/ui/search.d.ts.map +1 -0
  56. package/dist/ui/search.js +191 -0
  57. package/dist/ui/search.js.map +1 -0
  58. package/dist/ui/sidebar.d.ts +8 -16
  59. package/dist/ui/sidebar.d.ts.map +1 -1
  60. package/dist/ui/sidebar.js +15 -539
  61. package/dist/ui/sidebar.js.map +1 -1
  62. package/dist/ui/stage.js +1 -1
  63. package/dist/ui/stage.js.map +1 -1
  64. package/dist/ui/swatch.js +1 -1
  65. package/dist/ui/swatch.js.map +1 -1
  66. package/package.json +6 -6
  67. package/src/context.ts +106 -0
  68. package/src/controller.ts +70 -1257
  69. package/src/element.ts +52 -243
  70. package/src/index.ts +3 -1
  71. package/src/pipeline.ts +4 -1
  72. package/src/root.ts +308 -0
  73. package/src/schedule.ts +43 -0
  74. package/src/session.ts +1386 -0
  75. package/src/styles.ts +225 -253
  76. package/src/theme.ts +167 -0
  77. package/src/ui/change-list.ts +401 -0
  78. package/src/ui/context.ts +21 -5
  79. package/src/ui/filters.ts +79 -0
  80. package/src/ui/header.ts +2 -2
  81. package/src/ui/search.ts +220 -0
  82. package/src/ui/sidebar.ts +28 -668
  83. package/src/ui/stage.ts +1 -1
  84. package/src/ui/swatch.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/ui/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,UAAU,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,WAAW,IAAI,OAAO,CAAC;IACvB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,IAAI,IAAI,CAAC;IACjB,WAAW,IAAI,IAAI,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAiBtE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAOhE;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAQvE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/ui/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,UAAU,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,WAAW,IAAI,OAAO,CAAC;IACvB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,IAAI,IAAI,CAAC;IACjB,uCAAuC;IACvC,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5C,8FAA8F;AAC9F,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,8FAA8F;IAC9F,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACzD,gFAAgF;IAChF,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;CACnC;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAiBtE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAOhE;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAQvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ui/context.ts"],"names":[],"mappings":"AA4BA,uFAAuF;AACvF,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,MAAoB;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,WAAW;YACd,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAY;IACzC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,KAA4B;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAA6B,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ui/context.ts"],"names":[],"mappings":"AA4CA,uFAAuF;AACvF,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,MAAoB;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,WAAW;YACd,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAY;IACzC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,KAA4B;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAA6B,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Topic } from '../session.js';
2
+ import type { UiContext } from './context.js';
3
+ export declare class Filters {
4
+ #private;
5
+ readonly el: HTMLElement;
6
+ constructor(ctx: UiContext);
7
+ update(topics: ReadonlySet<Topic>): void;
8
+ }
9
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/ui/filters.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,qBAAa,OAAO;;IAClB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IAMzB,YAAY,GAAG,EAAE,SAAS,EA4BzB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAIvC;CAyBF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The family filters (RFC 0001 §3, `<kgdiff-filters>` from phase 2): one chip per family the
3
+ * diff has, with its count and the legend's swatch, toggling the session's family filter, and
4
+ * "show all" while a filter is on.
5
+ */
6
+ import { attr, h, setText } from '../dom.js';
7
+ import { familyCounts } from '../list-model.js';
8
+ import { FAMILIES } from '../styles.js';
9
+ import { swatch } from './swatch.js';
10
+ export class Filters {
11
+ el;
12
+ #chips = new Map();
13
+ #showAll;
14
+ #ctx;
15
+ constructor(ctx) {
16
+ this.#ctx = ctx;
17
+ const c = ctx.controller;
18
+ this.el = h('div', { class: 'filters', role: 'group' });
19
+ for (const f of FAMILIES) {
20
+ const chip = h('button', {
21
+ type: 'button',
22
+ class: 'fchip',
23
+ 'data-family': f,
24
+ 'aria-pressed': 'false',
25
+ onclick: () => c.toggleFamily(f),
26
+ }, swatch(f), h('span', { class: 'lbl' }), h('span', { class: 'n' }));
27
+ this.#chips.set(f, chip);
28
+ this.el.appendChild(chip);
29
+ }
30
+ this.#showAll = h('button', {
31
+ type: 'button',
32
+ class: 'link-btn',
33
+ hidden: true,
34
+ onclick: () => c.setFamilies([]),
35
+ });
36
+ this.el.appendChild(this.#showAll);
37
+ }
38
+ update(topics) {
39
+ const all = topics.has('status') || topics.has('data') || topics.has('locale');
40
+ if (all)
41
+ this.#renderChips();
42
+ if (all || topics.has('filters'))
43
+ this.#renderState();
44
+ }
45
+ #renderChips() {
46
+ const tr = this.#ctx.tr();
47
+ const scene = this.#ctx.controller.scene;
48
+ const counts = scene ? familyCounts(scene) : null;
49
+ attr(this.el, 'aria-label', tr.t('sidebar.filters'));
50
+ setText(this.#showAll, tr.t('sidebar.clearFilters'));
51
+ this.el.hidden = !scene || scene.hunks.length === 0;
52
+ for (const [f, chip] of this.#chips) {
53
+ const n = counts ? counts[f] : 0;
54
+ setText(chip.querySelector('.lbl'), tr.t(`family.${f}`));
55
+ setText(chip.querySelector('.n'), tr.num(n));
56
+ chip.hidden = n === 0;
57
+ attr(chip, 'title', tr.t(`familyHint.${f}`));
58
+ }
59
+ }
60
+ #renderState() {
61
+ const fams = this.#ctx.controller.families;
62
+ for (const [f, chip] of this.#chips) {
63
+ attr(chip, 'aria-pressed', String(fams.has(f)));
64
+ }
65
+ this.#showAll.hidden = fams.size === 0;
66
+ }
67
+ }
68
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/ui/filters.ts"],"names":[],"mappings":"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"}
package/dist/ui/header.js CHANGED
@@ -5,8 +5,8 @@ function brandMark() {
5
5
  tpl.innerHTML =
6
6
  '<svg class="brand-mark" viewBox="0 0 20 20" aria-hidden="true" focusable="false">' +
7
7
  '<rect x="4.1" y="4.1" width="11.8" height="11.8" rx="3.2" transform="rotate(45 10 10)" ' +
8
- 'fill="var(--kg-accent-soft)" stroke="var(--kg-accent)" stroke-width="1.5"/>' +
9
- '<circle cx="10" cy="10" r="2.4" fill="var(--kg-accent)"/></svg>';
8
+ 'fill="var(--kgdiff-accent-soft)" stroke="var(--kgdiff-accent)" stroke-width="1.5"/>' +
9
+ '<circle cx="10" cy="10" r="2.4" fill="var(--kgdiff-accent)"/></svg>';
10
10
  return tpl.content.firstElementChild;
11
11
  }
12
12
  export class Header {
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/ui/header.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/ui/header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Topic } from '../session.js';
2
+ import type { UiContext } from './context.js';
3
+ export declare class Search {
4
+ #private;
5
+ /** The search box. */
6
+ readonly box: HTMLElement;
7
+ /** The results listbox. */
8
+ readonly results: HTMLElement;
9
+ readonly input: HTMLInputElement;
10
+ constructor(ctx: UiContext);
11
+ update(topics: ReadonlySet<Topic>): void;
12
+ }
13
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/ui/search.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,qBAAa,MAAM;;IACjB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IASjC,YAAY,GAAG,EAAE,SAAS,EAiCzB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAUvC;CAwIF"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Node search (RFC 0001 §3, `<kgdiff-search>` from phase 2): a combobox and the results list it
3
+ * owns. ID references (`aria-controls`, `aria-activedescendant`) do not cross shadow roots, so
4
+ * input and results stay in one component; the layout decides where the results show (the
5
+ * default layout puts them in the change list's place). The query and its hits live in the
6
+ * session, so the change list steps aside without either knowing the other. Registers itself
7
+ * as the root's `search` focus target (`/`).
8
+ */
9
+ import { attr, h, icon, replace } from '../dom.js';
10
+ export class Search {
11
+ /** The search box. */
12
+ box;
13
+ /** The results listbox. */
14
+ results;
15
+ input;
16
+ #kbd;
17
+ #clear;
18
+ #activeHit = 0;
19
+ /** The query the results were rendered for (a new one starts at its first hit). */
20
+ #rendered = '';
21
+ #ctx;
22
+ constructor(ctx) {
23
+ this.#ctx = ctx;
24
+ this.input = h('input', {
25
+ type: 'search',
26
+ autocomplete: 'off',
27
+ spellcheck: 'false',
28
+ role: 'combobox',
29
+ 'aria-autocomplete': 'list',
30
+ 'aria-expanded': 'false',
31
+ 'aria-controls': 'kg-results',
32
+ enterkeyhint: 'go',
33
+ });
34
+ this.#kbd = h('kbd', { 'aria-hidden': 'true', text: '/' });
35
+ this.#clear = h('button', { type: 'button', class: 'clear', hidden: true, onclick: () => this.#setQuery('', true) }, icon('close'));
36
+ this.input.addEventListener('input', () => this.#setQuery(this.input.value));
37
+ this.input.addEventListener('keydown', (e) => this.#onKey(e));
38
+ this.input.addEventListener('focus', () => this.#renderChrome());
39
+ this.input.addEventListener('blur', () => this.#renderChrome());
40
+ this.results = h('div', {
41
+ class: 'results list scroll',
42
+ id: 'kg-results',
43
+ role: 'listbox',
44
+ hidden: true,
45
+ });
46
+ this.box = h('div', { class: 'search' }, icon('search'), this.input, this.#kbd, this.#clear);
47
+ ctx.target('search', () => {
48
+ this.input.focus();
49
+ this.input.select();
50
+ });
51
+ }
52
+ update(topics) {
53
+ const all = topics.has('status') || topics.has('data') || topics.has('locale');
54
+ if (all) {
55
+ const tr = this.#ctx.tr();
56
+ this.input.placeholder = tr.t('sidebar.searchPlaceholder');
57
+ attr(this.input, 'aria-label', tr.t('sidebar.search'));
58
+ attr(this.#clear, 'aria-label', tr.t('sidebar.searchClear'));
59
+ this.input.disabled = this.#ctx.controller.status !== 'ready';
60
+ }
61
+ if (all || topics.has('search'))
62
+ this.#render();
63
+ }
64
+ #setQuery(query, focus = false) {
65
+ this.#ctx.controller.setQuery(query);
66
+ if (focus)
67
+ this.input.focus();
68
+ }
69
+ #render() {
70
+ const query = this.#ctx.controller.query;
71
+ if (this.input.value !== query)
72
+ this.input.value = query;
73
+ if (query !== this.#rendered)
74
+ this.#activeHit = 0;
75
+ this.#rendered = query;
76
+ const searching = query.trim() !== '';
77
+ this.results.hidden = !searching;
78
+ attr(this.input, 'aria-expanded', String(searching));
79
+ this.#renderChrome();
80
+ if (searching)
81
+ this.#renderResults();
82
+ else
83
+ replace(this.results);
84
+ }
85
+ #renderChrome() {
86
+ const query = this.#ctx.controller.query;
87
+ const focused = this.#ctx.root.activeElement === this.input;
88
+ this.#kbd.hidden = query !== '' || focused;
89
+ this.#clear.hidden = query === '';
90
+ }
91
+ #renderResults() {
92
+ const tr = this.#ctx.tr();
93
+ const c = this.#ctx.controller;
94
+ const q = c.query.trim();
95
+ const hits = c.hits;
96
+ if (hits.length === 0) {
97
+ replace(this.results, h('div', { class: 'list-empty' }, icon('search'), h('span', { text: tr.t('sidebar.noResults', { q }) })));
98
+ attr(this.input, 'aria-activedescendant', null);
99
+ return;
100
+ }
101
+ const scene = c.scene;
102
+ const rows = hits.map((hit, i) => {
103
+ const sceneIndex = scene?.nodeIndex.get(hit.node.id);
104
+ const sn = sceneIndex !== undefined ? scene?.nodes[sceneIndex] : undefined;
105
+ const family = sn?.family ??
106
+ (hit.node.status === 'added'
107
+ ? 'added'
108
+ : hit.node.status === 'removed'
109
+ ? 'removed'
110
+ : hit.node.status === 'modified'
111
+ ? 'content'
112
+ : 'neutral');
113
+ const sub = hit.field === 'label' ? hit.node.id : hit.matched;
114
+ return h('button', {
115
+ type: 'button',
116
+ class: 'result',
117
+ role: 'option',
118
+ id: `kg-hit-${i}`,
119
+ tabindex: '-1',
120
+ 'data-family': family,
121
+ 'aria-selected': String(i === this.#activeHit),
122
+ onclick: () => this.#choose(i),
123
+ onpointermove: () => this.#setActiveHit(i),
124
+ }, h('span', { class: 'sdot', 'aria-hidden': 'true' }), h('span', { class: 'txt' }, h('span', { class: 'title' }, highlight(hit.node.label, hit.field === 'label' ? q : '')), h('span', { class: 'sub' }, highlight(sub, hit.field === 'label' ? '' : q))), h('span', { class: 'status', text: tr.t(`status.${hit.node.status}`) }));
125
+ });
126
+ replace(this.results, h('div', {
127
+ class: 'results-head',
128
+ text: tr.plural('sidebar.results', hits.length),
129
+ }), rows);
130
+ attr(this.input, 'aria-activedescendant', `kg-hit-${this.#activeHit}`);
131
+ }
132
+ #setActiveHit(i) {
133
+ if (i === this.#activeHit || i < 0 || i >= this.#ctx.controller.hits.length)
134
+ return;
135
+ this.#activeHit = i;
136
+ for (const el of this.results.querySelectorAll('.result')) {
137
+ attr(el, 'aria-selected', String(el.id === `kg-hit-${i}`));
138
+ }
139
+ attr(this.input, 'aria-activedescendant', `kg-hit-${i}`);
140
+ this.results.querySelector(`#kg-hit-${i}`)?.scrollIntoView?.({ block: 'nearest' });
141
+ }
142
+ /** Choose a hit: its node is revealed and selected, and focus moves to the change list. */
143
+ #choose(i) {
144
+ const hit = this.#ctx.controller.hits[i];
145
+ if (!hit)
146
+ return;
147
+ this.#setQuery('');
148
+ this.#ctx.controller.revealNode(hit.node.id);
149
+ this.#ctx.focus('list');
150
+ }
151
+ #onKey(e) {
152
+ switch (e.key) {
153
+ case 'ArrowDown':
154
+ e.preventDefault();
155
+ this.#setActiveHit(Math.min(this.#ctx.controller.hits.length - 1, this.#activeHit + 1));
156
+ break;
157
+ case 'ArrowUp':
158
+ e.preventDefault();
159
+ this.#setActiveHit(Math.max(0, this.#activeHit - 1));
160
+ break;
161
+ case 'Enter':
162
+ e.preventDefault();
163
+ this.#choose(this.#activeHit);
164
+ break;
165
+ case 'Escape':
166
+ e.preventDefault();
167
+ e.stopPropagation();
168
+ if (this.#ctx.controller.query)
169
+ this.#setQuery('');
170
+ else
171
+ this.#ctx.focus('list');
172
+ break;
173
+ default:
174
+ return;
175
+ }
176
+ }
177
+ }
178
+ /** The label with the first occurrence of `q` (case-insensitive) marked. */
179
+ function highlight(text, q) {
180
+ if (!q)
181
+ return [text];
182
+ const at = text.toLowerCase().indexOf(q.toLowerCase());
183
+ if (at < 0)
184
+ return [text];
185
+ return [
186
+ text.slice(0, at),
187
+ h('mark', { text: text.slice(at, at + q.length) }),
188
+ text.slice(at + q.length),
189
+ ];
190
+ }
191
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/ui/search.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,16 @@
1
- import type { Topic } from '../controller.js';
2
- import { type UiContext } from './context.js';
3
- import { Detail } from './detail.js';
4
- /** Row slot and group-header heights (px); rows are 52 px tall inside a 56 px slot. */
5
- export declare const ROW_SLOT = 56;
6
- export declare const HEADER_SLOT = 32;
1
+ import type { Topic } from '../session.js';
2
+ import type { ChangeList } from './change-list.js';
3
+ import type { UiActions } from './context.js';
4
+ import type { Detail } from './detail.js';
5
+ import type { Filters } from './filters.js';
6
+ import type { Search } from './search.js';
7
+ export { HEADER_SLOT, ROW_SLOT } from './change-list.js';
7
8
  export declare class Sidebar {
8
9
  #private;
9
10
  readonly el: HTMLElement;
10
- readonly detail: Detail;
11
- readonly searchInput: HTMLInputElement;
12
- readonly list: HTMLElement;
13
- constructor(ctx: UiContext);
11
+ constructor(tr: UiActions['tr'], list: ChangeList, search: Search, filters: Filters, detail: Detail);
14
12
  setOpen(open: boolean): void;
15
13
  update(topics: ReadonlySet<Topic>): void;
16
- /** Move keyboard focus into the list (after choosing a search result). */
17
- focusList(): void;
18
- focusSearch(): void;
19
- /** Esc inside the sidebar: clear the search first. Returns whether it handled the key. */
20
- escape(): boolean;
21
- renderWindow(): void;
22
14
  /** Refresh the separator values (layout changes). */
23
15
  syncSheet(): void;
24
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/ui/sidebar.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,uFAAuF;AACvF,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,WAAW,KAAK,CAAC;AAQ9B,qBAAa,OAAO;;IAClB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAMxB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAMvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAgB3B,YAAY,GAAG,EAAE,SAAS,EAsHzB;IAED,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAG3B;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CA6BvC;IAED,0EAA0E;IAC1E,SAAS,IAAI,IAAI,CAEhB;IAED,WAAW,IAAI,IAAI,CAGlB;IAED,0FAA0F;IAC1F,MAAM,IAAI,OAAO,CAMhB;IAwID,YAAY,IAAI,IAAI,CAqBnB;IA6TD,qDAAqD;IACrD,SAAS,IAAI,IAAI,CAGhB;CAkCF"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/ui/sidebar.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,OAAO;;IAClB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IAIzB,YACE,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,EACnB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAsBf;IAED,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAG3B;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAMvC;IAaD,qDAAqD;IACrD,SAAS,IAAI,IAAI,CAGhB;CAkCF"}