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

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.18",
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);
@@ -48,10 +48,10 @@ it("should pass props to specified child", () => {
48
48
  });
49
49
  }}
50
50
  >
51
- <j-bind attrs="href:href" target="#test">
52
- <a>Default</a>
53
- <a id="test">Target</a>
54
- </j-bind>
51
+ <j-bind attrs="href:href" target="#test"></j-bind>
52
+
53
+ <a>Default</a>
54
+ <a id="test">Target</a>
55
55
  </div>
56
56
  `);
57
57
 
@@ -33,26 +33,26 @@ export class JoistBindElement extends HTMLElement {
33
33
  const attrBindings = this.#parseBinding(this.attrs);
34
34
  const propBindings = this.#parseBinding(this.props);
35
35
 
36
- let child = this.firstElementChild;
36
+ let children: Iterable<Element> = this.children;
37
37
 
38
- if (this.target) {
39
- child = this.querySelector(this.target);
40
- }
38
+ const root = this.getRootNode() as Document | ShadowRoot;
41
39
 
42
- if (!child) {
43
- throw new Error("j-bind must have a child element or defined target");
40
+ if (this.target) {
41
+ children = root.querySelectorAll(this.target);
44
42
  }
45
43
 
46
44
  for (const attrValue of attrBindings) {
47
45
  const token = new JAttrToken(attrValue);
48
46
 
49
47
  this.#dispatch(token, (value) => {
50
- if (value === true) {
51
- child.setAttribute(token.mapTo, "");
52
- } else if (value === false) {
53
- child.removeAttribute(token.mapTo);
54
- } else {
55
- child.setAttribute(token.mapTo, String(value));
48
+ for (const child of children) {
49
+ if (value === true) {
50
+ child.setAttribute(token.mapTo, "");
51
+ } else if (value === false) {
52
+ child.removeAttribute(token.mapTo);
53
+ } else {
54
+ child.setAttribute(token.mapTo, String(value));
55
+ }
56
56
  }
57
57
  });
58
58
  }
@@ -61,7 +61,9 @@ export class JoistBindElement extends HTMLElement {
61
61
  const token = new JAttrToken(propValue);
62
62
 
63
63
  this.#dispatch(token, (value) => {
64
- Reflect.set(child, token.mapTo, value);
64
+ for (const child of children) {
65
+ Reflect.set(child, token.mapTo, value);
66
+ }
65
67
  });
66
68
  }
67
69
  }
@@ -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
 
@@ -82,8 +118,6 @@ export class JoistForElement extends HTMLElement {
82
118
  // Updates the DOM by either inserting new scopes or moving existing ones
83
119
  // to their correct positions based on the current iteration order
84
120
  createFromEmpty(): void {
85
- const template = this.#template();
86
- const templateContent = template.content;
87
121
  const keyProperty = this.key;
88
122
  const fragment = document.createDocumentFragment();
89
123
 
@@ -95,13 +129,15 @@ export class JoistForElement extends HTMLElement {
95
129
  key = value[keyProperty];
96
130
  }
97
131
 
98
- const scope = new JForScope();
99
- scope.append(document.importNode(templateContent, true));
100
- scope.key = key;
132
+ const scope = this.#createScopeContainer();
133
+
134
+ scope.host.setAttribute("key", String(key));
101
135
  scope.each = { position: index + 1, index, value };
102
136
 
103
- fragment.appendChild(scope);
104
- this.#scopes.set(key, scope);
137
+ fragment.appendChild(scope.host);
138
+
139
+ this.#scopes.set(String(key), scope);
140
+
105
141
  index++;
106
142
  }
107
143
 
@@ -111,8 +147,7 @@ export class JoistForElement extends HTMLElement {
111
147
  // Updates the DOM by either inserting new scopes or moving existing ones
112
148
  // to their correct positions based on the current iteration order
113
149
  updateItems(): void {
114
- const template = this.#template();
115
- const leftoverScopes = new Map<unknown, JForScope>(this.#scopes);
150
+ const leftoverScopes = new Map<unknown, JoistForScopeContainer>(this.#scopes);
116
151
  const keyProperty = this.key;
117
152
 
118
153
  let index = 0;
@@ -127,23 +162,23 @@ export class JoistForElement extends HTMLElement {
127
162
  let scope = leftoverScopes.get(key);
128
163
 
129
164
  if (!scope) {
130
- scope = new JForScope();
131
- scope.append(document.importNode(template.content, true));
132
- this.#scopes.set(key, scope);
165
+ scope = scope = this.#createScopeContainer();
166
+
167
+ this.#scopes.set(String(key), scope);
133
168
  } else {
134
169
  leftoverScopes.delete(key); // Remove from map to track unused scopes
135
170
  }
136
171
 
137
172
  // Only update if values have changed
138
173
  if (scope.key !== key || scope.each.value !== value) {
139
- scope.key = key;
174
+ scope.host.setAttribute("key", String(key));
140
175
  scope.each = { position: index + 1, index, value };
141
176
  }
142
177
 
143
178
  const child = this.children[index + 1];
144
179
 
145
- if (child !== scope) {
146
- this.insertBefore(scope, child);
180
+ if (child !== scope.host) {
181
+ this.insertBefore(scope.host, child);
147
182
  }
148
183
 
149
184
  index++;
@@ -151,18 +186,31 @@ export class JoistForElement extends HTMLElement {
151
186
 
152
187
  // Remove unused scopes
153
188
  for (const scope of leftoverScopes.values()) {
154
- scope.remove();
189
+ scope.host.remove();
155
190
  }
156
191
  }
157
192
 
158
193
  disconnectedCallback(): void {
159
194
  for (const scope of this.#scopes.values()) {
160
- scope.remove();
195
+ scope.host.remove();
161
196
  }
162
197
 
163
198
  this.#scopes.clear();
164
199
  this.#items = [];
165
200
  }
201
+
202
+ #createScopeContainer() {
203
+ const template = this.#template();
204
+ const content = template.content.firstElementChild;
205
+
206
+ if (content === null) {
207
+ throw new Error("template must contain a single parent element");
208
+ }
209
+
210
+ const fragment = document.importNode(content, true);
211
+
212
+ return new JoistForScopeContainer(fragment);
213
+ }
166
214
  }
167
215
 
168
216
  function isIterable<T = unknown>(obj: any): obj is Iterable<T> {
@@ -1,18 +1,18 @@
1
- import { attr, element, queryAll, css, html } from "@joist/element";
1
+ import { attr, element, queryAll, css } from "@joist/element";
2
2
 
3
3
  import { JoistValueEvent } from "../events.js";
4
4
  import { JExpression } from "../expression.js";
5
5
 
6
6
  @element({
7
7
  // prettier-ignore
8
- shadowDom: [css`:host{display: contents;}`, html`<slot></slot>`],
8
+ shadowDom: [css`:host{display: none;}`],
9
9
  })
10
10
  export class JoistIfElement extends HTMLElement {
11
11
  @attr()
12
12
  accessor bind = "";
13
13
 
14
+ #endMarker = document.createComment("joist::endif");
14
15
  #templates = queryAll<HTMLTemplateElement>("template", this);
15
-
16
16
  #shouldShowIf: boolean | null = null;
17
17
 
18
18
  connectedCallback(): void {
@@ -35,6 +35,8 @@ export class JoistIfElement extends HTMLElement {
35
35
  [templates[0], templates[1]] = [templates[1], templates[0]];
36
36
  }
37
37
 
38
+ this.after(this.#endMarker);
39
+
38
40
  // make sure there are no other nodes after the template
39
41
  this.#clean();
40
42
 
@@ -67,13 +69,13 @@ export class JoistIfElement extends HTMLElement {
67
69
  if (templateToUse) {
68
70
  const content = document.importNode(templateToUse.content, true);
69
71
 
70
- this.appendChild(content);
72
+ this.after(content);
71
73
  }
72
74
  }
73
75
 
74
76
  #clean(): void {
75
- while (!(this.lastChild instanceof HTMLTemplateElement)) {
76
- this.lastChild?.remove();
77
+ while (this.nextSibling !== this.#endMarker) {
78
+ this.nextSibling?.remove();
77
79
  }
78
80
  }
79
81
 
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"}
@@ -54,31 +54,33 @@ let JoistBindElement = (() => {
54
54
  connectedCallback() {
55
55
  const attrBindings = this.#parseBinding(this.attrs);
56
56
  const propBindings = this.#parseBinding(this.props);
57
- let child = this.firstElementChild;
57
+ let children = this.children;
58
+ const root = this.getRootNode();
58
59
  if (this.target) {
59
- child = this.querySelector(this.target);
60
- }
61
- if (!child) {
62
- throw new Error("j-bind must have a child element or defined target");
60
+ children = root.querySelectorAll(this.target);
63
61
  }
64
62
  for (const attrValue of attrBindings) {
65
63
  const token = new JAttrToken(attrValue);
66
64
  this.#dispatch(token, (value) => {
67
- if (value === true) {
68
- child.setAttribute(token.mapTo, "");
69
- }
70
- else if (value === false) {
71
- child.removeAttribute(token.mapTo);
72
- }
73
- else {
74
- child.setAttribute(token.mapTo, String(value));
65
+ for (const child of children) {
66
+ if (value === true) {
67
+ child.setAttribute(token.mapTo, "");
68
+ }
69
+ else if (value === false) {
70
+ child.removeAttribute(token.mapTo);
71
+ }
72
+ else {
73
+ child.setAttribute(token.mapTo, String(value));
74
+ }
75
75
  }
76
76
  });
77
77
  }
78
78
  for (const propValue of propBindings) {
79
79
  const token = new JAttrToken(propValue);
80
80
  this.#dispatch(token, (value) => {
81
- Reflect.set(child, token.mapTo, value);
81
+ for (const child of children) {
82
+ Reflect.set(child, token.mapTo, value);
83
+ }
82
84
  });
83
85
  }
84
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
@@ -40,10 +40,10 @@ it("should pass props to specified child", () => {
40
40
  });
41
41
  }}
42
42
  >
43
- <j-bind attrs="href:href" target="#test">
44
- <a>Default</a>
45
- <a id="test">Target</a>
46
- </j-bind>
43
+ <j-bind attrs="href:href" target="#test"></j-bind>
44
+
45
+ <a>Default</a>
46
+ <a id="test">Target</a>
47
47
  </div>
48
48
  `);
