@joist/templating 4.5.0 → 4.6.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.
- package/package.json +1 -1
- package/src/lib/bind.ts +13 -4
- package/src/lib/elements/async.element.ts +4 -4
- package/src/lib/elements/bind.element.test.ts +2 -2
- package/src/lib/elements/bind.element.ts +4 -2
- package/src/lib/elements/for.element.test.ts +10 -10
- package/src/lib/elements/for.element.ts +5 -3
- package/src/lib/elements/if.element.ts +4 -2
- package/src/lib/events.ts +2 -2
- package/src/lib/expression.ts +4 -3
- package/target/lib/bind.d.ts +6 -1
- package/target/lib/bind.d.ts.map +1 -0
- package/target/lib/bind.js +8 -3
- package/target/lib/bind.js.map +1 -1
- package/target/lib/bind.test.d.ts +1 -0
- package/target/lib/bind.test.d.ts.map +1 -0
- package/target/lib/bind.test.js +35 -1
- package/target/lib/bind.test.js.map +1 -1
- package/target/lib/define.d.ts +1 -0
- package/target/lib/define.d.ts.map +1 -0
- package/target/lib/elements/async.element.d.ts +1 -0
- package/target/lib/elements/async.element.d.ts.map +1 -0
- package/target/lib/elements/async.element.js +37 -2
- package/target/lib/elements/async.element.js.map +1 -1
- package/target/lib/elements/async.element.test.d.ts +1 -0
- package/target/lib/elements/async.element.test.d.ts.map +1 -0
- package/target/lib/elements/async.element.test.js +11 -0
- package/target/lib/elements/async.element.test.js.map +1 -1
- package/target/lib/elements/bind.element.d.ts +1 -0
- package/target/lib/elements/bind.element.d.ts.map +1 -0
- package/target/lib/elements/bind.element.js +39 -3
- package/target/lib/elements/bind.element.js.map +1 -1
- package/target/lib/elements/bind.element.test.d.ts +1 -0
- package/target/lib/elements/bind.element.test.d.ts.map +1 -0
- package/target/lib/elements/bind.element.test.js +3 -0
- package/target/lib/elements/bind.element.test.js.map +1 -1
- package/target/lib/elements/for.element.d.ts +1 -0
- package/target/lib/elements/for.element.d.ts.map +1 -0
- package/target/lib/elements/for.element.js +47 -3
- package/target/lib/elements/for.element.js.map +1 -1
- package/target/lib/elements/for.element.test.d.ts +1 -0
- package/target/lib/elements/for.element.test.d.ts.map +1 -0
- package/target/lib/elements/for.element.test.js +44 -0
- package/target/lib/elements/for.element.test.js.map +1 -1
- package/target/lib/elements/if.element.d.ts +1 -0
- package/target/lib/elements/if.element.d.ts.map +1 -0
- package/target/lib/elements/if.element.js +39 -2
- package/target/lib/elements/if.element.js.map +1 -1
- package/target/lib/elements/if.element.test.d.ts +1 -0
- package/target/lib/elements/if.element.test.d.ts.map +1 -0
- package/target/lib/elements/if.element.test.js +3 -0
- package/target/lib/elements/if.element.test.js.map +1 -1
- package/target/lib/elements/scope.element.d.ts +1 -0
- package/target/lib/elements/scope.element.d.ts.map +1 -0
- package/target/lib/elements/scope.element.js +35 -1
- package/target/lib/elements/scope.element.js.map +1 -1
- package/target/lib/elements/scope.element.test.d.ts +1 -0
- package/target/lib/elements/scope.element.test.d.ts.map +1 -0
- package/target/lib/elements/scope.element.test.js +1 -0
- package/target/lib/elements/scope.element.test.js.map +1 -1
- package/target/lib/elements/value.element.d.ts +1 -0
- package/target/lib/elements/value.element.d.ts.map +1 -0
- package/target/lib/elements/value.element.js +35 -1
- package/target/lib/elements/value.element.js.map +1 -1
- package/target/lib/elements/value.element.test.d.ts +1 -0
- package/target/lib/elements/value.element.test.d.ts.map +1 -0
- package/target/lib/elements/value.element.test.js +3 -0
- package/target/lib/elements/value.element.test.js.map +1 -1
- package/target/lib/events.d.ts +3 -2
- package/target/lib/events.d.ts.map +1 -0
- package/target/lib/expression.d.ts +52 -0
- package/target/lib/expression.d.ts.map +1 -0
- package/target/lib/expression.js +67 -1
- package/target/lib/expression.js.map +1 -1
- package/target/lib/expression.test.d.ts +1 -0
- package/target/lib/expression.test.d.ts.map +1 -0
- package/target/lib.d.ts +1 -0
- package/target/lib.d.ts.map +1 -0
package/package.json
CHANGED
package/src/lib/bind.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { instanceMetadataStore, observe
|
|
1
|
+
import { instanceMetadataStore, observe } from "@joist/observable";
|
|
2
|
+
import type { ObserveOpts } from "@joist/observable";
|
|
2
3
|
|
|
3
4
|
export interface BindOpts<This, Value> extends ObserveOpts<This, Value> {
|
|
4
5
|
/**
|
|
@@ -15,7 +16,7 @@ export function bind<This extends HTMLElement, Value>(opts: BindOpts<This, Value
|
|
|
15
16
|
): ClassAccessorDecoratorResult<This, Value> {
|
|
16
17
|
const internalObserve = observe(opts)(base, ctx);
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
const accessorResult: ClassAccessorDecoratorResult<This, Value> = {
|
|
19
20
|
init(value) {
|
|
20
21
|
this.addEventListener("joist::value", (e) => {
|
|
21
22
|
if (e.expression.bindTo === ctx.name) {
|
|
@@ -57,8 +58,16 @@ export function bind<This extends HTMLElement, Value>(opts: BindOpts<This, Value
|
|
|
57
58
|
|
|
58
59
|
return value;
|
|
59
60
|
},
|
|
60
|
-
get: internalObserve.get,
|
|
61
|
-
set: internalObserve.set,
|
|
62
61
|
};
|
|
62
|
+
|
|
63
|
+
if (internalObserve.get) {
|
|
64
|
+
accessorResult.get = internalObserve.get;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (internalObserve.set) {
|
|
68
|
+
accessorResult.set = internalObserve.set;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return accessorResult;
|
|
63
72
|
};
|
|
64
73
|
}
|
|
@@ -29,9 +29,9 @@ export class JoistAsyncElement extends HTMLElement {
|
|
|
29
29
|
#templates = queryAll<HTMLTemplateElement>("template", this);
|
|
30
30
|
#currentNodes: Node[] = [];
|
|
31
31
|
#cachedTemplates: {
|
|
32
|
-
loading
|
|
33
|
-
error
|
|
34
|
-
success
|
|
32
|
+
loading: HTMLTemplateElement | undefined;
|
|
33
|
+
error: HTMLTemplateElement | undefined;
|
|
34
|
+
success: HTMLTemplateElement | undefined;
|
|
35
35
|
} = {
|
|
36
36
|
loading: undefined,
|
|
37
37
|
error: undefined,
|
|
@@ -95,7 +95,7 @@ export class JoistAsyncElement extends HTMLElement {
|
|
|
95
95
|
#handleState(state: AsyncState): void {
|
|
96
96
|
this.#clean();
|
|
97
97
|
|
|
98
|
-
let template: HTMLTemplateElement | undefined
|
|
98
|
+
let template: HTMLTemplateElement | undefined;
|
|
99
99
|
|
|
100
100
|
this.state = state;
|
|
101
101
|
|
|
@@ -57,8 +57,8 @@ it("should pass props to specified child", () => {
|
|
|
57
57
|
|
|
58
58
|
const anchor = element.querySelectorAll("a");
|
|
59
59
|
|
|
60
|
-
assert.equal(anchor[0]
|
|
61
|
-
assert.equal(anchor[1]
|
|
60
|
+
assert.equal(anchor[0]!.getAttribute("href"), null);
|
|
61
|
+
assert.equal(anchor[1]!.getAttribute("href"), "#foo");
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
it("should be case sensitive", () => {
|
|
@@ -8,10 +8,12 @@ export class JAttrToken extends JExpression {
|
|
|
8
8
|
|
|
9
9
|
constructor(binding: string) {
|
|
10
10
|
const [mapTo, bindTo] = binding.split(":");
|
|
11
|
+
const source = bindTo ?? mapTo ?? "";
|
|
12
|
+
const target = mapTo ?? bindTo ?? "";
|
|
11
13
|
|
|
12
|
-
super(
|
|
14
|
+
super(source);
|
|
13
15
|
|
|
14
|
-
this.mapTo =
|
|
16
|
+
this.mapTo = target;
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
|
|
@@ -33,8 +33,8 @@ it("should iterate over an iterable", () => {
|
|
|
33
33
|
const listItems = element.querySelectorAll("li");
|
|
34
34
|
|
|
35
35
|
assert.equal(listItems.length, 2);
|
|
36
|
-
assert.equal(listItems[0]
|
|
37
|
-
assert.equal(listItems[1]
|
|
36
|
+
assert.equal(listItems[0]!.textContent?.trim(), "Hello");
|
|
37
|
+
assert.equal(listItems[1]!.textContent?.trim(), "World");
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
it("should handle empty arrays", () => {
|
|
@@ -101,8 +101,8 @@ it("should update when items are added or removed", () => {
|
|
|
101
101
|
|
|
102
102
|
const items = element.querySelectorAll("j-val");
|
|
103
103
|
assert.equal(items.length, 2);
|
|
104
|
-
assert.equal(items[0]
|
|
105
|
-
assert.equal(items[1]
|
|
104
|
+
assert.equal(items[0]!.textContent?.trim(), "First");
|
|
105
|
+
assert.equal(items[1]!.textContent?.trim(), "Third");
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
it("should provide index and position information", () => {
|
|
@@ -130,15 +130,15 @@ it("should provide index and position information", () => {
|
|
|
130
130
|
const items = element.querySelectorAll(".item");
|
|
131
131
|
assert.equal(items.length, 3);
|
|
132
132
|
assert.equal(
|
|
133
|
-
items[0]
|
|
133
|
+
items[0]!.textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""),
|
|
134
134
|
"A(index:0,position:1)",
|
|
135
135
|
);
|
|
136
136
|
assert.equal(
|
|
137
|
-
items[1]
|
|
137
|
+
items[1]!.textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""),
|
|
138
138
|
"B(index:1,position:2)",
|
|
139
139
|
);
|
|
140
140
|
assert.equal(
|
|
141
|
-
items[2]
|
|
141
|
+
items[2]!.textContent?.trim().replaceAll("\n", "").replaceAll(" ", ""),
|
|
142
142
|
"C(index:2,position:3)",
|
|
143
143
|
);
|
|
144
144
|
});
|
|
@@ -218,9 +218,9 @@ it("should maintain DOM order when items are reordered", () => {
|
|
|
218
218
|
|
|
219
219
|
const items = element.querySelectorAll("j-val");
|
|
220
220
|
assert.equal(items.length, 3);
|
|
221
|
-
assert.equal(items[0]
|
|
222
|
-
assert.equal(items[1]
|
|
223
|
-
assert.equal(items[2]
|
|
221
|
+
assert.equal(items[0]!.textContent?.trim(), "Third");
|
|
222
|
+
assert.equal(items[1]!.textContent?.trim(), "First");
|
|
223
|
+
assert.equal(items[2]!.textContent?.trim(), "Second");
|
|
224
224
|
});
|
|
225
225
|
|
|
226
226
|
it("should wait for depends-on before dispatching events", async () => {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { attr, element, query, css, html } from "@joist/element";
|
|
2
|
-
import {
|
|
2
|
+
import { effect, observe } from "@joist/observable";
|
|
3
|
+
import type { Change, Changes } from "@joist/observable";
|
|
3
4
|
|
|
4
|
-
import {
|
|
5
|
+
import { JoistValueEvent } from "../events.js";
|
|
6
|
+
import type { BindChange } from "../events.js";
|
|
5
7
|
import { JExpression } from "../expression.js";
|
|
6
8
|
|
|
7
9
|
export interface EachCtx<T> {
|
|
@@ -186,7 +188,7 @@ export class JoistForElement extends HTMLElement {
|
|
|
186
188
|
scope.each = { position: index + 1, index, value };
|
|
187
189
|
}
|
|
188
190
|
|
|
189
|
-
const child = this.children[index + 1];
|
|
191
|
+
const child = this.children[index + 1] ?? null;
|
|
190
192
|
|
|
191
193
|
if (child !== scope.host) {
|
|
192
194
|
this.insertBefore(scope.host, child);
|
|
@@ -38,9 +38,11 @@ export class JoistIfElement extends HTMLElement {
|
|
|
38
38
|
throw new Error("When using two templates, one must have the else attribute");
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
if (templates.length === 2 && templates[0]
|
|
41
|
+
if (templates.length === 2 && templates[0]!.hasAttribute("else")) {
|
|
42
42
|
// Swap templates to ensure if template is first
|
|
43
|
-
|
|
43
|
+
const first = templates[0]!;
|
|
44
|
+
templates[0] = templates[1]!;
|
|
45
|
+
templates[1] = first;
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
const token = new JExpression(this.bind);
|
package/src/lib/events.ts
CHANGED
|
@@ -9,8 +9,8 @@ declare global {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export interface BindChange<T> extends Change<T> {
|
|
12
|
-
alwaysUpdate?: boolean;
|
|
13
|
-
firstChange?: boolean;
|
|
12
|
+
alwaysUpdate?: boolean | undefined;
|
|
13
|
+
firstChange?: boolean | undefined;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export class JoistValueEvent extends Event {
|
package/src/lib/expression.ts
CHANGED
|
@@ -2,8 +2,8 @@ type ComparisonOperator = "==" | "!=" | ">" | "<";
|
|
|
2
2
|
|
|
3
3
|
interface TokenParts {
|
|
4
4
|
path: string[];
|
|
5
|
-
value?: string;
|
|
6
|
-
operator?: ComparisonOperator;
|
|
5
|
+
value?: string | undefined;
|
|
6
|
+
operator?: ComparisonOperator | undefined;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -113,8 +113,9 @@ export class JExpression {
|
|
|
113
113
|
for (const operator of operators) {
|
|
114
114
|
if (this.rawToken.includes(operator)) {
|
|
115
115
|
const [tokenPart, value] = this.rawToken.split(operator).map((part) => part.trim());
|
|
116
|
+
|
|
116
117
|
return {
|
|
117
|
-
path: tokenPart
|
|
118
|
+
path: tokenPart?.split(".") ?? [],
|
|
118
119
|
value,
|
|
119
120
|
operator,
|
|
120
121
|
};
|
package/target/lib/bind.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { ObserveOpts } from "@joist/observable";
|
|
1
|
+
import type { ObserveOpts } from "@joist/observable";
|
|
2
2
|
export interface BindOpts<This, Value> extends ObserveOpts<This, Value> {
|
|
3
|
+
/**
|
|
4
|
+
* Trigger bindings on every change cycle, regardless of value,
|
|
5
|
+
* newValue and oldValue will be the same in that case
|
|
6
|
+
**/
|
|
3
7
|
alwaysUpdate?: boolean;
|
|
4
8
|
}
|
|
5
9
|
export declare function bind<This extends HTMLElement, Value>(opts?: BindOpts<This, Value>): (base: ClassAccessorDecoratorTarget<This, Value>, ctx: ClassAccessorDecoratorContext<This, Value>) => ClassAccessorDecoratorResult<This, Value>;
|
|
10
|
+
//# sourceMappingURL=bind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../../src/lib/bind.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAE,SAAQ,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IACrE;;;QAGI;IACJ,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,IAAI,CAAC,IAAI,SAAS,WAAW,EAAE,KAAK,EAAE,IAAI,GAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAM,IAElF,MAAM,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,EAC/C,KAAK,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,KAC9C,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,CAyD7C"}
|
package/target/lib/bind.js
CHANGED
|
@@ -2,7 +2,7 @@ import { instanceMetadataStore, observe } from "@joist/observable";
|
|
|
2
2
|
export function bind(opts = {}) {
|
|
3
3
|
return function bindDecorator(base, ctx) {
|
|
4
4
|
const internalObserve = observe(opts)(base, ctx);
|
|
5
|
-
|
|
5
|
+
const accessorResult = {
|
|
6
6
|
init(value) {
|
|
7
7
|
this.addEventListener("joist::value", (e) => {
|
|
8
8
|
if (e.expression.bindTo === ctx.name) {
|
|
@@ -37,9 +37,14 @@ export function bind(opts = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
return value;
|
|
39
39
|
},
|
|
40
|
-
get: internalObserve.get,
|
|
41
|
-
set: internalObserve.set,
|
|
42
40
|
};
|
|
41
|
+
if (internalObserve.get) {
|
|
42
|
+
accessorResult.get = internalObserve.get;
|
|
43
|
+
}
|
|
44
|
+
if (internalObserve.set) {
|
|
45
|
+
accessorResult.set = internalObserve.set;
|
|
46
|
+
}
|
|
47
|
+
return accessorResult;
|
|
43
48
|
};
|
|
44
49
|
}
|
|
45
50
|
//# sourceMappingURL=bind.js.map
|
package/target/lib/bind.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../src/lib/bind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../src/lib/bind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAWnE,MAAM,UAAU,IAAI,CAAkC,OAA8B,EAAE;IACpF,OAAO,SAAS,aAAa,CAC3B,IAA+C,EAC/C,GAA+C;QAE/C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEjD,MAAM,cAAc,GAA8C;YAChE,IAAI,CAAC,KAAK;gBACR,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;wBACrC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAO,IAAI,CAAC,CAAC;wBAE5D,CAAC,CAAC,eAAe,EAAE,CAAC;wBAEpB,CAAC,CAAC,MAAM,CAAC;4BACP,QAAQ,EAAE,IAAI;4BACd,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;4BAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,WAAW,EAAE,IAAI;yBAClB,CAAC,CAAC;wBAEH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAkB,CAAC;wBAEpC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;4BACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BAEjC,IAAI,MAAM,EAAE,CAAC;gCACX,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC/E,CAAC;iCAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gCAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gCAEnC,CAAC,CAAC,MAAM,CAAC;oCACP,QAAQ,EAAE,KAAK;oCACf,QAAQ,EAAE,KAAK;oCACf,YAAY,EAAE,IAAI,CAAC,YAAY;oCAC/B,WAAW,EAAE,KAAK;iCACnB,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;oBACzB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAU,CAAC;gBACzD,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;QAEF,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;YACxB,cAAc,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;QAC3C,CAAC;QAED,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;YACxB,cAAc,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;QAC3C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.test.d.ts","sourceRoot":"","sources":["../../src/lib/bind.test.ts"],"names":[],"mappings":""}
|
package/target/lib/bind.test.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
2
35
|
import { assert } from "chai";
|
|
3
36
|
import { bind } from "./bind.js";
|
|
4
37
|
import { JoistValueEvent } from "./events.js";
|
|
@@ -66,6 +99,7 @@ describe("bind decorator", () => {
|
|
|
66
99
|
assert.equal(bindingCount, 1);
|
|
67
100
|
assert.equal(oldValue, null);
|
|
68
101
|
assert.equal(newValue, "initial");
|
|
102
|
+
// Change some other value in the model
|
|
69
103
|
element.value = "something else";
|
|
70
104
|
await Promise.resolve();
|
|
71
105
|
assert.equal(bindingCount, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.test.js","sourceRoot":"","sources":["../../src/lib/bind.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bind.test.js","sourceRoot":"","sources":["../../src/lib/bind.test.ts"],"names":[],"mappings":"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"}
|
package/target/lib/define.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAEA,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;AAEhE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,OAAO,EAAE,eAAe,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;QACvB,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,OAAO,EAAE,iBAAiB,CAAC;QAC3B,SAAS,EAAE,iBAAiB,CAAC;KAC9B;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.element.d.ts","sourceRoot":"","sources":["../../../src/lib/elements/async.element.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI;IACjD,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,qBAIa,iBAAkB,SAAQ,WAAW;;IAEhD,QAAQ,CAAC,IAAI,SAAM;IAKnB,QAAQ,CAAC,SAAS,SAAM;IAGxB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAQ;IAcnC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0FxC,oBAAoB,IAAI,IAAI;CAG7B"}
|
|
@@ -1,10 +1,44 @@
|
|
|
1
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
2
35
|
import { attr, element, queryAll, css, html } from "@joist/element";
|
|
3
36
|
import { bind } from "../bind.js";
|
|
4
37
|
import { JoistValueEvent } from "../events.js";
|
|
5
38
|
import { JExpression } from "../expression.js";
|
|
6
39
|
let JoistAsyncElement = (() => {
|
|
7
40
|
let _classDecorators = [element({
|
|
41
|
+
// prettier-ignore
|
|
8
42
|
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
9
43
|
})];
|
|
10
44
|
let _classDescriptor;
|
|
@@ -55,6 +89,7 @@ let JoistAsyncElement = (() => {
|
|
|
55
89
|
};
|
|
56
90
|
async connectedCallback() {
|
|
57
91
|
this.#clean();
|
|
92
|
+
// Cache all templates
|
|
58
93
|
const templates = Array.from(this.#templates());
|
|
59
94
|
this.#cachedTemplates = {
|
|
60
95
|
loading: templates.find((t) => t.hasAttribute("loading")),
|
|
@@ -97,7 +132,7 @@ let JoistAsyncElement = (() => {
|
|
|
97
132
|
}
|
|
98
133
|
#handleState(state) {
|
|
99
134
|
this.#clean();
|
|
100
|
-
let template
|
|
135
|
+
let template;
|
|
101
136
|
this.state = state;
|
|
102
137
|
switch (state.status) {
|
|
103
138
|
case "loading":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.element.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"async.element.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;IAYlC,iBAAiB;4BAJ7B,OAAO,CAAC;YACP,kBAAkB;YAClB,SAAS,EAAE,CAAC,GAAG,CAAA,2BAA2B,EAAE,IAAI,CAAA,eAAe,CAAC;SACjE,CAAC;;;;sBACqC,WAAW;;;;;;;;;;iCAAnB,SAAQ,WAAW;;;;gCAC/C,IAAI,EAAE;qCAGN,IAAI,CAAC;oBACJ,IAAI,EAAE,YAAY;iBACnB,CAAC;iCAGD,IAAI,EAAE;YAPP,iKAAS,IAAI,6BAAJ,IAAI,mFAAM;YAKnB,gLAAS,SAAS,6BAAT,SAAS,6FAAM;YAGxB,oKAAS,KAAK,6BAAL,KAAK,qFAA2B;YAV3C,6KAqHC;;;YArHY,uDAAiB;;QAE5B,qEAAgB,EAAE,EAAC;QAAnB,IAAS,IAAI,0CAAM;QAAnB,IAAS,IAAI,gDAAM;QAKnB,kIAAqB,EAAE,GAAC;QAAxB,IAAS,SAAS,+CAAM;QAAxB,IAAS,SAAS,qDAAM;QAGxB,+HAAoC,IAAI,GAAC;QAAzC,IAAS,KAAK,2CAA2B;QAAzC,IAAS,KAAK,iDAA2B;QAEzC,UAAU,uDAAG,QAAQ,CAAsB,UAAU,EAAE,IAAI,CAAC,EAAC;QAC7D,aAAa,GAAW,EAAE,CAAC;QAC3B,gBAAgB,GAIZ;YACF,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;SACnB,CAAC;QAEF,KAAK,CAAC,iBAAiB;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,sBAAsB;YACtB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAEhD,IAAI,CAAC,gBAAgB,GAAG;gBACtB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACzD,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACrD,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aAC1D,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC/E,CAAC;YACJ,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,EAAE,EAAE;gBACpD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;wBAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;oBAChC,CAAC;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,KAAc;YAC1B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,IAAI;gBACd,QAAQ,IAAI,KAAK;gBACjB,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CACvF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,OAAyB;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,YAAY,CAAC,KAAiB;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,IAAI,QAAyC,CAAC;YAE9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrB,KAAK,SAAS;oBACZ,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;oBACzC,MAAM;gBAER,KAAK,OAAO;oBACV,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBACvC,MAAM;gBAER,KAAK,SAAS;oBACZ,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;oBACzC,MAAM;YACV,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM;YACJ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,oBAAoB;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;;;;SApHU,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.element.test.d.ts","sourceRoot":"","sources":["../../../src/lib/elements/async.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC"}
|
|
@@ -31,6 +31,7 @@ it("should show success template when promise resolves", async () => {
|
|
|
31
31
|
</j-async>
|
|
32
32
|
</div>
|
|
33
33
|
`);
|
|
34
|
+
// Wait for promise to resolve
|
|
34
35
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
35
36
|
assert.equal(element.textContent?.trim(), "Success!");
|
|
36
37
|
});
|
|
@@ -48,6 +49,7 @@ it("should show error template when promise rejects", async () => {
|
|
|
48
49
|
</j-async>
|
|
49
50
|
</div>
|
|
50
51
|
`);
|
|
52
|
+
// Wait for promise to reject
|
|
51
53
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
52
54
|
assert.equal(element.textContent?.trim(), "Error!");
|
|
53
55
|
});
|
|
@@ -68,7 +70,9 @@ it("should handle state transitions", async () => {
|
|
|
68
70
|
</j-async>
|
|
69
71
|
</div>
|
|
70
72
|
`);
|
|
73
|
+
// Initially should show loading
|
|
71
74
|
assert.equal(element.textContent?.trim(), "Loading...");
|
|
75
|
+
// Wait for promise to resolve
|
|
72
76
|
await new Promise((resolve) => setTimeout(resolve, 150));
|
|
73
77
|
assert.equal(element.textContent?.trim(), "Success!");
|
|
74
78
|
});
|
|
@@ -124,7 +128,9 @@ it("should handle AsyncState transitions", () => {
|
|
|
124
128
|
const element = fixtureSync(html `
|
|
125
129
|
<div
|
|
126
130
|
@joist::value=${(e) => {
|
|
131
|
+
// Initial state
|
|
127
132
|
e.update({ oldValue: null, newValue: { status: "loading" } });
|
|
133
|
+
// Simulate state transition after a short delay
|
|
128
134
|
setTimeout(() => {
|
|
129
135
|
e.update({
|
|
130
136
|
oldValue: { status: "loading" },
|
|
@@ -140,7 +146,9 @@ it("should handle AsyncState transitions", () => {
|
|
|
140
146
|
</j-async>
|
|
141
147
|
</div>
|
|
142
148
|
`);
|
|
149
|
+
// Initially should show loading
|
|
143
150
|
assert.equal(element.textContent?.trim(), "Loading...");
|
|
151
|
+
// Wait for state transition
|
|
144
152
|
return new Promise((resolve) => {
|
|
145
153
|
setTimeout(() => {
|
|
146
154
|
assert.equal(element.textContent?.trim(), "Success!");
|
|
@@ -170,11 +178,14 @@ it("should wait for depends-on before dispatching events", async () => {
|
|
|
170
178
|
</j-async>
|
|
171
179
|
</div>
|
|
172
180
|
`);
|
|
181
|
+
// Initially, no event should be dispatched
|
|
173
182
|
assert.isFalse(eventDispatched);
|
|
183
|
+
// Wait for the custom elements to be defined
|
|
174
184
|
await Promise.all([
|
|
175
185
|
customElements.whenDefined("dependency-1"),
|
|
176
186
|
customElements.whenDefined("dependency-2"),
|
|
177
187
|
]);
|
|
188
|
+
// Now the event should be dispatched
|
|
178
189
|
assert.isTrue(eventDispatched);
|
|
179
190
|
});
|
|
180
191
|
//# sourceMappingURL=async.element.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;;;;;;;;GAQJ,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;;;;;;;;GAQJ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"async.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.element.d.ts","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,UAAW,SAAQ,WAAW;IACzC,KAAK,EAAE,MAAM,CAAC;gBAEF,OAAO,EAAE,MAAM;CAS5B;AAED,qBAIa,gBAAiB,SAAQ,WAAW;;IAE/C,QAAQ,CAAC,KAAK,SAAM;IAGpB,QAAQ,CAAC,KAAK,SAAM;IAGpB,QAAQ,CAAC,MAAM,SAAM;IAKrB,QAAQ,CAAC,SAAS,SAAM;IAElB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CA4FzC"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
2
35
|
import { attr, element, css, html } from "@joist/element";
|
|
3
36
|
import { JExpression } from "../expression.js";
|
|
4
37
|
import { JoistValueEvent } from "../events.js";
|
|
@@ -6,12 +39,15 @@ export class JAttrToken extends JExpression {
|
|
|
6
39
|
mapTo;
|
|
7
40
|
constructor(binding) {
|
|
8
41
|
const [mapTo, bindTo] = binding.split(":");
|
|
9
|
-
|
|
10
|
-
|
|
42
|
+
const source = bindTo ?? mapTo ?? "";
|
|
43
|
+
const target = mapTo ?? bindTo ?? "";
|
|
44
|
+
super(source);
|
|
45
|
+
this.mapTo = target;
|
|
11
46
|
}
|
|
12
47
|
}
|
|
13
48
|
let JoistBindElement = (() => {
|
|
14
49
|
let _classDecorators = [element({
|
|
50
|
+
// prettier-ignore
|
|
15
51
|
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
16
52
|
})];
|
|
17
53
|
let _classDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
|