@joist/templating 4.5.0 → 4.7.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 +0 -5
- package/target/lib/bind.js +0 -45
- package/target/lib/bind.js.map +0 -1
- package/target/lib/bind.test.d.ts +0 -1
- package/target/lib/bind.test.js +0 -76
- package/target/lib/bind.test.js.map +0 -1
- package/target/lib/define.d.ts +0 -16
- package/target/lib/define.js +0 -14
- package/target/lib/define.js.map +0 -1
- package/target/lib/elements/async.element.d.ts +0 -13
- package/target/lib/elements/async.element.js +0 -133
- package/target/lib/elements/async.element.js.map +0 -1
- package/target/lib/elements/async.element.test.d.ts +0 -1
- package/target/lib/elements/async.element.test.js +0 -180
- package/target/lib/elements/async.element.test.js.map +0 -1
- package/target/lib/elements/bind.element.d.ts +0 -13
- package/target/lib/elements/bind.element.js +0 -144
- package/target/lib/elements/bind.element.js.map +0 -1
- package/target/lib/elements/bind.element.test.d.ts +0 -1
- package/target/lib/elements/bind.element.test.js +0 -150
- package/target/lib/elements/bind.element.test.js.map +0 -1
- package/target/lib/elements/for.element.d.ts +0 -15
- package/target/lib/elements/for.element.js +0 -215
- package/target/lib/elements/for.element.js.map +0 -1
- package/target/lib/elements/for.element.test.d.ts +0 -1
- package/target/lib/elements/for.element.test.js +0 -188
- package/target/lib/elements/for.element.test.js.map +0 -1
- package/target/lib/elements/if.element.d.ts +0 -9
- package/target/lib/elements/if.element.js +0 -108
- package/target/lib/elements/if.element.js.map +0 -1
- package/target/lib/elements/if.element.test.d.ts +0 -1
- package/target/lib/elements/if.element.test.js +0 -306
- package/target/lib/elements/if.element.test.js.map +0 -1
- package/target/lib/elements/scope.element.d.ts +0 -3
- package/target/lib/elements/scope.element.js +0 -37
- package/target/lib/elements/scope.element.js.map +0 -1
- package/target/lib/elements/scope.element.test.d.ts +0 -1
- package/target/lib/elements/scope.element.test.js +0 -24
- package/target/lib/elements/scope.element.test.js.map +0 -1
- package/target/lib/elements/value.element.d.ts +0 -5
- package/target/lib/elements/value.element.js +0 -62
- package/target/lib/elements/value.element.js.map +0 -1
- package/target/lib/elements/value.element.test.d.ts +0 -1
- package/target/lib/elements/value.element.test.js +0 -65
- package/target/lib/elements/value.element.test.js.map +0 -1
- package/target/lib/events.d.ts +0 -16
- package/target/lib/events.js +0 -10
- package/target/lib/events.js.map +0 -1
- package/target/lib/expression.d.ts +0 -13
- package/target/lib/expression.js +0 -87
- package/target/lib/expression.js.map +0 -1
- package/target/lib/expression.test.d.ts +0 -1
- package/target/lib/expression.test.js +0 -171
- package/target/lib/expression.test.js.map +0 -1
- package/target/lib.d.ts +0 -2
- package/target/lib.js +0 -3
- package/target/lib.js.map +0 -1
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
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { instanceMetadataStore, observe } from "@joist/observable";
|
|
2
|
-
export function bind(opts = {}) {
|
|
3
|
-
return function bindDecorator(base, ctx) {
|
|
4
|
-
const internalObserve = observe(opts)(base, ctx);
|
|
5
|
-
return {
|
|
6
|
-
init(value) {
|
|
7
|
-
this.addEventListener("joist::value", (e) => {
|
|
8
|
-
if (e.expression.bindTo === ctx.name) {
|
|
9
|
-
const instanceMeta = instanceMetadataStore.read(this);
|
|
10
|
-
e.stopPropagation();
|
|
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;
|
|
18
|
-
instanceMeta.bindings.add((changes) => {
|
|
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
|
-
});
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
if (internalObserve.init) {
|
|
36
|
-
return internalObserve.init.call(this, value);
|
|
37
|
-
}
|
|
38
|
-
return value;
|
|
39
|
-
},
|
|
40
|
-
get: internalObserve.get,
|
|
41
|
-
set: internalObserve.set,
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=bind.js.map
|
package/target/lib/bind.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/target/lib/bind.test.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { JoistAsyncElement } from "./elements/async.element.js";
|
|
2
|
-
import { JoistForElement } from "./elements/for.element.js";
|
|
3
|
-
import { JoistIfElement } from "./elements/if.element.js";
|
|
4
|
-
import { JoistBindElement } from "./elements/bind.element.js";
|
|
5
|
-
import { JoistValueElement } from "./elements/value.element.js";
|
|
6
|
-
import { JoistScopeElement } from "./elements/scope.element.js";
|
|
7
|
-
declare global {
|
|
8
|
-
interface HTMLElementTagNameMap {
|
|
9
|
-
"j-async": JoistAsyncElement;
|
|
10
|
-
"j-for": JoistForElement;
|
|
11
|
-
"j-if": JoistIfElement;
|
|
12
|
-
"j-bind": JoistBindElement;
|
|
13
|
-
"j-val": JoistValueElement;
|
|
14
|
-
"j-scope": JoistScopeElement;
|
|
15
|
-
}
|
|
16
|
-
}
|
package/target/lib/define.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { define } from "@joist/element/define.js";
|
|
2
|
-
import { JoistAsyncElement } from "./elements/async.element.js";
|
|
3
|
-
import { JoistForElement } from "./elements/for.element.js";
|
|
4
|
-
import { JoistIfElement } from "./elements/if.element.js";
|
|
5
|
-
import { JoistBindElement } from "./elements/bind.element.js";
|
|
6
|
-
import { JoistValueElement } from "./elements/value.element.js";
|
|
7
|
-
import { JoistScopeElement } from "./elements/scope.element.js";
|
|
8
|
-
define({ tagName: "j-async" }, JoistAsyncElement);
|
|
9
|
-
define({ tagName: "j-for" }, JoistForElement);
|
|
10
|
-
define({ tagName: "j-if" }, JoistIfElement);
|
|
11
|
-
define({ tagName: "j-bind" }, JoistBindElement);
|
|
12
|
-
define({ tagName: "j-val" }, JoistValueElement);
|
|
13
|
-
define({ tagName: "j-scope" }, JoistScopeElement);
|
|
14
|
-
//# sourceMappingURL=define.js.map
|
package/target/lib/define.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type AsyncState<T = unknown, E = unknown> = {
|
|
2
|
-
status: "loading" | "error" | "success";
|
|
3
|
-
data?: T;
|
|
4
|
-
error?: E;
|
|
5
|
-
};
|
|
6
|
-
export declare class JoistAsyncElement extends HTMLElement {
|
|
7
|
-
#private;
|
|
8
|
-
accessor bind: string;
|
|
9
|
-
accessor dependsOn: string;
|
|
10
|
-
accessor state: AsyncState | null;
|
|
11
|
-
connectedCallback(): Promise<void>;
|
|
12
|
-
disconnectedCallback(): void;
|
|
13
|
-
}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { attr, element, queryAll, css, html } from "@joist/element";
|
|
3
|
-
import { bind } from "../bind.js";
|
|
4
|
-
import { JoistValueEvent } from "../events.js";
|
|
5
|
-
import { JExpression } from "../expression.js";
|
|
6
|
-
let JoistAsyncElement = (() => {
|
|
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;
|
|
14
|
-
let _bind_decorators;
|
|
15
|
-
let _bind_initializers = [];
|
|
16
|
-
let _bind_extraInitializers = [];
|
|
17
|
-
let _dependsOn_decorators;
|
|
18
|
-
let _dependsOn_initializers = [];
|
|
19
|
-
let _dependsOn_extraInitializers = [];
|
|
20
|
-
let _state_decorators;
|
|
21
|
-
let _state_initializers = [];
|
|
22
|
-
let _state_extraInitializers = [];
|
|
23
|
-
var JoistAsyncElement = class extends _classSuper {
|
|
24
|
-
static { _classThis = this; }
|
|
25
|
-
static {
|
|
26
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
27
|
-
_bind_decorators = [attr()];
|
|
28
|
-
_dependsOn_decorators = [attr({
|
|
29
|
-
name: "depends-on",
|
|
30
|
-
})];
|
|
31
|
-
_state_decorators = [bind()];
|
|
32
|
-
__esDecorate(this, null, _bind_decorators, { kind: "accessor", name: "bind", static: false, private: false, access: { has: obj => "bind" in obj, get: obj => obj.bind, set: (obj, value) => { obj.bind = value; } }, metadata: _metadata }, _bind_initializers, _bind_extraInitializers);
|
|
33
|
-
__esDecorate(this, null, _dependsOn_decorators, { kind: "accessor", name: "dependsOn", static: false, private: false, access: { has: obj => "dependsOn" in obj, get: obj => obj.dependsOn, set: (obj, value) => { obj.dependsOn = value; } }, metadata: _metadata }, _dependsOn_initializers, _dependsOn_extraInitializers);
|
|
34
|
-
__esDecorate(this, null, _state_decorators, { kind: "accessor", name: "state", static: false, private: false, access: { has: obj => "state" in obj, get: obj => obj.state, set: (obj, value) => { obj.state = value; } }, metadata: _metadata }, _state_initializers, _state_extraInitializers);
|
|
35
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
36
|
-
JoistAsyncElement = _classThis = _classDescriptor.value;
|
|
37
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
38
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
39
|
-
}
|
|
40
|
-
#bind_accessor_storage = __runInitializers(this, _bind_initializers, "");
|
|
41
|
-
get bind() { return this.#bind_accessor_storage; }
|
|
42
|
-
set bind(value) { this.#bind_accessor_storage = value; }
|
|
43
|
-
#dependsOn_accessor_storage = (__runInitializers(this, _bind_extraInitializers), __runInitializers(this, _dependsOn_initializers, ""));
|
|
44
|
-
get dependsOn() { return this.#dependsOn_accessor_storage; }
|
|
45
|
-
set dependsOn(value) { this.#dependsOn_accessor_storage = value; }
|
|
46
|
-
#state_accessor_storage = (__runInitializers(this, _dependsOn_extraInitializers), __runInitializers(this, _state_initializers, null));
|
|
47
|
-
get state() { return this.#state_accessor_storage; }
|
|
48
|
-
set state(value) { this.#state_accessor_storage = value; }
|
|
49
|
-
#templates = (__runInitializers(this, _state_extraInitializers), queryAll("template", this));
|
|
50
|
-
#currentNodes = [];
|
|
51
|
-
#cachedTemplates = {
|
|
52
|
-
loading: undefined,
|
|
53
|
-
error: undefined,
|
|
54
|
-
success: undefined,
|
|
55
|
-
};
|
|
56
|
-
async connectedCallback() {
|
|
57
|
-
this.#clean();
|
|
58
|
-
const templates = Array.from(this.#templates());
|
|
59
|
-
this.#cachedTemplates = {
|
|
60
|
-
loading: templates.find((t) => t.hasAttribute("loading")),
|
|
61
|
-
error: templates.find((t) => t.hasAttribute("error")),
|
|
62
|
-
success: templates.find((t) => t.hasAttribute("success")),
|
|
63
|
-
};
|
|
64
|
-
if (this.dependsOn) {
|
|
65
|
-
await Promise.all(this.dependsOn.split(",").map((tag) => window.customElements.whenDefined(tag)));
|
|
66
|
-
}
|
|
67
|
-
const token = new JExpression(this.bind);
|
|
68
|
-
this.dispatchEvent(new JoistValueEvent(token, ({ newValue, oldValue }) => {
|
|
69
|
-
if (newValue !== oldValue) {
|
|
70
|
-
if (newValue instanceof Promise) {
|
|
71
|
-
this.#handlePromise(newValue);
|
|
72
|
-
}
|
|
73
|
-
else if (this.#isAsyncState(newValue)) {
|
|
74
|
-
this.#handleState(newValue);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
console.warn("j-async bind value must be a Promise or AsyncState");
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
#isAsyncState(value) {
|
|
83
|
-
return (typeof value === "object" &&
|
|
84
|
-
value !== null &&
|
|
85
|
-
"status" in value &&
|
|
86
|
-
(value.status === "loading" || value.status === "error" || value.status === "success"));
|
|
87
|
-
}
|
|
88
|
-
async #handlePromise(promise) {
|
|
89
|
-
try {
|
|
90
|
-
this.#handleState({ status: "loading" });
|
|
91
|
-
const data = await promise;
|
|
92
|
-
this.#handleState({ status: "success", data });
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
this.#handleState({ status: "error", error });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
#handleState(state) {
|
|
99
|
-
this.#clean();
|
|
100
|
-
let template = undefined;
|
|
101
|
-
this.state = state;
|
|
102
|
-
switch (state.status) {
|
|
103
|
-
case "loading":
|
|
104
|
-
template = this.#cachedTemplates.loading;
|
|
105
|
-
break;
|
|
106
|
-
case "error":
|
|
107
|
-
template = this.#cachedTemplates.error;
|
|
108
|
-
break;
|
|
109
|
-
case "success":
|
|
110
|
-
template = this.#cachedTemplates.success;
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
if (template) {
|
|
114
|
-
const content = document.importNode(template.content, true);
|
|
115
|
-
const nodes = Array.from(content.childNodes);
|
|
116
|
-
this.appendChild(content);
|
|
117
|
-
this.#currentNodes = nodes;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
#clean() {
|
|
121
|
-
for (const node of this.#currentNodes) {
|
|
122
|
-
node.parentNode?.removeChild(node);
|
|
123
|
-
}
|
|
124
|
-
this.#currentNodes = [];
|
|
125
|
-
}
|
|
126
|
-
disconnectedCallback() {
|
|
127
|
-
this.#clean();
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
return JoistAsyncElement = _classThis;
|
|
131
|
-
})();
|
|
132
|
-
export { JoistAsyncElement };
|
|
133
|
-
//# sourceMappingURL=async.element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;YAEP,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;YAGd,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,QAAQ,GAAoC,SAAS,CAAC;YAE1D,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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "../define.js";
|