@matthewp/zebra 0.0.3 → 0.0.4

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/list.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare class List<T = Record<string, unknown>> {
6
6
  private keyFn;
7
7
  private views;
8
8
  private keys;
9
+ private items;
9
10
  private container;
10
11
  constructor(ViewClass: ViewConstructor<T>, keyFn: (item: T) => unknown);
11
12
  template(items?: T[]): SafeHTML;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,eAAe,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5C,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,SAAS,CAA4B;gBAEjC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAKtE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;IAQ/B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;IAczC,OAAO,CAAC,UAAU;IAIlB,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;CAuGlB"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,eAAe,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5C,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAA4B;gBAEjC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAKtE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;IAQ/B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;IAezC,OAAO,CAAC,UAAU;IAIlB,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;CAmIlB"}
package/dist/list.js CHANGED
@@ -4,6 +4,7 @@ export class List {
4
4
  keyFn;
5
5
  views = [];
6
6
  keys = [];
7
+ items = [];
7
8
  container = null;
8
9
  constructor(ViewClass, keyFn) {
9
10
  this.ViewClass = ViewClass;
@@ -27,18 +28,42 @@ export class List {
27
28
  view.update(items[i]);
28
29
  this.views.push(view);
29
30
  this.keys.push(this.keyFn(items[i]));
31
+ this.items.push(items[i]);
30
32
  }
31
33
  }
32
34
  }