49
49
  const anchor = element.querySelectorAll("a");
@@ -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 });
32
20
  }
21
+ host = __runInitializers(this, _instanceExtraInitializers);
22
+ get key() {
23
+ return this.host.getAttribute("key");
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);
@@ -113,8 +125,6 @@ let JoistForElement = (() => {
113
125
  }));
114
126
  }
115
127
  createFromEmpty() {
116
- const template = this.#template();
117
- const templateContent = template.content;
118
128
  const keyProperty = this.key;
119
129
  const fragment = document.createDocumentFragment();
120
130
  let index = 0;
@@ -123,18 +133,16 @@ let JoistForElement = (() => {
123
133
  if (keyProperty && hasProperty(value, keyProperty)) {
124
134
  key = value[keyProperty];
125
135
  }
126
- const scope = new JForScope();
127
- scope.append(document.importNode(templateContent, true));
128
- scope.key = key;
136
+ const scope = this.#createScopeContainer();
137
+ scope.host.setAttribute("key", String(key));
129
138
  scope.each = { position: index + 1, index, value };
130
- fragment.appendChild(scope);
131
- this.#scopes.set(key, scope);
139
+ fragment.appendChild(scope.host);
140
+ this.#scopes.set(String(key), scope);
132
141
  index++;
133
142
  }
134
143
  this.append(fragment);
135
144
  }
136
145
  updateItems() {
137
- const template = this.#template();
138
146
  const leftoverScopes = new Map(this.#scopes);
139
147
  const keyProperty = this.key;
140
148
  let index = 0;
@@ -145,34 +153,42 @@ let JoistForElement = (() => {
145
153
  }
146
154
  let scope = leftoverScopes.get(key);
147
155
  if (!scope) {
148
- scope = new JForScope();
149
- scope.append(document.importNode(template.content, true));
150
- this.#scopes.set(key, scope);
156
+ scope = scope = this.#createScopeContainer();
157
+ this.#scopes.set(String(key), scope);
151
158
  }
152
159
  else {
153
160
  leftoverScopes.delete(key);
154
161
  }
155
162
  if (scope.key !== key || scope.each.value !== value) {
156
- scope.key = key;
163
+ scope.host.setAttribute("key", String(key));
157
164
  scope.each = { position: index + 1, index, value };
158
165
  }
159
166
  const child = this.children[index + 1];
160
- if (child !== scope) {
161
- this.insertBefore(scope, child);
167
+ if (child !== scope.host) {
168
+ this.insertBefore(scope.host, child);
162
169
  }
163
170
  index++;
164
171
  }
165
172
  for (const scope of leftoverScopes.values()) {
166
- scope.remove();
173
+ scope.host.remove();
167
174
  }
168
175
  }
169
176
  disconnectedCallback() {
170
177
  for (const scope of this.#scopes.values()) {
171
- scope.remove();
178
+ scope.host.remove();
172
179
  }
173
180
  this.#scopes.clear();
174
181
  this.#items = [];
175
182
  }
183
+ #createScopeContainer() {
184
+ const template = this.#template();
185
+ const content = template.content.firstElementChild;
186
+ if (content === null) {
187
+ throw new Error("template must contain a single parent element");
188
+ }
189
+ const fragment = document.importNode(content, true);
190
+ return new JoistForScopeContainer(fragment);
191
+ }
176
192
  };
177
193
  return JoistForElement = _classThis;
178
194
  })();
