@joist/templating 4.2.4-next.16 → 4.2.4-next.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joist/templating",
3
- "version": "4.2.4-next.16",
3
+ "version": "4.2.4-next.17",
4
4
  "type": "module",
5
5
  "main": "./target/lib.js",
6
6
  "module": "./target/lib.js",
package/src/lib/define.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { define } from "@joist/element/define.js";
2
2
 
3
3
  import { JoistAsyncElement } from "./elements/async.element.js";
4
- import { JForScope, JoistForElement } from "./elements/for.element.js";
4
+ import { JoistForElement } from "./elements/for.element.js";
5
5
  import { JoistIfElement } from "./elements/if.element.js";
6
6
  import { JoistBindElement } from "./elements/bind.element.js";
7
7
  import { JoistValueElement } from "./elements/value.element.js";
@@ -11,7 +11,6 @@ declare global {
11
11
  interface HTMLElementTagNameMap {
12
12
  "j-async": JoistAsyncElement;
13
13
  "j-for": JoistForElement;
14
- "j-for-scope": JForScope;
15
14
  "j-if": JoistIfElement;
16
15
  "j-bind": JoistBindElement;
17
16
  "j-val": JoistValueElement;
@@ -21,7 +20,6 @@ declare global {
21
20
 
22
21
  define({ tagName: "j-async" }, JoistAsyncElement);
23
22
  define({ tagName: "j-for" }, JoistForElement);
24
- define({ tagName: "j-for-scope", dependsOn: ["j-for"] }, JForScope);
25
23
  define({ tagName: "j-if" }, JoistIfElement);
26
24
  define({ tagName: "j-bind" }, JoistBindElement);
27
25
  define({ tagName: "j-val" }, JoistValueElement);
@@ -117,14 +117,17 @@ it("should provide index and position information", () => {
117
117
  >
118
118
  <j-for bind="items">
119
119
  <template>
120
- <j-val bind="each.value"></j-val>
121
- (index: <j-val bind="each.index"></j-val>, position: <j-val bind="each.position"></j-val>)
120
+ <div class="item">
121
+ <j-val bind="each.value"></j-val>
122
+ (index: <j-val bind="each.index"></j-val>, position:
123
+ <j-val bind="each.position"></j-val>)
124
+ </div>
122
125
  </template>
123
126
  </j-for>
124
127
  </div>
125
128
  `);
126
129
 
127
- const items = element.querySelectorAll("j-for-scope");
130
+ const items = element.querySelectorAll(".item");
128
131
  assert.equal(items.length, 3);
129
132
  assert.equal(
130
133
  items[0].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""),
@@ -170,12 +173,14 @@ it("should provide index and position information", () => {
170
173
  // const groups = element.querySelectorAll(".group");
171
174
  // assert.equal(groups.length, 2);
172
175
 
176
+ // console.log(groups);
177
+
173
178
  // const items = element.querySelectorAll(".child");
174
179
  // assert.equal(items.length, 4);
175
- // assert.equal(items[0].textContent?.trim(), "A");
176
- // assert.equal(items[1].textContent?.trim(), "B");
177
- // assert.equal(items[2].textContent?.trim(), "C");
178
- // assert.equal(items[3].textContent?.trim(), "D");
180
+ // // assert.equal(items[0].textContent?.trim(), "A");
181
+ // // assert.equal(items[1].textContent?.trim(), "B");
182
+ // // assert.equal(items[2].textContent?.trim(), "C");
183
+ // // assert.equal(items[3].textContent?.trim(), "D");
179
184
  // });
180
185
 
181
186
  it("should maintain DOM order when items are reordered", () => {
@@ -1,7 +1,7 @@
1
1
  import { attr, element, query, css, html } from "@joist/element";
2
+ import { Change, Changes, effect, observe } from "@joist/observable";
2
3
 
3
- import { bind } from "../bind.js";
4
- import { JoistValueEvent } from "../events.js";
4
+ import { BindChange, JoistValueEvent } from "../events.js";
5
5
  import { JExpression } from "../expression.js";
6
6
 
7
7
  export interface EachCtx<T> {
@@ -10,20 +10,56 @@ export interface EachCtx<T> {
10
10
  position: number | null;
11
11
  }
12
12
 
13
- @element({
14
- // prettier-ignore
15
- shadowDom: [css`:host{display:contents;}`, html`<slot></slot>`],
16
- })
17
- export class JForScope<T = unknown> extends HTMLElement {
18
- @bind()
13
+ class JoistForScopeContainer<T = unknown> {
14
+ host: Element;
15
+
16
+ get key(): string | null {
17
+ return this.host.getAttribute("key");
18
+ }
19
+
20
+ #callbacks: Array<(val: BindChange<EachCtx<T>>) => void> = [];
21
+
22
+ @observe()
19
23
  accessor each: EachCtx<T> = {
20
24
  value: null,
21
25
  index: null,
22
26
  position: null,
23
27
  };
24
28
 
25
- @attr()
26
- accessor key: unknown;
29
+ constructor(host: Element | null) {
30
+ if (host == null) {
31
+ throw new Error("JForScope required a host element");
32
+ }
33
+
34
+ this.host = host;
35
+
36
+ this.host.addEventListener("joist::value", (e) => {
37
+ if (e.expression.bindTo === "each") {
38
+ e.stopPropagation();
39
+
40
+ this.#callbacks.push(e.update);
41
+
42
+ e.update({
43
+ oldValue: null,
44
+ newValue: this.each,
45
+ firstChange: true,
46
+ });
47
+ }
48
+ });
49
+ }
50
+
51
+ @effect()
52
+ onChange(changes: Changes<this>): void {
53
+ const change = changes.get("each") as Change<EachCtx<T>>;
54
+
55
+ for (let cb of this.#callbacks) {
56
+ cb({
57
+ oldValue: change.oldValue,
58
+ newValue: change.newValue,
59
+ firstChange: false,
60
+ });
61
+ }
62
+ }
27
63
  }
28
64
 
29
65
  @element({
@@ -39,7 +75,7 @@ export class JoistForElement extends HTMLElement {
39
75
 
40
76
  #template = query("template", this);
41
77
  #items: Iterable<unknown> = [];
42
- #scopes = new Map<unknown, JForScope>();
78
+ #scopes = new Map<string, JoistForScopeContainer>();
43
79
 
44
80
  connectedCallback(): void {
45
81
  const template = this.#template();
@@ -50,8 +86,8 @@ export class JoistForElement extends HTMLElement {
50
86
 
51
87
  // collect all scopes from the template to be matched against later
52
88
  let currentScope = template.nextElementSibling;
53
- while (currentScope instanceof JForScope) {
54
- this.#scopes.set(currentScope.key, currentScope);
89
+ while (currentScope instanceof JoistForScopeContainer) {
90
+ this.#scopes.set(String(currentScope.key), currentScope);
55
91
  currentScope = currentScope.nextElementSibling;
56
92
  }
57
93
 
@@ -95,13 +131,14 @@ export class JoistForElement extends HTMLElement {
95
131
  key = value[keyProperty];
96
132
  }
97
133
 
98
- const scope = new JForScope();
99
- scope.append(document.importNode(templateContent, true));
100
- scope.key = key;
134
+ const fragment = document.importNode(templateContent, true);
135
+ const scope = new JoistForScopeContainer(fragment.firstElementChild);
136
+
137
+ scope.host.setAttribute("key", String(key));
101
138
  scope.each = { position: index + 1, index, value };
102
139
 
103
- fragment.appendChild(scope);
104
- this.#scopes.set(key, scope);
140
+ fragment.appendChild(scope.host);
141
+ this.#scopes.set(String(key), scope);
105
142
  index++;
106
143
  }
107
144
 
@@ -112,7 +149,7 @@ export class JoistForElement extends HTMLElement {
112
149
  // to their correct positions based on the current iteration order
113
150
  updateItems(): void {
114
151
  const template = this.#template();
115
- const leftoverScopes = new Map<unknown, JForScope>(this.#scopes);
152
+ const leftoverScopes = new Map<unknown, JoistForScopeContainer>(this.#scopes);
116
153
  const keyProperty = this.key;
117
154
 
118
155
  let index = 0;
@@ -127,23 +164,25 @@ export class JoistForElement extends HTMLElement {
127
164
  let scope = leftoverScopes.get(key);
128
165
 
129
166
  if (!scope) {
130
- scope = new JForScope();
131
- scope.append(document.importNode(template.content, true));
132
- this.#scopes.set(key, scope);
167
+ const fragment = document.importNode(template.content, true);
168
+
169
+ scope = new JoistForScopeContainer(fragment.firstElementChild);
170
+
171
+ this.#scopes.set(String(key), scope);
133
172
  } else {
134
173
  leftoverScopes.delete(key); // Remove from map to track unused scopes
135
174
  }
136
175
 
137
176
  // Only update if values have changed
138
177
  if (scope.key !== key || scope.each.value !== value) {
139
- scope.key = key;
178
+ scope.host.setAttribute("key", String(key));
140
179
  scope.each = { position: index + 1, index, value };
141
180
  }
142
181
 
143
182
  const child = this.children[index + 1];
144
183
 
145
- if (child !== scope) {
146
- this.insertBefore(scope, child);
184
+ if (child !== scope.host) {
185
+ this.insertBefore(scope.host, child);
147
186
  }
148
187
 
149
188
  index++;
@@ -151,13 +190,13 @@ export class JoistForElement extends HTMLElement {
151
190
 
152
191
  // Remove unused scopes
153
192
  for (const scope of leftoverScopes.values()) {
154
- scope.remove();
193
+ scope.host.remove();
155
194
  }
156
195
  }
157
196
 
158
197
  disconnectedCallback(): void {
159
198
  for (const scope of this.#scopes.values()) {
160
- scope.remove();
199
+ scope.host.remove();
161
200
  }
162
201
 
163
202
  this.#scopes.clear();
package/src/lib/events.ts CHANGED
@@ -3,7 +3,7 @@ import type { Change } from "@joist/observable";
3
3
  import type { JExpression } from "./expression.js";
4
4
 
5
5
  declare global {
6
- interface HTMLElementEventMap {
6
+ interface ElementEventMap {
7
7
  "joist::value": JoistValueEvent;
8
8
  }
9
9
  }
@@ -1,5 +1,5 @@
1
1
  import { JoistAsyncElement } from "./elements/async.element.js";
2
- import { JForScope, JoistForElement } from "./elements/for.element.js";
2
+ import { JoistForElement } from "./elements/for.element.js";
3
3
  import { JoistIfElement } from "./elements/if.element.js";
4
4
  import { JoistBindElement } from "./elements/bind.element.js";
5
5
  import { JoistValueElement } from "./elements/value.element.js";
@@ -8,7 +8,6 @@ declare global {
8
8
  interface HTMLElementTagNameMap {
9
9
  "j-async": JoistAsyncElement;
10
10
  "j-for": JoistForElement;
11
- "j-for-scope": JForScope;
12
11
  "j-if": JoistIfElement;
13
12
  "j-bind": JoistBindElement;
14
13
  "j-val": JoistValueElement;
@@ -1,13 +1,12 @@
1
1
  import { define } from "@joist/element/define.js";
2
2
  import { JoistAsyncElement } from "./elements/async.element.js";
3
- import { JForScope, JoistForElement } from "./elements/for.element.js";
3
+ import { JoistForElement } from "./elements/for.element.js";
4
4
  import { JoistIfElement } from "./elements/if.element.js";
5
5
  import { JoistBindElement } from "./elements/bind.element.js";
6
6
  import { JoistValueElement } from "./elements/value.element.js";
7
7
  import { JoistScopeElement } from "./elements/scope.element.js";
8
8
  define({ tagName: "j-async" }, JoistAsyncElement);
9
9
  define({ tagName: "j-for" }, JoistForElement);
10
- define({ tagName: "j-for-scope", dependsOn: ["j-for"] }, JForScope);
11
10
  define({ tagName: "j-if" }, JoistIfElement);
12
11
  define({ tagName: "j-bind" }, JoistBindElement);
13
12
  define({ tagName: "j-val" }, JoistValueElement);
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAchE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAClD,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9C,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACpE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAC5C,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAChD,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAChD,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAahE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAClD,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9C,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAC5C,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAChD,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAChD,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC"}
@@ -3,10 +3,6 @@ export interface EachCtx<T> {
3
3
  index: number | null;
4
4
  position: number | null;
5
5
  }
6
- export declare class JForScope<T = unknown> extends HTMLElement {
7
- accessor each: EachCtx<T>;
8
- accessor key: unknown;
9
- }
10
6
  export declare class JoistForElement extends HTMLElement {
11
7
  #private;
12
8
  accessor bind: string;
@@ -1,35 +1,28 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { attr, element, query, css, html } from "@joist/element";
3
- import { bind } from "../bind.js";
3
+ import { effect, observe } from "@joist/observable";
4
4
  import { JoistValueEvent } from "../events.js";
5
5
  import { JExpression } from "../expression.js";
6
- let JForScope = (() => {
7
- let _classDecorators = [element({
8
- shadowDom: [css `:host{display:contents;}`, html `<slot></slot>`],
9
- })];
10
- let _classDescriptor;
11
- let _classExtraInitializers = [];
12
- let _classThis;
13
- let _classSuper = HTMLElement;
6
+ let JoistForScopeContainer = (() => {
7
+ let _instanceExtraInitializers = [];
14
8
  let _each_decorators;
15
9
  let _each_initializers = [];
16
10
  let _each_extraInitializers = [];
17
- let _key_decorators;
18
- let _key_initializers = [];
19
- let _key_extraInitializers = [];
20
- var JForScope = class extends _classSuper {
21
- static { _classThis = this; }
11
+ let _onChange_decorators;
12
+ return class JoistForScopeContainer {
22
13
  static {
23
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
24
- _each_decorators = [bind()];
25
- _key_decorators = [attr()];
14
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
15
+ _each_decorators = [observe()];
16
+ _onChange_decorators = [effect()];
26
17
  __esDecorate(this, null, _each_decorators, { kind: "accessor", name: "each", static: false, private: false, access: { has: obj => "each" in obj, get: obj => obj.each, set: (obj, value) => { obj.each = value; } }, metadata: _metadata }, _each_initializers, _each_extraInitializers);
27
- __esDecorate(this, null, _key_decorators, { kind: "accessor", name: "key", static: false, private: false, access: { has: obj => "key" in obj, get: obj => obj.key, set: (obj, value) => { obj.key = value; } }, metadata: _metadata }, _key_initializers, _key_extraInitializers);
28
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
29
- JForScope = _classThis = _classDescriptor.value;
30
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
31
- __runInitializers(_classThis, _classExtraInitializers);
18
+ __esDecorate(this, null, _onChange_decorators, { kind: "method", name: "onChange", static: false, private: false, access: { has: obj => "onChange" in obj, get: obj => obj.onChange }, metadata: _metadata }, null, _instanceExtraInitializers);
19
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
20
+ }
21
+ host = __runInitializers(this, _instanceExtraInitializers);
22
+ get key() {
23
+ return this.host.getAttribute("key");
32
24
  }
25
+ #callbacks = [];
33
26
  #each_accessor_storage = __runInitializers(this, _each_initializers, {
34
27
  value: null,
35
28
  index: null,
@@ -37,17 +30,36 @@ let JForScope = (() => {
37
30
  });
38
31
  get each() { return this.#each_accessor_storage; }
39
32
  set each(value) { this.#each_accessor_storage = value; }
40
- #key_accessor_storage = (__runInitializers(this, _each_extraInitializers), __runInitializers(this, _key_initializers, void 0));
41
- get key() { return this.#key_accessor_storage; }
42
- set key(value) { this.#key_accessor_storage = value; }
43
- constructor() {
44
- super(...arguments);
45
- __runInitializers(this, _key_extraInitializers);
33
+ constructor(host) {
34
+ __runInitializers(this, _each_extraInitializers);
35
+ if (host == null) {
36
+ throw new Error("JForScope required a host element");
37
+ }
38
+ this.host = host;
39
+ this.host.addEventListener("joist::value", (e) => {
40
+ if (e.expression.bindTo === "each") {
41
+ e.stopPropagation();
42
+ this.#callbacks.push(e.update);
43
+ e.update({
44
+ oldValue: null,
45
+ newValue: this.each,
46
+ firstChange: true,
47
+ });
48
+ }
49
+ });
50
+ }
51
+ onChange(changes) {
52
+ const change = changes.get("each");
53
+ for (let cb of this.#callbacks) {
54
+ cb({
55
+ oldValue: change.oldValue,
56
+ newValue: change.newValue,
57
+ firstChange: false,
58
+ });
59
+ }
46
60
  }
47
61
  };
48
- return JForScope = _classThis;
49
62
  })();
50
- export { JForScope };
51
63
  let JoistForElement = (() => {
52
64
  let _classDecorators = [element({
53
65
  shadowDom: [css `:host{display:contents;}`, html `<slot></slot>`],
@@ -90,8 +102,8 @@ let JoistForElement = (() => {
90
102
  throw new Error("The first Node in j-for needs to be a template");
91
103
  }
92
104
  let currentScope = template.nextElementSibling;
93
- while (currentScope instanceof JForScope) {
94
- this.#scopes.set(currentScope.key, currentScope);
105
+ while (currentScope instanceof JoistForScopeContainer) {
106
+ this.#scopes.set(String(currentScope.key), currentScope);
95
107
  currentScope = currentScope.nextElementSibling;
96
108
  }
97
109
  const token = new JExpression(this.bind);
@@ -123,12 +135,12 @@ let JoistForElement = (() => {
123
135
  if (keyProperty && hasProperty(value, keyProperty)) {
124
136
  key = value[keyProperty];
125
137
  }
126
- const scope = new JForScope();
127
- scope.append(document.importNode(templateContent, true));
128
- scope.key = key;
138
+ const fragment = document.importNode(templateContent, true);
139
+ const scope = new JoistForScopeContainer(fragment.firstElementChild);
140
+ scope.host.setAttribute("key", String(key));
129
141
  scope.each = { position: index + 1, index, value };
130
- fragment.appendChild(scope);
131
- this.#scopes.set(key, scope);
142
+ fragment.appendChild(scope.host);
143
+ this.#scopes.set(String(key), scope);
132
144
  index++;
133
145
  }
134
146
  this.append(fragment);
@@ -145,30 +157,30 @@ let JoistForElement = (() => {
145
157
  }
146
158
  let scope = leftoverScopes.get(key);
147
159
  if (!scope) {
148
- scope = new JForScope();
149
- scope.append(document.importNode(template.content, true));
150
- this.#scopes.set(key, scope);
160
+ const fragment = document.importNode(template.content, true);
161
+ scope = new JoistForScopeContainer(fragment.firstElementChild);
162
+ this.#scopes.set(String(key), scope);
151
163
  }
152
164
  else {
153
165
  leftoverScopes.delete(key);
154
166
  }
155
167
  if (scope.key !== key || scope.each.value !== value) {
156
- scope.key = key;
168
+ scope.host.setAttribute("key", String(key));
157
169
  scope.each = { position: index + 1, index, value };
158
170
  }
159
171
  const child = this.children[index + 1];
160
- if (child !== scope) {
161
- this.insertBefore(scope, child);
172
+ if (child !== scope.host) {
173
+ this.insertBefore(scope.host, child);
162
174
  }
163
175
  index++;
164
176
  }
165
177
  for (const scope of leftoverScopes.values()) {
166
- scope.remove();
178
+ scope.host.remove();
167
179
  }
168
180
  }
169
181
  disconnectedCallback() {
170
182
  for (const scope of this.#scopes.values()) {
171
- scope.remove();
183
+ scope.host.remove();
172
184
  }
173
185
  this.#scopes.clear();
174
186
  this.#items = [];
@@ -1 +1 @@
1
- {"version":3,"file":"for.element.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"for.element.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.ts"],"names":[],"mappings":"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"}
@@ -101,13 +101,16 @@ it("should provide index and position information", () => {
101
101
  >
102
102
  <j-for bind="items">
103
103
  <template>
104
- <j-val bind="each.value"></j-val>
105
- (index: <j-val bind="each.index"></j-val>, position: <j-val bind="each.position"></j-val>)
104
+ <div class="item">
105
+ <j-val bind="each.value"></j-val>
106
+ (index: <j-val bind="each.index"></j-val>, position:
107
+ <j-val bind="each.position"></j-val>)
108
+ </div>
106
109
  </template>
107
110
  </j-for>
108
111
  </div>
109
112
  `);
110
- const items = element.querySelectorAll("j-for-scope");
113
+ const items = element.querySelectorAll(".item");
111
114
  assert.equal(items.length, 3);
112
115
  assert.equal(items[0].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""), "A(index:0,position:1)");
113
116
  assert.equal(items[1].textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""), "B(index:1,position:2)");
@@ -1 +1 @@
1
- {"version":3,"file":"for.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"for.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/for.element.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Change } from "@joist/observable";
2
2
  import type { JExpression } from "./expression.js";
3
3
  declare global {
4
- interface HTMLElementEventMap {
4
+ interface ElementEventMap {
5
5
  "joist::value": JoistValueEvent;
6
6
  }
7
7
  }