33
- updateView(view, item) {
34
- view.update(item);
35
+ updateView(view, newItem, oldItem) {
36
+ if (newItem !== oldItem)
37
+ view.update(newItem);
35
38
  }
36
39
  update(items) {
37
40
  let container = this.container;
38
41
  let oldViews = this.views;
39
42
  let oldKeys = this.keys;
43
+ let oldItems = this.items;
44
+ // Fast path: same length + all keys in same order → pure in-place update
45
+ if (items.length === oldViews.length && items.length > 0) {
46
+ let sameOrder = true;
47
+ let newKeys2 = new Array(items.length);
48
+ for (let i = 0; i < items.length; i++) {
49
+ newKeys2[i] = this.keyFn(items[i]);
50
+ if (newKeys2[i] !== oldKeys[i]) {
51
+ sameOrder = false;
52
+ break;
53
+ }
54
+ }
55
+ if (sameOrder) {
56
+ for (let i = 0; i < items.length; i++) {
57
+ if (items[i] !== oldItems[i])
58
+ oldViews[i].update(items[i]);
59
+ this.items[i] = items[i];
60
+ }
61
+ return;
62
+ }
63
+ }
40
64
  let newKeys = items.map(this.keyFn);
41
65
  let newViews = new Array(items.length).fill(null);
66
+ let newItems = new Array(items.length).fill(null);
42
67
  let oldHead = 0;
43
68
  let oldTail = oldViews.length - 1;
44
69
  let newHead = 0;
@@ -54,21 +79,24 @@ export class List {
54
79
  else if (oldKeys[oldHead] === newKeys[newHead]) {
55
80
  // Head-Head match
56
81
  newViews[newHead] = oldViews[oldHead];
57
- this.updateView(oldViews[oldHead], items[newHead]);
82
+ newItems[newHead] = items[newHead];
83
+ this.updateView(oldViews[oldHead], items[newHead], oldItems[oldHead]);
58
84
  oldHead++;
59
85
  newHead++;
60
86
  }
61
87
  else if (oldKeys[oldTail] === newKeys[newTail]) {
62
88
  // Tail-Tail match
63
89
  newViews[newTail] = oldViews[oldTail];
64
- this.updateView(oldViews[oldTail], items[newTail]);
90
+ newItems[newTail] = items[newTail];
91
+ this.updateView(oldViews[oldTail], items[newTail], oldItems[oldTail]);
65
92
  oldTail--;
66
93
  newTail--;
67
94
  }
68
95
  else if (oldKeys[oldHead] === newKeys[newTail]) {
69
96
  // Head-Tail match: move old head to after old tail
70
97
  newViews[newTail] = oldViews[oldHead];
71
- this.updateView(oldViews[oldHead], items[newTail]);
98
+ newItems[newTail] = items[newTail];
99
+ this.updateView(oldViews[oldHead], items[newTail], oldItems[oldHead]);
72
100
  oldViews[oldTail].el.after(oldViews[oldHead].el);
73
101
  oldHead++;
74
102
  newTail--;
@@ -76,7 +104,8 @@ export class List {
76
104
  else if (oldKeys[oldTail] === newKeys[newHead]) {
77
105
  // Tail-Head match: move old tail to before old head
78
106
  newViews[newHead] = oldViews[oldTail];
79
- this.updateView(oldViews[oldTail], items[newHead]);
107
+ newItems[newHead] = items[newHead];
108
+ this.updateView(oldViews[oldTail], items[newHead], oldItems[oldTail]);
80
109
  oldViews[oldHead].el.before(oldViews[oldTail].el);
81
110
  oldTail--;
82
111
  newHead++;
@@ -97,14 +126,16 @@ export class List {
97
126
  let view = new this.ViewClass();
98
127
  view.createAndMount();
99
128
  newViews[newHead] = view;
129
+ newItems[newHead] = items[newHead];
100
130
  oldViews[oldHead].el.before(view.el);
101
- this.updateView(view, items[newHead]);
131
+ this.updateView(view, items[newHead], null);
102
132
  }
103
133
  else {
104
134
  // Move existing
105
135
  let view = oldViews[oldIndex];
106
- this.updateView(view, items[newHead]);
136
+ this.updateView(view, items[newHead], oldItems[oldIndex]);
107
137
  newViews[newHead] = view;
138
+ newItems[newHead] = items[newHead];
108
139
  oldViews[oldHead].el.before(view.el);
109
140
  oldViews[oldIndex] = null;
110
141
  }
@@ -123,6 +154,7 @@ export class List {
123
154
  let view = new this.ViewClass();
124
155
  view.createAndMount();
125
156
  newViews[newHead] = view;
157
+ newItems[newHead] = items[newHead];
126
158
  let el = view.el;
127
159
  let ref = newViews[newTail + 1]?.el;
128
160
  if (ref) {
@@ -131,11 +163,12 @@ export class List {
131
163
  else {
132
164
  container.append(el);
133
165
  }
134
- this.updateView(view, items[newHead]);
166
+ this.updateView(view, items[newHead], null);
135
167
  newHead++;
136
168
  }
137
169
  this.views = newViews;
138
170
  this.keys = newKeys;
171
+ this.items = newItems;
139
172
  }
140
173
  }
141
174
  //# sourceMappingURL=list.js.map
package/dist/list.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAE3C,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,EAAE,EAAG,WAAW,CAAC;IAEjB,aAAa,IAAI,WAAW;IAO5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ;IAI9B,cAAc,IAAI,IAAI;IAItB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAI5B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW;CAG/B;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC;CACjC;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAEjG"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAE3C,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,EAAE,EAAG,WAAW,CAAC;IAEjB,aAAa,IAAI,WAAW;IAW5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ;IAI9B,cAAc,IAAI,IAAI;IAItB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAI5B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW;CAG/B;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC;CACjC;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAEjG"}
package/dist/view.js CHANGED
@@ -3,9 +3,13 @@ import { html } from "./html.js";
3
3
  export class View {
4
4
  el;
5
5
  createElement() {
6
- let tpl = document.createElement('template');
7
- tpl.innerHTML = this.template().toString();
8
- this.el = document.importNode(tpl.content, true).firstElementChild;
6
+ let ctor = this.constructor;
7
+ if (!ctor._tpl) {
8
+ let tpl = document.createElement('template');
9
+ tpl.innerHTML = this.template().toString();
10
+ ctor._tpl = tpl.content.firstElementChild;
11
+ }
12
+ this.el = ctor._tpl.cloneNode(true);
9
13
  return this.el;
10
14
  }
11
15
  template(_props) {
package/dist/view.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,OAAO,IAAI;IACf,EAAE,CAAe;IAEjB,aAAa;QACX,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,iBAAgC,CAAC;QAClF,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAU;QACjB,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,EAAe;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAS;QACd,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAMD,MAAM,UAAU,IAAI,CAAsB,MAAS,EAAE,GAAG,IAA+B;IACrF,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,OAAO,IAAI;IACf,EAAE,CAAe;IAEjB,aAAa;QACX,IAAI,IAAI,GAAG,IAAI,CAAC,WAAkB,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,GAAI,IAAI,CAAC,IAAoB,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACpE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAU;QACjB,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,EAAe;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAS;QACd,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAMD,MAAM,UAAU,IAAI,CAAsB,MAAS,EAAE,GAAG,IAA+B;IACrF,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matthewp/zebra",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -20,7 +20,9 @@
20
20
  "default": "./dist/server.js"
21
21
  }
22
22
  },
23
- "files": ["dist"],
23
+ "files": [
24
+ "dist"
25
+ ],
24
26
  "scripts": {
25
27
  "build": "tsc"
26
28
  },