@@ -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,10 +1,10 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
- import { attr, element, queryAll, css, html } from "@joist/element";
2
+ import { attr, element, queryAll, css } from "@joist/element";
3
3
  import { JoistValueEvent } from "../events.js";
4
4
  import { JExpression } from "../expression.js";
5
5
  let JoistIfElement = (() => {
6
6
  let _classDecorators = [element({
7
- shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
7
+ shadowDom: [css `:host{display: none;}`],
8
8
  })];
9
9
  let _classDescriptor;
10
10
  let _classExtraInitializers = [];
@@ -27,7 +27,8 @@ let JoistIfElement = (() => {
27
27
  #bind_accessor_storage = __runInitializers(this, _bind_initializers, "");
28
28
  get bind() { return this.#bind_accessor_storage; }
29
29
  set bind(value) { this.#bind_accessor_storage = value; }
30
- #templates = (__runInitializers(this, _bind_extraInitializers), queryAll("template", this));
30
+ #endMarker = (__runInitializers(this, _bind_extraInitializers), document.createComment("joist::endif"));
31
+ #templates = queryAll("template", this);
31
32
  #shouldShowIf = null;
32
33
  connectedCallback() {
33
34
  const templates = Array.from(this.#templates());
@@ -43,6 +44,7 @@ let JoistIfElement = (() => {
43
44
  if (templates.length === 2 && templates[0].hasAttribute("else")) {
44
45
  [templates[0], templates[1]] = [templates[1], templates[0]];
45
46
  }
47
+ this.after(this.#endMarker);
46
48
  this.#clean();
47
49
  const token = new JExpression(this.bind);
48
50
  this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue, firstChange }) => {
@@ -62,12 +64,12 @@ let JoistIfElement = (() => {
62
64
  const templateToUse = this.#shouldShowIf ? templates[0] : templates[1];
63
65
  if (templateToUse) {
64
66
  const content = document.importNode(templateToUse.content, true);
65
- this.appendChild(content);
67
+ this.after(content);
66
68
  }
67
69
  }
68
70
  #clean() {
69
- while (!(this.lastChild instanceof HTMLTemplateElement)) {
70
- this.lastChild?.remove();
71
+ while (this.nextSibling !== this.#endMarker) {
72
+ this.nextSibling?.remove();
71
73
  }
72
74
  }
73
75
  disconnectedCallback() {
@@ -1 +1 @@
1
- {"version":3,"file":"if.element.js","sourceRoot":"","sources":["../../../src/lib/elements/if.element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"if.element.js","sourceRoot":"","sources":["../../../src/lib/elements/if.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;IAMlC,cAAc;4BAJ1B,OAAO,CAAC;YAEP,SAAS,EAAE,CAAC,GAAG,CAAA,uBAAuB,CAAC;SACxC,CAAC;;;;sBACkC,WAAW;;;;8BAAnB,SAAQ,WAAW;;;;gCAC5C,IAAI,EAAE;YACP,iKAAS,IAAI,6BAAJ,IAAI,mFAAM;YAFrB,6KA2EC;;;YA3EY,uDAAc;;QAEzB,qEAAgB,EAAE,EAAC;QAAnB,IAAS,IAAI,0CAAM;QAAnB,IAAS,IAAI,gDAAM;QAEnB,UAAU,sDAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,EAAC;QACpD,UAAU,GAAG,QAAQ,CAAsB,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7D,aAAa,GAAmB,IAAI,CAAC;QAErC,iBAAiB;YACf,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAEhD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAEhE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAG5B,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,aAAa,CAChB,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;gBACjE,IAAI,WAAW,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,KAAc,EAAE,UAAmB;YACvC,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEnD,IAAI,YAAY,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAElC,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEvE,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM;YACJ,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,oBAAoB;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;;;;SA1EU,cAAc"}
@@ -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
  }