@joist/templating 4.2.4-next.1 → 4.2.4-next.10
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/README.md +43 -164
- package/package.json +1 -1
- package/src/lib/bind.test.ts +72 -0
- package/src/lib/bind.ts +32 -9
- package/src/lib/define.ts +1 -0
- package/src/lib/elements/async.element.test.ts +90 -0
- package/src/lib/elements/async.element.ts +13 -2
- package/src/lib/elements/bind.element.test.ts +2 -2
- package/src/lib/elements/bind.element.ts +13 -12
- package/src/lib/elements/for.element.ts +16 -9
- package/src/lib/elements/if.element.test.ts +210 -0
- package/src/lib/elements/if.element.ts +16 -11
- package/src/lib/elements/scope.element.test.ts +32 -0
- package/src/lib/elements/scope.element.ts +19 -0
- package/src/lib/elements/value.element.test.ts +28 -0
- package/src/lib/elements/value.element.ts +9 -11
- package/src/lib/events.ts +10 -5
- package/src/lib/expression.test.ts +204 -0
- package/src/lib/expression.ts +179 -0
- package/target/lib/bind.d.ts +5 -1
- package/target/lib/bind.js +22 -8
- package/target/lib/bind.js.map +1 -1
- package/target/lib/bind.test.js +76 -0
- package/target/lib/bind.test.js.map +1 -0
- package/target/lib/define.d.ts +1 -0
- package/target/lib/define.js +1 -0
- package/target/lib/define.js.map +1 -1
- package/target/lib/elements/async.element.js +11 -2
- package/target/lib/elements/async.element.js.map +1 -1
- package/target/lib/elements/async.element.test.js +76 -0
- package/target/lib/elements/async.element.test.js.map +1 -1
- package/target/lib/elements/bind.element.d.ts +8 -3
- package/target/lib/elements/bind.element.js +10 -13
- package/target/lib/elements/bind.element.js.map +1 -1
- package/target/lib/elements/bind.element.test.js +2 -2
- package/target/lib/elements/bind.element.test.js.map +1 -1
- package/target/lib/elements/for.element.d.ts +1 -1
- package/target/lib/elements/for.element.js +13 -7
- package/target/lib/elements/for.element.js.map +1 -1
- package/target/lib/elements/if.element.js +12 -12
- package/target/lib/elements/if.element.js.map +1 -1
- package/target/lib/elements/if.element.test.js +184 -0
- package/target/lib/elements/if.element.test.js.map +1 -1
- package/target/lib/elements/scope.element.d.ts +8 -0
- package/target/lib/elements/scope.element.js +38 -0
- package/target/lib/elements/scope.element.js.map +1 -0
- package/target/lib/elements/scope.element.test.d.ts +2 -0
- package/target/lib/elements/scope.element.test.js +25 -0
- package/target/lib/elements/scope.element.test.js.map +1 -0
- package/target/lib/elements/value.element.js +7 -11
- package/target/lib/elements/value.element.js.map +1 -1
- package/target/lib/elements/value.element.test.js +24 -0
- package/target/lib/elements/value.element.test.js.map +1 -1
- package/target/lib/events.d.ts +8 -4
- package/target/lib/events.js +3 -3
- package/target/lib/events.js.map +1 -1
- package/target/lib/expression.d.ts +13 -0
- package/target/lib/expression.js +87 -0
- package/target/lib/expression.js.map +1 -0
- package/target/lib/expression.test.d.ts +1 -0
- package/target/lib/expression.test.js +171 -0
- package/target/lib/expression.test.js.map +1 -0
- package/src/lib/elements/scope.ts +0 -39
- package/src/lib/token.test.ts +0 -74
- package/src/lib/token.ts +0 -34
- package/target/lib/elements/scope.d.ts +0 -13
- package/target/lib/elements/scope.js +0 -56
- package/target/lib/elements/scope.js.map +0 -1
- package/target/lib/token.d.ts +0 -8
- package/target/lib/token.js +0 -27
- package/target/lib/token.js.map +0 -1
- package/target/lib/token.test.js +0 -56
- package/target/lib/token.test.js.map +0 -1
- /package/target/lib/{token.test.d.ts → bind.test.d.ts} +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
type ComparisonOperator = "==" | "!=" | ">" | "<";
|
|
2
|
+
|
|
3
|
+
interface TokenParts {
|
|
4
|
+
path: string[];
|
|
5
|
+
value?: string;
|
|
6
|
+
operator?: ComparisonOperator;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* JExpression represents a token that can be used to extract and compare values from objects.
|
|
11
|
+
*
|
|
12
|
+
* Supported operators:
|
|
13
|
+
* - `==` : Equality comparison (e.g., "status==active")
|
|
14
|
+
* - `!=` : Inequality comparison (e.g., "status!=active")
|
|
15
|
+
* - `>` : Greater than comparison (e.g., "count>5")
|
|
16
|
+
* - `<` : Less than comparison (e.g., "count<10")
|
|
17
|
+
*
|
|
18
|
+
* Examples:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Basic path access
|
|
21
|
+
* new JExpression("user.name").readTokenValueFrom({ user: { name: "John" } }) // "John"
|
|
22
|
+
*
|
|
23
|
+
* // Equality comparison
|
|
24
|
+
* new JExpression("status == active").readTokenValueFrom({ status: "active" }) // true
|
|
25
|
+
*
|
|
26
|
+
* // Inequality comparison
|
|
27
|
+
* new JExpression("status != active").readTokenValueFrom({ status: "inactive" }) // true
|
|
28
|
+
*
|
|
29
|
+
* // Greater than comparison
|
|
30
|
+
* new JExpression("count > 5").readTokenValueFrom({ count: 10 }) // true
|
|
31
|
+
*
|
|
32
|
+
* // Less than comparison
|
|
33
|
+
* new JExpression("count < 10").readTokenValueFrom({ count: 5 }) // true
|
|
34
|
+
*
|
|
35
|
+
* // With negation
|
|
36
|
+
* new JExpression("!status == active").readTokenValueFrom({ status: "inactive" }) // true
|
|
37
|
+
*
|
|
38
|
+
* // Nested paths
|
|
39
|
+
* new JExpression("user.score > 100").readTokenValueFrom({ user: { score: 150 } }) // true
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export class JExpression {
|
|
43
|
+
/** The raw token string as provided to the constructor */
|
|
44
|
+
rawToken: string;
|
|
45
|
+
/** Whether the token is negated (starts with '!') */
|
|
46
|
+
isNegated = false;
|
|
47
|
+
/** The first part of the path (before the first dot) */
|
|
48
|
+
bindTo: string;
|
|
49
|
+
/** The remaining parts of the path (after the first dot) */
|
|
50
|
+
path: string[] = [];
|
|
51
|
+
/** The value to compare against for equality (==) */
|
|
52
|
+
equalsValue: string | undefined;
|
|
53
|
+
/** The value to compare against for inequality (!=) */
|
|
54
|
+
notEqualsValue: string | undefined;
|
|
55
|
+
/** The value to compare against for greater than (>) */
|
|
56
|
+
gtValue: string | undefined;
|
|
57
|
+
/** The value to compare against for less than (<) */
|
|
58
|
+
ltValue: string | undefined;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new JExpression instance.
|
|
62
|
+
* @param rawToken - The token string to parse. Can include operators (==, !=, >, <) and negation (!)
|
|
63
|
+
*/
|
|
64
|
+
constructor(rawToken: string) {
|
|
65
|
+
this.rawToken = rawToken;
|
|
66
|
+
this.isNegated = this.rawToken.startsWith("!");
|
|
67
|
+
|
|
68
|
+
const { path, value, operator } = this.#parseToken();
|
|
69
|
+
this.path = path;
|
|
70
|
+
this.bindTo = this.path.shift() ?? "";
|
|
71
|
+
this.bindTo = this.bindTo.replaceAll("!", "");
|
|
72
|
+
|
|
73
|
+
// Set the appropriate comparison value based on the operator
|
|
74
|
+
switch (operator) {
|
|
75
|
+
case "==":
|
|
76
|
+
this.equalsValue = value;
|
|
77
|
+
break;
|
|
78
|
+
case "!=":
|
|
79
|
+
this.notEqualsValue = value;
|
|
80
|
+
break;
|
|
81
|
+
case ">":
|
|
82
|
+
this.gtValue = value;
|
|
83
|
+
break;
|
|
84
|
+
case "<":
|
|
85
|
+
this.ltValue = value;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Reads a value from the provided object using the token's path and performs any comparison.
|
|
92
|
+
* @param value - The object to read from
|
|
93
|
+
* @returns The value at the path, or the result of the comparison if an operator is present
|
|
94
|
+
* @template T - The expected return type
|
|
95
|
+
*/
|
|
96
|
+
evaluate<T = unknown>(value: unknown): T {
|
|
97
|
+
if (typeof value !== "object" && typeof value !== "string") {
|
|
98
|
+
return value as T;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const pathValue = this.#getValueAtPath(value);
|
|
102
|
+
|
|
103
|
+
return this.#performComparison(pathValue) as T;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Parses the raw token into its components.
|
|
108
|
+
* @returns An object containing the path parts and any comparison operator/value
|
|
109
|
+
*/
|
|
110
|
+
#parseToken(): TokenParts {
|
|
111
|
+
const operators: ComparisonOperator[] = ["==", "!=", ">", "<"];
|
|
112
|
+
|
|
113
|
+
for (const operator of operators) {
|
|
114
|
+
if (this.rawToken.includes(operator)) {
|
|
115
|
+
const [tokenPart, value] = this.rawToken.split(operator).map((part) => part.trim());
|
|
116
|
+
return {
|
|
117
|
+
path: tokenPart.split("."),
|
|
118
|
+
value,
|
|
119
|
+
operator,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
path: this.rawToken.split("."),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Gets the value at the token's path in the provided object.
|
|
131
|
+
* @param value - The object to read from
|
|
132
|
+
* @returns The value at the path, or undefined if the path doesn't exist
|
|
133
|
+
*/
|
|
134
|
+
#getValueAtPath(value: unknown): unknown {
|
|
135
|
+
if (value === null || value === undefined) {
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (!this.path.length) {
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
let pointer: any = value;
|
|
144
|
+
|
|
145
|
+
for (const part of this.path) {
|
|
146
|
+
pointer = pointer?.[part];
|
|
147
|
+
if (pointer === undefined) {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return pointer;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Performs the comparison operation if an operator is present.
|
|
157
|
+
* @param value - The value to compare
|
|
158
|
+
* @returns The result of the comparison, or the original value if no operator is present
|
|
159
|
+
*/
|
|
160
|
+
#performComparison(value: unknown): boolean | unknown {
|
|
161
|
+
if (this.equalsValue !== undefined) {
|
|
162
|
+
return String(value) === this.equalsValue;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (this.notEqualsValue !== undefined) {
|
|
166
|
+
return String(value) !== this.notEqualsValue;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (this.gtValue !== undefined) {
|
|
170
|
+
return Number(value) > Number(this.gtValue);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (this.ltValue !== undefined) {
|
|
174
|
+
return Number(value) < Number(this.ltValue);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return value;
|
|
178
|
+
}
|
|
179
|
+
}
|
package/target/lib/bind.d.ts
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { ObserveOpts } from "@joist/observable";
|
|
2
|
+
export interface BindOpts<This, Value> extends ObserveOpts<This, Value> {
|
|
3
|
+
alwaysUpdate?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function bind<This extends HTMLElement, Value>(opts?: BindOpts<This, Value>): (base: ClassAccessorDecoratorTarget<This, Value>, ctx: ClassAccessorDecoratorContext<This, Value>) => ClassAccessorDecoratorResult<This, Value>;
|
package/target/lib/bind.js
CHANGED
|
@@ -1,19 +1,33 @@
|
|
|
1
1
|
import { instanceMetadataStore, observe } from "@joist/observable";
|
|
2
|
-
export function bind(
|
|
2
|
+
export function bind(opts = {}) {
|
|
3
3
|
return function bindDecorator(base, ctx) {
|
|
4
|
-
const internalObserve = observe(
|
|
4
|
+
const internalObserve = observe(opts)(base, ctx);
|
|
5
5
|
return {
|
|
6
6
|
init(value) {
|
|
7
7
|
this.addEventListener("joist::value", (e) => {
|
|
8
|
-
if (e.
|
|
8
|
+
if (e.expression.bindTo === ctx.name) {
|
|
9
9
|
const instanceMeta = instanceMetadataStore.read(this);
|
|
10
10
|
e.stopPropagation();
|
|
11
|
-
e.update({
|
|
11
|
+
e.update({
|
|
12
|
+
oldValue: null,
|
|
13
|
+
newValue: ctx.access.get(this),
|
|
14
|
+
alwaysUpdate: opts.alwaysUpdate,
|
|
15
|
+
firstChange: true,
|
|
16
|
+
});
|
|
17
|
+
const name = ctx.name;
|
|
12
18
|
instanceMeta.bindings.add((changes) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
const change = changes.get(name);
|
|
20
|
+
if (change) {
|
|
21
|
+
e.update({ ...change, alwaysUpdate: opts.alwaysUpdate, firstChange: false });
|
|
22
|
+
}
|
|
23
|
+
else if (opts.alwaysUpdate) {
|
|
24
|
+
const value = ctx.access.get(this);
|
|
25
|
+
e.update({
|
|
26
|
+
oldValue: value,
|
|
27
|
+
newValue: value,
|
|
28
|
+
alwaysUpdate: opts.alwaysUpdate,
|
|
29
|
+
firstChange: false,
|
|
30
|
+
});
|
|
17
31
|
}
|
|
18
32
|
});
|
|
19
33
|
}
|
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;AAUhF,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,OAAO;YACL,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;YACD,GAAG,EAAE,eAAe,CAAC,GAAG;YACxB,GAAG,EAAE,eAAe,CAAC,GAAG;SACzB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { assert } from "chai";
|
|
3
|
+
import { bind } from "./bind.js";
|
|
4
|
+
import { JoistValueEvent } from "./events.js";
|
|
5
|
+
import { JExpression } from "./expression.js";
|
|
6
|
+
describe("bind decorator", () => {
|
|
7
|
+
let TestElement = (() => {
|
|
8
|
+
let _classSuper = HTMLElement;
|
|
9
|
+
let _value_decorators;
|
|
10
|
+
let _value_initializers = [];
|
|
11
|
+
let _value_extraInitializers = [];
|
|
12
|
+
let _alwaysUpdateValue_decorators;
|
|
13
|
+
let _alwaysUpdateValue_initializers = [];
|
|
14
|
+
let _alwaysUpdateValue_extraInitializers = [];
|
|
15
|
+
return class TestElement extends _classSuper {
|
|
16
|
+
static {
|
|
17
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
18
|
+
_value_decorators = [bind()];
|
|
19
|
+
_alwaysUpdateValue_decorators = [bind({ alwaysUpdate: true })];
|
|
20
|
+
__esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
|
|
21
|
+
__esDecorate(this, null, _alwaysUpdateValue_decorators, { kind: "accessor", name: "alwaysUpdateValue", static: false, private: false, access: { has: obj => "alwaysUpdateValue" in obj, get: obj => obj.alwaysUpdateValue, set: (obj, value) => { obj.alwaysUpdateValue = value; } }, metadata: _metadata }, _alwaysUpdateValue_initializers, _alwaysUpdateValue_extraInitializers);
|
|
22
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
23
|
+
}
|
|
24
|
+
#value_accessor_storage = __runInitializers(this, _value_initializers, "initial");
|
|
25
|
+
get value() { return this.#value_accessor_storage; }
|
|
26
|
+
set value(value) { this.#value_accessor_storage = value; }
|
|
27
|
+
#alwaysUpdateValue_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _alwaysUpdateValue_initializers, "initial"));
|
|
28
|
+
get alwaysUpdateValue() { return this.#alwaysUpdateValue_accessor_storage; }
|
|
29
|
+
set alwaysUpdateValue(value) { this.#alwaysUpdateValue_accessor_storage = value; }
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
__runInitializers(this, _alwaysUpdateValue_extraInitializers);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
customElements.define("test-element", TestElement);
|
|
37
|
+
it("should initialize with default value", () => {
|
|
38
|
+
const element = new TestElement();
|
|
39
|
+
assert.equal(element.value, "initial");
|
|
40
|
+
});
|
|
41
|
+
it("should update value and trigger binding", async () => {
|
|
42
|
+
const element = new TestElement();
|
|
43
|
+
let oldValue = null;
|
|
44
|
+
let newValue = null;
|
|
45
|
+
element.dispatchEvent(new JoistValueEvent(new JExpression("value"), (update) => {
|
|
46
|
+
oldValue = update.oldValue;
|
|
47
|
+
newValue = update.newValue;
|
|
48
|
+
}));
|
|
49
|
+
assert.equal(oldValue, null);
|
|
50
|
+
assert.equal(newValue, "initial");
|
|
51
|
+
element.value = "updated";
|
|
52
|
+
await Promise.resolve();
|
|
53
|
+
assert.equal(oldValue, "initial");
|
|
54
|
+
assert.equal(newValue, "updated");
|
|
55
|
+
});
|
|
56
|
+
it("should trigger binding on every change with alwaysUpdate option", async () => {
|
|
57
|
+
const element = new TestElement();
|
|
58
|
+
let bindingCount = 0;
|
|
59
|
+
let oldValue;
|
|
60
|
+
let newValue;
|
|
61
|
+
element.dispatchEvent(new JoistValueEvent(new JExpression("alwaysUpdateValue"), (update) => {
|
|
62
|
+
bindingCount++;
|
|
63
|
+
oldValue = update.oldValue;
|
|
64
|
+
newValue = update.newValue;
|
|
65
|
+
}));
|
|
66
|
+
assert.equal(bindingCount, 1);
|
|
67
|
+
assert.equal(oldValue, null);
|
|
68
|
+
assert.equal(newValue, "initial");
|
|
69
|
+
element.value = "something else";
|
|
70
|
+
await Promise.resolve();
|
|
71
|
+
assert.equal(bindingCount, 2);
|
|
72
|
+
assert.equal(oldValue, "initial");
|
|
73
|
+
assert.equal(newValue, "initial");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=bind.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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
package/target/lib/define.js
CHANGED
package/target/lib/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,4BAA4B,CAAC;AACpC,OAAO,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,4BAA4B,CAAC;AACpC,OAAO,6BAA6B,CAAC;AACrC,OAAO,6BAA6B,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { __esDecorate, __runInitializers } from "tslib";
|
|
|
2
2
|
import { attr, element, queryAll, css, html } from "@joist/element";
|
|
3
3
|
import { bind } from "../bind.js";
|
|
4
4
|
import { JoistValueEvent } from "../events.js";
|
|
5
|
-
import {
|
|
5
|
+
import { JExpression } from "../expression.js";
|
|
6
6
|
let JoistAsyncElement = (() => {
|
|
7
7
|
let _classDecorators = [element({
|
|
8
8
|
tagName: "j-async",
|
|
@@ -52,18 +52,27 @@ let JoistAsyncElement = (() => {
|
|
|
52
52
|
error: templates.find((t) => t.hasAttribute("error")),
|
|
53
53
|
success: templates.find((t) => t.hasAttribute("success")),
|
|
54
54
|
};
|
|
55
|
-
const token = new
|
|
55
|
+
const token = new JExpression(this.bind);
|
|
56
56
|
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
|
|
57
57
|
if (newValue !== oldValue) {
|
|
58
58
|
if (newValue instanceof Promise) {
|
|
59
59
|
this.#handlePromise(newValue);
|
|
60
60
|
}
|
|
61
|
+
else if (this.#isAsyncState(newValue)) {
|
|
62
|
+
this.#handleState(newValue);
|
|
63
|
+
}
|
|
61
64
|
else {
|
|
62
65
|
console.warn("j-async bind value must be a Promise or AsyncState");
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
}));
|
|
66
69
|
}
|
|
70
|
+
#isAsyncState(value) {
|
|
71
|
+
return (typeof value === "object" &&
|
|
72
|
+
value !== null &&
|
|
73
|
+
"status" in value &&
|
|
74
|
+
(value.status === "loading" || value.status === "error" || value.status === "success"));
|
|
75
|
+
}
|
|
67
76
|
async #handlePromise(promise) {
|
|
68
77
|
try {
|
|
69
78
|
this.#handleState({ status: "loading" });
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"async.element.js","sourceRoot":"","sources":["../../../src/lib/elements/async.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,4 +72,80 @@ it("should handle state transitions", async () => {
|
|
|
72
72
|
await new Promise((resolve) => setTimeout(resolve, 150));
|
|
73
73
|
assert.equal(element.textContent?.trim(), "Success!");
|
|
74
74
|
});
|
|
75
|
+
it("should show loading template when AsyncState is loading", () => {
|
|
76
|
+
const element = fixtureSync(html `
|
|
77
|
+
<div
|
|
78
|
+
@joist::value=${(e) => {
|
|
79
|
+
e.update({ oldValue: null, newValue: { status: "loading" } });
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
<j-async bind="test">
|
|
83
|
+
<template loading>Loading...</template>
|
|
84
|
+
<template success>Success!</template>
|
|
85
|
+
<template error>Error!</template>
|
|
86
|
+
</j-async>
|
|
87
|
+
</div>
|
|
88
|
+
`);
|
|
89
|
+
assert.equal(element.textContent?.trim(), "Loading...");
|
|
90
|
+
});
|
|
91
|
+
it("should show success template when AsyncState is success", () => {
|
|
92
|
+
const element = fixtureSync(html `
|
|
93
|
+
<div
|
|
94
|
+
@joist::value=${(e) => {
|
|
95
|
+
e.update({ oldValue: null, newValue: { status: "success", data: "test data" } });
|
|
96
|
+
}}
|
|
97
|
+
>
|
|
98
|
+
<j-async bind="test">
|
|
99
|
+
<template loading>Loading...</template>
|
|
100
|
+
<template success>Success!</template>
|
|
101
|
+
<template error>Error!</template>
|
|
102
|
+
</j-async>
|
|
103
|
+
</div>
|
|
104
|
+
`);
|
|
105
|
+
assert.equal(element.textContent?.trim(), "Success!");
|
|
106
|
+
});
|
|
107
|
+
it("should show error template when AsyncState is error", () => {
|
|
108
|
+
const element = fixtureSync(html `
|
|
109
|
+
<div
|
|
110
|
+
@joist::value=${(e) => {
|
|
111
|
+
e.update({ oldValue: null, newValue: { status: "error", error: "test error" } });
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
<j-async bind="test">
|
|
115
|
+
<template loading>Loading...</template>
|
|
116
|
+
<template success>Success!</template>
|
|
117
|
+
<template error>Error!</template>
|
|
118
|
+
</j-async>
|
|
119
|
+
</div>
|
|
120
|
+
`);
|
|
121
|
+
assert.equal(element.textContent?.trim(), "Error!");
|
|
122
|
+
});
|
|
123
|
+
it("should handle AsyncState transitions", () => {
|
|
124
|
+
const element = fixtureSync(html `
|
|
125
|
+
<div
|
|
126
|
+
@joist::value=${(e) => {
|
|
127
|
+
e.update({ oldValue: null, newValue: { status: "loading" } });
|
|
128
|
+
setTimeout(() => {
|
|
129
|
+
e.update({
|
|
130
|
+
oldValue: { status: "loading" },
|
|
131
|
+
newValue: { status: "success", data: "test data" },
|
|
132
|
+
});
|
|
133
|
+
}, 100);
|
|
134
|
+
}}
|
|
135
|
+
>
|
|
136
|
+
<j-async bind="test">
|
|
137
|
+
<template loading>Loading...</template>
|
|
138
|
+
<template success>Success!</template>
|
|
139
|
+
<template error>Error!</template>
|
|
140
|
+
</j-async>
|
|
141
|
+
</div>
|
|
142
|
+
`);
|
|
143
|
+
assert.equal(element.textContent?.trim(), "Loading...");
|
|
144
|
+
return new Promise((resolve) => {
|
|
145
|
+
setTimeout(() => {
|
|
146
|
+
assert.equal(element.textContent?.trim(), "Success!");
|
|
147
|
+
resolve(undefined);
|
|
148
|
+
}, 150);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
75
151
|
//# 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,oBAAoB,CAAC;AAE5B,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;IAGH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IAC/D,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,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;;;;;;;;GAQJ,CAAC,CAAC;IAGH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;IAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;;;;;;;;GAQJ,CAAC,CAAC;IAGH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;IAGxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC,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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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { JExpression } from "../expression.js";
|
|
2
|
+
declare global {
|
|
3
|
+
interface HTMLElementTagNameMap {
|
|
4
|
+
"j-bind": JoistBindElement;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export declare class JAttrToken extends JExpression {
|
|
3
8
|
mapTo: string;
|
|
4
9
|
constructor(binding: string);
|
|
5
10
|
}
|
|
6
|
-
export declare class
|
|
11
|
+
export declare class JoistBindElement extends HTMLElement {
|
|
7
12
|
#private;
|
|
8
13
|
accessor props: string;
|
|
9
14
|
accessor attrs: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import { attr, element, css, html } from "@joist/element";
|
|
3
|
-
import {
|
|
3
|
+
import { JExpression } from "../expression.js";
|
|
4
4
|
import { JoistValueEvent } from "../events.js";
|
|
5
|
-
export class JAttrToken extends
|
|
5
|
+
export class JAttrToken extends JExpression {
|
|
6
6
|
mapTo;
|
|
7
7
|
constructor(binding) {
|
|
8
8
|
const [mapTo, bindTo] = binding.split(":");
|
|
@@ -10,7 +10,7 @@ export class JAttrToken extends JToken {
|
|
|
10
10
|
this.mapTo = mapTo;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
let
|
|
13
|
+
let JoistBindElement = (() => {
|
|
14
14
|
let _classDecorators = [element({
|
|
15
15
|
tagName: "j-bind",
|
|
16
16
|
shadowDom: [css `:host{display: contents;}`, html `<slot></slot>`],
|
|
@@ -28,7 +28,7 @@ let JoistIfElement = (() => {
|
|
|
28
28
|
let _target_decorators;
|
|
29
29
|
let _target_initializers = [];
|
|
30
30
|
let _target_extraInitializers = [];
|
|
31
|
-
var
|
|
31
|
+
var JoistBindElement = class extends _classSuper {
|
|
32
32
|
static { _classThis = this; }
|
|
33
33
|
static {
|
|
34
34
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
@@ -39,7 +39,7 @@ let JoistIfElement = (() => {
|
|
|
39
39
|
__esDecorate(this, null, _attrs_decorators, { kind: "accessor", name: "attrs", static: false, private: false, access: { has: obj => "attrs" in obj, get: obj => obj.attrs, set: (obj, value) => { obj.attrs = value; } }, metadata: _metadata }, _attrs_initializers, _attrs_extraInitializers);
|
|
40
40
|
__esDecorate(this, null, _target_decorators, { kind: "accessor", name: "target", static: false, private: false, access: { has: obj => "target" in obj, get: obj => obj.target, set: (obj, value) => { obj.target = value; } }, metadata: _metadata }, _target_initializers, _target_extraInitializers);
|
|
41
41
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
42
|
-
|
|
42
|
+
JoistBindElement = _classThis = _classDescriptor.value;
|
|
43
43
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
44
44
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
45
45
|
}
|
|
@@ -90,14 +90,11 @@ let JoistIfElement = (() => {
|
|
|
90
90
|
.filter((b) => b);
|
|
91
91
|
}
|
|
92
92
|
#dispatch(token, write) {
|
|
93
|
-
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
|
|
94
|
-
if (newValue === oldValue) {
|
|
93
|
+
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue, alwaysUpdate }) => {
|
|
94
|
+
if (newValue === oldValue && !alwaysUpdate) {
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
|
-
let valueToWrite = newValue;
|
|
98
|
-
if (typeof newValue === "object" && newValue !== null) {
|
|
99
|
-
valueToWrite = token.readTokenValueFrom(newValue);
|
|
100
|
-
}
|
|
97
|
+
let valueToWrite = token.evaluate(newValue);
|
|
101
98
|
if (token.isNegated) {
|
|
102
99
|
valueToWrite = !valueToWrite;
|
|
103
100
|
}
|
|
@@ -109,7 +106,7 @@ let JoistIfElement = (() => {
|
|
|
109
106
|
__runInitializers(this, _target_extraInitializers);
|
|
110
107
|
}
|
|
111
108
|
};
|
|
112
|
-
return
|
|
109
|
+
return JoistBindElement = _classThis;
|
|
113
110
|
})();
|
|
114
|
-
export {
|
|
111
|
+
export { JoistBindElement };
|
|
115
112
|
//# sourceMappingURL=bind.element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"bind.element.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ it("should pass props to child", () => {
|
|
|
5
5
|
const element = fixtureSync(html `
|
|
6
6
|
<div
|
|
7
7
|
@joist::value=${(e) => {
|
|
8
|
-
if (e.
|
|
8
|
+
if (e.expression.bindTo === "href") {
|
|
9
9
|
e.update({
|
|
10
10
|
oldValue: null,
|
|
11
11
|
newValue: "$foo",
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
if (e.
|
|
14
|
+
if (e.expression.bindTo === "target") {
|
|
15
15
|
e.update({
|
|
16
16
|
oldValue: null,
|
|
17
17
|
newValue: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.test.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAA;;sBAEZ,CAAC,CAAkB,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"bind.element.test.js","sourceRoot":"","sources":["../../../src/lib/elements/bind.element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export interface EachCtx<T> {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class JForScope<T = unknown> extends HTMLElement {
|
|
13
13
|
accessor each: EachCtx<T>;
|
|
14
|
-
accessor key:
|
|
14
|
+
accessor key: unknown;
|
|
15
15
|
}
|
|
16
16
|
export declare class JositForElement extends HTMLElement {
|
|
17
17
|
#private;
|