@bodil/dom 0.1.0 → 0.1.1
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/dist/component.d.ts +1 -2
- package/dist/component.js +4 -28
- package/dist/component.js.map +1 -1
- package/dist/decorators/attribute.d.ts +24 -6
- package/dist/decorators/attribute.js +83 -41
- package/dist/decorators/attribute.js.map +1 -1
- package/dist/decorators/attribute.test.js +67 -0
- package/dist/decorators/attribute.test.js.map +1 -1
- package/dist/decorators/reactive.d.ts +2 -1
- package/dist/decorators/reactive.js.map +1 -1
- package/dist/decorators/types.d.ts +7 -0
- package/dist/decorators/types.js +2 -0
- package/dist/decorators/types.js.map +1 -0
- package/package.json +1 -1
- package/src/component.ts +10 -39
- package/src/decorators/attribute.test.ts +48 -0
- package/src/decorators/attribute.ts +211 -73
- package/src/decorators/reactive.ts +4 -3
- package/src/decorators/types.ts +20 -0
package/dist/component.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type AttributeConfig } from "./decorators/attribute";
|
|
|
6
6
|
import { EmitterElement } from "./emitter";
|
|
7
7
|
import { type QuerySlotOptions } from "./slot";
|
|
8
8
|
export type { ReactiveController, ReactiveControllerHost } from "lit";
|
|
9
|
-
export { attribute, type AttributeOptions } from "./decorators/attribute";
|
|
9
|
+
export { attribute, attributeGetter, attributeSetter, type AttributeOptions, type AttributeGetterSetterOptions, } from "./decorators/attribute";
|
|
10
10
|
export { connect, connectEffect, type ConnectFunction, type ConnectFunctionReturnValue, } from "./decorators/connect";
|
|
11
11
|
export { reactive } from "./decorators/reactive";
|
|
12
12
|
export { require } from "./decorators/require";
|
|
@@ -54,7 +54,6 @@ export declare abstract class Component extends EmitterElement implements Reacti
|
|
|
54
54
|
protected connectedCallback(): void;
|
|
55
55
|
protected disconnectedCallback(): void;
|
|
56
56
|
protected attributeChangedCallback(name: string, old: string | null, valueString: string | null): void;
|
|
57
|
-
private syncAttribute;
|
|
58
57
|
$signal<K extends keyof this & string, V extends this[K]>(prop: K): Signal<V>;
|
|
59
58
|
addController(controller: ReactiveController): void;
|
|
60
59
|
removeController(controller: ReactiveController): void;
|
package/dist/component.js
CHANGED
|
@@ -3,7 +3,7 @@ import { assert, isIterable, isNullish, present } from "@bodil/core/assert";
|
|
|
3
3
|
import { DisposableContext, toDisposable } from "@bodil/core/disposable";
|
|
4
4
|
import { Signal } from "@bodil/signal";
|
|
5
5
|
import { adoptStyles, getCompatibleStyle, nothing, render, unsafeCSS, } from "lit";
|
|
6
|
-
import { attributeConfig,
|
|
6
|
+
import { attributeConfig, fromAttribute } from "./decorators/attribute";
|
|
7
7
|
import { connectedJobs } from "./decorators/connect";
|
|
8
8
|
import { reactiveFields, signalForObject } from "./decorators/reactive";
|
|
9
9
|
import { requiredProperties } from "./decorators/require";
|
|
@@ -12,7 +12,7 @@ import { EmitterElement } from "./emitter";
|
|
|
12
12
|
import { eventListener } from "./event";
|
|
13
13
|
import { scheduler } from "./scheduler";
|
|
14
14
|
import { findSlot, getOrSetQuery, getOrSetSignal, SlotChangeController, } from "./slot";
|
|
15
|
-
export { attribute } from "./decorators/attribute";
|
|
15
|
+
export { attribute, attributeGetter, attributeSetter, } from "./decorators/attribute";
|
|
16
16
|
export { connect, connectEffect, } from "./decorators/connect";
|
|
17
17
|
export { reactive } from "./decorators/reactive";
|
|
18
18
|
export { require } from "./decorators/require";
|
|
@@ -115,7 +115,8 @@ export class Component extends EmitterElement {
|
|
|
115
115
|
this.renderRoot = this.createRenderRoot();
|
|
116
116
|
this.#abortController = new AbortController();
|
|
117
117
|
// set up reactive fields, because decorators can't do this themselves
|
|
118
|
-
|
|
118
|
+
const fields = this.constructor[Symbol.metadata]?.[reactiveFields] ?? [];
|
|
119
|
+
for (const field of fields) {
|
|
119
120
|
const sig = signalForObject(this, field, () => Signal(undefined, { equals: Object.is }));
|
|
120
121
|
Object.defineProperty(this, field, {
|
|
121
122
|
get() {
|
|
@@ -138,11 +139,6 @@ export class Component extends EmitterElement {
|
|
|
138
139
|
this.#connectedContext.dispose();
|
|
139
140
|
this.#controllers.forEach((c) => c.hostConnected?.());
|
|
140
141
|
this.#rootPart?.setConnected(true);
|
|
141
|
-
for (const [key, config] of this.constructor.attributeConfig.entries()) {
|
|
142
|
-
if (config.reflect) {
|
|
143
|
-
this.syncAttribute(key, config);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
142
|
for (const job of connectedJobs(this)) {
|
|
147
143
|
const result = job.call(this);
|
|
148
144
|
const items = isNullish(result)
|
|
@@ -185,26 +181,6 @@ export class Component extends EmitterElement {
|
|
|
185
181
|
const value = fromAttribute(valueString, present(attrConfig.type, `@attribute decorator for ${this.constructor.name}.${name} needs a type declaration, eg. @attribute({type: String})`));
|
|
186
182
|
this[attrConfig.property] = value;
|
|
187
183
|
}
|
|
188
|
-
syncAttribute(name, config) {
|
|
189
|
-
if (this.isConnected) {
|
|
190
|
-
config ??= this.constructor.attributeConfig.get(name);
|
|
191
|
-
assert(config !== undefined);
|
|
192
|
-
if (config.reflect) {
|
|
193
|
-
const realValue = this[config.property];
|
|
194
|
-
config.type ??= detectAttributeType(realValue);
|
|
195
|
-
const value = toAttribute(realValue, present(config.type));
|
|
196
|
-
const oldValue = this.getAttribute(name);
|
|
197
|
-
if (value !== oldValue) {
|
|
198
|
-
if (value === null) {
|
|
199
|
-
this.removeAttribute(name);
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
this.setAttribute(name, value);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
184
|
$signal(prop) {
|
|
209
185
|
const _value = this[prop];
|
|
210
186
|
return signalForObject(this, prop, () => {
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { Component } from "../component";
|
|
2
|
+
import type { ClassAccessorDecoratorFunction, ClassGetterDecoratorFunction, ClassGetterDecoratorResult, ClassGetterDecoratorTarget, ClassSetterDecoratorFunction, ClassSetterDecoratorResult, ClassSetterDecoratorTarget } from "./types";
|
|
2
3
|
export declare const attributeConfig: unique symbol;
|
|
3
4
|
export type AttributeType = typeof String | typeof Number | typeof Boolean;
|
|
4
|
-
export type
|
|
5
|
+
export type AttributeGetterSetterOptions = {
|
|
6
|
+
type: AttributeType | undefined;
|
|
5
7
|
name: string | undefined;
|
|
6
8
|
reflect: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type AttributeOptions = AttributeGetterSetterOptions & {
|
|
7
11
|
reactive: boolean;
|
|
8
12
|
};
|
|
9
13
|
export type AttributeConfig = {
|
|
10
|
-
type: AttributeType | undefined;
|
|
11
14
|
property: string;
|
|
12
15
|
} & AttributeOptions;
|
|
13
16
|
export declare function toAttribute(value: unknown, type: AttributeType): string | null;
|
|
@@ -15,12 +18,27 @@ export declare function fromAttribute(value: string | null, type: typeof Number)
|
|
|
15
18
|
export declare function fromAttribute(value: string | null, type: typeof Boolean): boolean;
|
|
16
19
|
export declare function fromAttribute(value: string | null, type: typeof String): string | undefined;
|
|
17
20
|
export declare function fromAttribute(value: string | null, type: AttributeType): string | number | boolean | undefined;
|
|
18
|
-
export declare function
|
|
21
|
+
export declare function attributeGetter<C extends Component, T extends number | undefined>(options: Partial<AttributeOptions> & {
|
|
22
|
+
type: typeof Number;
|
|
23
|
+
}): ClassGetterDecoratorFunction<C, T>;
|
|
24
|
+
export declare function attributeGetter<C extends Component, T extends boolean | undefined>(options: Partial<AttributeOptions> & {
|
|
25
|
+
type: typeof Boolean;
|
|
26
|
+
}): ClassGetterDecoratorFunction<C, T>;
|
|
27
|
+
export declare function attributeGetter<C extends Component, T extends string | undefined>(options: Partial<AttributeOptions>): ClassGetterDecoratorFunction<C, T>;
|
|
28
|
+
export declare function attributeGetter<C extends Component, T extends string | undefined>(value: ClassGetterDecoratorTarget<C, T>, context: ClassGetterDecoratorContext<C, T>): ClassGetterDecoratorResult<C, T>;
|
|
29
|
+
export declare function attributeSetter<C extends Component, T extends number | undefined>(options: Partial<AttributeOptions> & {
|
|
30
|
+
type: typeof Number;
|
|
31
|
+
}): ClassSetterDecoratorFunction<C, T>;
|
|
32
|
+
export declare function attributeSetter<C extends Component, T extends boolean | undefined>(options: Partial<AttributeOptions> & {
|
|
33
|
+
type: typeof Boolean;
|
|
34
|
+
}): ClassSetterDecoratorFunction<C, T>;
|
|
35
|
+
export declare function attributeSetter<C extends Component, T extends string | undefined>(options: Partial<AttributeOptions>): ClassSetterDecoratorFunction<C, T>;
|
|
36
|
+
export declare function attributeSetter<C extends Component, T extends string | undefined>(value: ClassSetterDecoratorTarget<C, T>, context: ClassSetterDecoratorContext<C, T>): ClassSetterDecoratorResult<C, T>;
|
|
19
37
|
export declare function attribute<C extends Component, T extends number | undefined>(options: Partial<AttributeOptions> & {
|
|
20
38
|
type: typeof Number;
|
|
21
|
-
}):
|
|
39
|
+
}): ClassAccessorDecoratorFunction<C, T>;
|
|
22
40
|
export declare function attribute<C extends Component, T extends boolean | undefined>(options: Partial<AttributeOptions> & {
|
|
23
41
|
type: typeof Boolean;
|
|
24
|
-
}):
|
|
25
|
-
export declare function attribute<C extends Component, T extends string | undefined>(options: Partial<AttributeOptions>):
|
|
42
|
+
}): ClassAccessorDecoratorFunction<C, T>;
|
|
43
|
+
export declare function attribute<C extends Component, T extends string | undefined>(options: Partial<AttributeOptions>): ClassAccessorDecoratorFunction<C, T>;
|
|
26
44
|
export declare function attribute<C extends Component, T extends string | undefined>(value: ClassAccessorDecoratorTarget<C, T>, context: ClassAccessorDecoratorContext<C, T>): ClassAccessorDecoratorResult<C, T>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
2
|
-
import { isNullish, unreachable } from "@bodil/core/assert";
|
|
2
|
+
import { assertNever, isNullish, present, unreachable } from "@bodil/core/assert";
|
|
3
3
|
import { Signal } from "@bodil/signal";
|
|
4
4
|
import { signalForObject } from "./reactive";
|
|
5
5
|
export const attributeConfig = Symbol("attributeConfig");
|
|
@@ -35,23 +35,20 @@ export function fromAttribute(value, type) {
|
|
|
35
35
|
unreachable();
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
export function detectAttributeType(value) {
|
|
39
|
-
switch (typeof value) {
|
|
40
|
-
case "string":
|
|
41
|
-
return String;
|
|
42
|
-
case "number":
|
|
43
|
-
return Number;
|
|
44
|
-
case "boolean":
|
|
45
|
-
return Boolean;
|
|
46
|
-
default:
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
38
|
function toKebabCase(s) {
|
|
51
39
|
return s.replace(/((?<=[a-z\d])[A-Z]|(?<=[A-Z\d])[A-Z](?=[a-z]))/g, "-$1").toLowerCase();
|
|
52
40
|
}
|
|
41
|
+
export function attributeGetter(valueOrOptions, context) {
|
|
42
|
+
//@ts-ignore
|
|
43
|
+
return attribute(valueOrOptions, context);
|
|
44
|
+
}
|
|
45
|
+
export function attributeSetter(valueOrOptions, context) {
|
|
46
|
+
//@ts-ignore
|
|
47
|
+
return attribute(valueOrOptions, context);
|
|
48
|
+
}
|
|
53
49
|
export function attribute(valueOrOptions, context) {
|
|
54
50
|
if (context !== undefined) {
|
|
51
|
+
//@ts-ignore
|
|
55
52
|
return attribute({})(valueOrOptions, context);
|
|
56
53
|
}
|
|
57
54
|
return (value, context) => {
|
|
@@ -62,7 +59,7 @@ export function attribute(valueOrOptions, context) {
|
|
|
62
59
|
...{
|
|
63
60
|
type: String,
|
|
64
61
|
property: context.name,
|
|
65
|
-
reactive:
|
|
62
|
+
reactive: context.kind === "accessor",
|
|
66
63
|
reflect: true,
|
|
67
64
|
},
|
|
68
65
|
...(valueOrOptions ?? {}),
|
|
@@ -73,43 +70,88 @@ export function attribute(valueOrOptions, context) {
|
|
|
73
70
|
}
|
|
74
71
|
const key = options.name ?? toKebabCase(context.name);
|
|
75
72
|
attrs.set(key, options);
|
|
73
|
+
if (context.kind === "accessor") {
|
|
74
|
+
return accessor(options, context, key, value);
|
|
75
|
+
}
|
|
76
|
+
// ensure getters/setters aren't configured as reactive
|
|
76
77
|
if (options.reactive) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
78
|
+
throw new TypeError(`Getter/setter attributes cannot be declared with reactive: true (on ${JSON.stringify(context.name)})`);
|
|
79
|
+
}
|
|
80
|
+
if (context.kind === "setter") {
|
|
81
|
+
return setter(options, context, key, value);
|
|
82
|
+
}
|
|
83
|
+
if (context.kind === "getter") {
|
|
84
|
+
return getter(options, context, key);
|
|
85
|
+
}
|
|
86
|
+
assertNever(context);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function syncAttribute(target, options, key, value) {
|
|
90
|
+
const attributeValue = toAttribute(value, present(options.type));
|
|
91
|
+
const oldValue = target.getAttribute(key);
|
|
92
|
+
if (attributeValue !== oldValue) {
|
|
93
|
+
if (attributeValue === null) {
|
|
94
|
+
target.removeAttribute(key);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
target.setAttribute(key, attributeValue);
|
|
96
98
|
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function getter(options, context, key) {
|
|
102
|
+
if (options.reflect) {
|
|
103
|
+
context.addInitializer(function () {
|
|
104
|
+
queueMicrotask(() => {
|
|
105
|
+
syncAttribute(this, options, key, this[context.name]);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function setter(options, context, key, value) {
|
|
111
|
+
if (options.reflect) {
|
|
112
|
+
return function set(newValue) {
|
|
113
|
+
value.call(this, newValue);
|
|
114
|
+
syncAttribute(this, options, key, this[context.name]);
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function accessor(options, context, key, value) {
|
|
119
|
+
const init = function init(value) {
|
|
120
|
+
if (options.reflect) {
|
|
121
|
+
queueMicrotask(() => {
|
|
122
|
+
syncAttribute(this, options, key, value);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
};
|
|
127
|
+
if (options.reactive) {
|
|
128
|
+
const getSig = (obj) => signalForObject(obj, context.name, () => Signal(value.get.call(obj), {
|
|
129
|
+
equals: Object.is,
|
|
130
|
+
}));
|
|
97
131
|
return {
|
|
98
132
|
get() {
|
|
99
|
-
return
|
|
133
|
+
return getSig(this).get();
|
|
100
134
|
},
|
|
101
135
|
set(newValue) {
|
|
102
|
-
|
|
103
|
-
value.set.call(this, newValue);
|
|
136
|
+
getSig(this).set(newValue);
|
|
104
137
|
if (options.reflect) {
|
|
105
|
-
|
|
138
|
+
syncAttribute(this, options, key, newValue);
|
|
106
139
|
}
|
|
107
140
|
},
|
|
108
|
-
init
|
|
109
|
-
options.type ??= detectAttributeType(newValue);
|
|
110
|
-
return newValue;
|
|
111
|
-
},
|
|
141
|
+
init,
|
|
112
142
|
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
get() {
|
|
146
|
+
return value.get.call(this);
|
|
147
|
+
},
|
|
148
|
+
set(newValue) {
|
|
149
|
+
value.set.call(this, newValue);
|
|
150
|
+
if (options.reflect) {
|
|
151
|
+
syncAttribute(this, options, key, newValue);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
init,
|
|
113
155
|
};
|
|
114
156
|
}
|
|
115
157
|
//# sourceMappingURL=attribute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/decorators/attribute.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/decorators/attribute.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ import { customElement } from "lit/decorators.js";
|
|
|
36
36
|
import { expect, test } from "vitest";
|
|
37
37
|
import { attribute, Component } from "../component";
|
|
38
38
|
import { Signal } from "@bodil/signal";
|
|
39
|
+
import { attributeGetter, attributeSetter } from "./attribute";
|
|
39
40
|
test("@attribute", async () => {
|
|
40
41
|
let AttributeTestClass = (() => {
|
|
41
42
|
let _classDecorators = [customElement("attribute-test-class")];
|
|
@@ -145,4 +146,70 @@ test("@attribute", async () => {
|
|
|
145
146
|
expect(t.hide).toBe("yes");
|
|
146
147
|
expect(t.getAttribute("hide")).toBe("yes");
|
|
147
148
|
});
|
|
149
|
+
test("@attribute getter/setter", async () => {
|
|
150
|
+
let AttributeGetterTestClass = (() => {
|
|
151
|
+
let _classDecorators = [customElement("attribute-getter-test-class")];
|
|
152
|
+
let _classDescriptor;
|
|
153
|
+
let _classExtraInitializers = [];
|
|
154
|
+
let _classThis;
|
|
155
|
+
let _classSuper = Component;
|
|
156
|
+
let _instanceExtraInitializers = [];
|
|
157
|
+
let _get_value_decorators;
|
|
158
|
+
let _set_value_decorators;
|
|
159
|
+
let _get_unsynced_decorators;
|
|
160
|
+
let _set_unsynced_decorators;
|
|
161
|
+
var AttributeGetterTestClass = class extends _classSuper {
|
|
162
|
+
static { _classThis = this; }
|
|
163
|
+
static {
|
|
164
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
165
|
+
_get_value_decorators = [attributeGetter];
|
|
166
|
+
_set_value_decorators = [attributeSetter];
|
|
167
|
+
_get_unsynced_decorators = [attributeGetter({ reflect: false })];
|
|
168
|
+
_set_unsynced_decorators = [attributeSetter({ reflect: false })];
|
|
169
|
+
__esDecorate(this, null, _get_value_decorators, { kind: "getter", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
170
|
+
__esDecorate(this, null, _set_value_decorators, { kind: "setter", name: "value", static: false, private: false, access: { has: obj => "value" in obj, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
171
|
+
__esDecorate(this, null, _get_unsynced_decorators, { kind: "getter", name: "unsynced", static: false, private: false, access: { has: obj => "unsynced" in obj, get: obj => obj.unsynced }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
172
|
+
__esDecorate(this, null, _set_unsynced_decorators, { kind: "setter", name: "unsynced", static: false, private: false, access: { has: obj => "unsynced" in obj, set: (obj, value) => { obj.unsynced = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
173
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
174
|
+
AttributeGetterTestClass = _classThis = _classDescriptor.value;
|
|
175
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
176
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
177
|
+
}
|
|
178
|
+
#value = (__runInitializers(this, _instanceExtraInitializers), "Mike");
|
|
179
|
+
get value() {
|
|
180
|
+
return this.#value;
|
|
181
|
+
}
|
|
182
|
+
set value(value) {
|
|
183
|
+
this.#value = value;
|
|
184
|
+
}
|
|
185
|
+
#unsynced = "Mike";
|
|
186
|
+
get unsynced() {
|
|
187
|
+
return this.#unsynced;
|
|
188
|
+
}
|
|
189
|
+
set unsynced(value) {
|
|
190
|
+
this.#unsynced = value;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
return AttributeGetterTestClass = _classThis;
|
|
194
|
+
})();
|
|
195
|
+
const t = document.createElement("attribute-getter-test-class");
|
|
196
|
+
document.body.append(t);
|
|
197
|
+
await t.updateComplete;
|
|
198
|
+
expect(t.value).toBe("Mike");
|
|
199
|
+
expect(t.getAttribute("value")).toBe("Mike");
|
|
200
|
+
t.setAttribute("value", "Joe");
|
|
201
|
+
expect(t.value).toBe("Joe");
|
|
202
|
+
expect(t.getAttribute("value")).toBe("Joe");
|
|
203
|
+
t.value = "Robert";
|
|
204
|
+
expect(t.value).toBe("Robert");
|
|
205
|
+
expect(t.getAttribute("value")).toBe("Robert");
|
|
206
|
+
expect(t.unsynced).toBe("Mike");
|
|
207
|
+
expect(t.getAttribute("unsynced")).toBe(null);
|
|
208
|
+
t.setAttribute("unsynced", "Joe");
|
|
209
|
+
expect(t.unsynced).toBe("Joe");
|
|
210
|
+
expect(t.getAttribute("unsynced")).toBe("Joe");
|
|
211
|
+
t.unsynced = "Robert";
|
|
212
|
+
expect(t.unsynced).toBe("Robert");
|
|
213
|
+
expect(t.getAttribute("unsynced")).toBe("Joe");
|
|
214
|
+
});
|
|
148
215
|
//# sourceMappingURL=attribute.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.test.js","sourceRoot":"","sources":["../../src/decorators/attribute.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"attribute.test.js","sourceRoot":"","sources":["../../src/decorators/attribute.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/D,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAEpB,kBAAkB;gCADvB,aAAa,CAAC,sBAAsB,CAAC;;;;0BACL,SAAS;;;;;;;;;;;;;;;;sCAAjB,SAAQ,WAAS;;;;sCACrC,SAAS;sCACT,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAC3B,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oCAC5B,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;oCAC5C,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAJnB,uKAAS,MAAM,6BAAN,MAAM,uFAA6B;gBAC1B,uKAAS,MAAM,6BAAN,MAAM,uFAAyB;gBACvC,gLAAS,SAAS,6BAAT,SAAS,6FAA8B;gBAChC,iKAAS,IAAI,6BAAJ,IAAI,mFAA6B;gBACzD,iKAAS,IAAI,6BAAJ,IAAI,mFAA4B;gBAL5E,6KAMC;;;gBANK,uDAAkB;;YACT,QAAQ,CAAC,MAAM,iDAAuB,KAAK,EAAC;YAC1B,QAAQ,CAAC,MAAM,sGAAuB,CAAC,GAAC;YACvC,QAAQ,CAAC,SAAS,yGAAwB,KAAK,GAAC;YAChC,QAAQ,CAAC,IAAI,uGAAuB,KAAK,GAAC;YACzD,QAAQ,CAAC,IAAI,kGAAuB,IAAI,GAAC;;;;;;;;IAG5E,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAuB,CAAC;IAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,CAAC,CAAC,cAAc,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAClB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACjC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;IACrB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACjC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3C,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjD,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACjC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjD,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;IACnF,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;IAClB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAElC,wBAAwB;gCAD7B,aAAa,CAAC,6BAA6B,CAAC;;;;0BACN,SAAS;;;;;;4CAAjB,SAAQ,WAAS;;;;yCAE3C,eAAe;yCAGf,eAAe;4CAKf,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;4CAGnC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAXnB,sKAAI,KAAK,6DAEzB;gBACgB,iLAAI,KAAK,wEAEzB;gBAGoC,+KAAI,QAAQ,6DAEhD;gBACoC,0LAAI,QAAQ,wEAEhD;gBAfL,6KAgBC;;;gBAhBK,uDAAwB;;YAC1B,MAAM,IADJ,mDAAwB,EACjB,MAAM,EAAC;YACC,IAAI,KAAK;gBACtB,OAAO,IAAI,CAAC,MAAM,CAAC;YACvB,CAAC;YACgB,IAAI,KAAK,CAAC,KAAa;gBACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,SAAS,GAAG,MAAM,CAAC;YACkB,IAAI,QAAQ;gBAC7C,OAAO,IAAI,CAAC,SAAS,CAAC;YAC1B,CAAC;YACoC,IAAI,QAAQ,CAAC,KAAa;gBAC3D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAC3B,CAAC;;;;IAGL,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAA6B,CAAC;IAC5F,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,CAAC,CAAC,cAAc,CAAC;IAEvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE5C,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;IACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9C,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/C,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Signal } from "@bodil/signal";
|
|
2
2
|
import type { Component } from "../component";
|
|
3
|
+
import type { ClassGetterDecoratorResult, ClassGetterDecoratorTarget } from "./types";
|
|
3
4
|
export declare const reactiveFields: unique symbol;
|
|
4
5
|
export declare function signalForObject(obj: object, key: string | symbol, createSignal: () => Signal<unknown>): Signal<unknown>;
|
|
5
6
|
export declare function reactive<C extends object, T>(value: ClassAccessorDecoratorTarget<C, T>, context: ClassAccessorDecoratorContext<C, T>): ClassAccessorDecoratorResult<C, T>;
|
|
6
|
-
export declare function reactive<C extends object, T>(value:
|
|
7
|
+
export declare function reactive<C extends object, T>(value: ClassGetterDecoratorTarget<C, T>, context: ClassGetterDecoratorContext<C, T>): ClassGetterDecoratorResult<C, T>;
|
|
7
8
|
export declare function reactive<C extends Component, T>(value: undefined, context: ClassFieldDecoratorContext<C, T>): undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../src/decorators/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../src/decorators/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,OAAO,EAAgD,CAAC;AAEhF,MAAM,UAAU,eAAe,CAC3B,GAAW,EACX,GAAoB,EACpB,YAAmC;IAEnC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,EAAE,CAAC;QACV,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAChB,OAAO,GAAG,CAAC;AACf,CAAC;AAcD,MAAM,UAAU,QAAQ,CACpB,KAAiE,EACjE,OAGsC;IAEtC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3B,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CACpC,MAAM,CAAE,KAAkD,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACtE,MAAM,EAAE,MAAM,CAAC,EAAE;aACpB,CAAC,CACc,CAAC;YACzB,OAAO;gBACH,GAAG;oBACC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC;gBACD,GAAG,CAAC,KAAQ;oBACR,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;aACJ,CAAC;QACN,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3B,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,KAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAC7E,CAAC;YACN,OAAO,SAAS,GAAG;gBACf,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAO,CAAC;YACnC,CAAC,CAAC;QACN,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,EAAmB,CAAC;YAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ClassGetterDecoratorTarget<_C, T> = () => T;
|
|
2
|
+
export type ClassGetterDecoratorResult<_C, T> = (() => T) | void;
|
|
3
|
+
export type ClassSetterDecoratorTarget<_C, T> = (value: T) => void;
|
|
4
|
+
export type ClassSetterDecoratorResult<_C, T> = ((value: T) => void) | void;
|
|
5
|
+
export type ClassAccessorDecoratorFunction<C, T> = (value: ClassAccessorDecoratorTarget<C, T>, context: ClassAccessorDecoratorContext<C, T>) => ClassAccessorDecoratorResult<C, T>;
|
|
6
|
+
export type ClassGetterDecoratorFunction<C, T> = (value: ClassGetterDecoratorTarget<C, T>, context: ClassGetterDecoratorContext<C, T>) => ClassGetterDecoratorResult<C, T>;
|
|
7
|
+
export type ClassSetterDecoratorFunction<C, T> = (value: ClassSetterDecoratorTarget<C, T>, context: ClassSetterDecoratorContext<C, T>) => ClassSetterDecoratorResult<C, T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/decorators/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/src/component.ts
CHANGED
|
@@ -16,13 +16,7 @@ import {
|
|
|
16
16
|
} from "lit";
|
|
17
17
|
import type { Constructor } from "type-fest";
|
|
18
18
|
|
|
19
|
-
import {
|
|
20
|
-
attributeConfig,
|
|
21
|
-
detectAttributeType,
|
|
22
|
-
fromAttribute,
|
|
23
|
-
toAttribute,
|
|
24
|
-
type AttributeConfig,
|
|
25
|
-
} from "./decorators/attribute";
|
|
19
|
+
import { attributeConfig, fromAttribute, type AttributeConfig } from "./decorators/attribute";
|
|
26
20
|
import { connectedJobs } from "./decorators/connect";
|
|
27
21
|
import { reactiveFields, signalForObject } from "./decorators/reactive";
|
|
28
22
|
import { requiredProperties } from "./decorators/require";
|
|
@@ -39,7 +33,13 @@ import {
|
|
|
39
33
|
} from "./slot";
|
|
40
34
|
|
|
41
35
|
export type { ReactiveController, ReactiveControllerHost } from "lit";
|
|
42
|
-
export {
|
|
36
|
+
export {
|
|
37
|
+
attribute,
|
|
38
|
+
attributeGetter,
|
|
39
|
+
attributeSetter,
|
|
40
|
+
type AttributeOptions,
|
|
41
|
+
type AttributeGetterSetterOptions,
|
|
42
|
+
} from "./decorators/attribute";
|
|
43
43
|
export {
|
|
44
44
|
connect,
|
|
45
45
|
connectEffect,
|
|
@@ -180,9 +180,8 @@ export abstract class Component
|
|
|
180
180
|
super();
|
|
181
181
|
|
|
182
182
|
// set up reactive fields, because decorators can't do this themselves
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
>) ?? []) {
|
|
183
|
+
const fields = this.constructor[Symbol.metadata]?.[reactiveFields] ?? [];
|
|
184
|
+
for (const field of fields as Iterable<string | symbol>) {
|
|
186
185
|
const sig = signalForObject(this, field, () =>
|
|
187
186
|
Signal(undefined, { equals: Object.is }),
|
|
188
187
|
) as Signal.State<unknown>;
|
|
@@ -211,14 +210,6 @@ export abstract class Component
|
|
|
211
210
|
this.#controllers.forEach((c) => c.hostConnected?.());
|
|
212
211
|
this.#rootPart?.setConnected(true);
|
|
213
212
|
|
|
214
|
-
for (const [key, config] of (
|
|
215
|
-
this.constructor as typeof Component
|
|
216
|
-
).attributeConfig.entries()) {
|
|
217
|
-
if (config.reflect) {
|
|
218
|
-
this.syncAttribute(key, config);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
213
|
for (const job of connectedJobs(this)) {
|
|
223
214
|
const result = job.call(this);
|
|
224
215
|
const items = isNullish(result)
|
|
@@ -280,26 +271,6 @@ export abstract class Component
|
|
|
280
271
|
this[attrConfig.property as keyof this] = value as any;
|
|
281
272
|
}
|
|
282
273
|
|
|
283
|
-
private syncAttribute(name: string, config?: AttributeConfig) {
|
|
284
|
-
if (this.isConnected) {
|
|
285
|
-
config ??= (this.constructor as typeof Component).attributeConfig.get(name);
|
|
286
|
-
assert(config !== undefined);
|
|
287
|
-
if (config.reflect) {
|
|
288
|
-
const realValue = this[config.property as keyof this];
|
|
289
|
-
config.type ??= detectAttributeType(realValue);
|
|
290
|
-
const value = toAttribute(realValue, present(config.type));
|
|
291
|
-
const oldValue = this.getAttribute(name);
|
|
292
|
-
if (value !== oldValue) {
|
|
293
|
-
if (value === null) {
|
|
294
|
-
this.removeAttribute(name);
|
|
295
|
-
} else {
|
|
296
|
-
this.setAttribute(name, value);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
274
|
$signal<K extends keyof this & string, V extends this[K]>(prop: K): Signal<V> {
|
|
304
275
|
const _value = this[prop];
|
|
305
276
|
return signalForObject(this, prop, () => {
|
|
@@ -3,6 +3,7 @@ import { expect, test } from "vitest";
|
|
|
3
3
|
|
|
4
4
|
import { attribute, Component } from "../component";
|
|
5
5
|
import { Signal } from "@bodil/signal";
|
|
6
|
+
import { attributeGetter, attributeSetter } from "./attribute";
|
|
6
7
|
|
|
7
8
|
test("@attribute", async () => {
|
|
8
9
|
@customElement("attribute-test-class")
|
|
@@ -75,3 +76,50 @@ test("@attribute", async () => {
|
|
|
75
76
|
expect(t.hide).toBe("yes");
|
|
76
77
|
expect(t.getAttribute("hide")).toBe("yes");
|
|
77
78
|
});
|
|
79
|
+
|
|
80
|
+
test("@attribute getter/setter", async () => {
|
|
81
|
+
@customElement("attribute-getter-test-class")
|
|
82
|
+
class AttributeGetterTestClass extends Component {
|
|
83
|
+
#value = "Mike";
|
|
84
|
+
@attributeGetter get value(): string {
|
|
85
|
+
return this.#value;
|
|
86
|
+
}
|
|
87
|
+
@attributeSetter set value(value: string) {
|
|
88
|
+
this.#value = value;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#unsynced = "Mike";
|
|
92
|
+
@attributeGetter({ reflect: false }) get unsynced(): string {
|
|
93
|
+
return this.#unsynced;
|
|
94
|
+
}
|
|
95
|
+
@attributeSetter({ reflect: false }) set unsynced(value: string) {
|
|
96
|
+
this.#unsynced = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const t = document.createElement("attribute-getter-test-class") as AttributeGetterTestClass;
|
|
101
|
+
document.body.append(t);
|
|
102
|
+
await t.updateComplete;
|
|
103
|
+
|
|
104
|
+
expect(t.value).toBe("Mike");
|
|
105
|
+
expect(t.getAttribute("value")).toBe("Mike");
|
|
106
|
+
|
|
107
|
+
t.setAttribute("value", "Joe");
|
|
108
|
+
expect(t.value).toBe("Joe");
|
|
109
|
+
expect(t.getAttribute("value")).toBe("Joe");
|
|
110
|
+
|
|
111
|
+
t.value = "Robert";
|
|
112
|
+
expect(t.value).toBe("Robert");
|
|
113
|
+
expect(t.getAttribute("value")).toBe("Robert");
|
|
114
|
+
|
|
115
|
+
expect(t.unsynced).toBe("Mike");
|
|
116
|
+
expect(t.getAttribute("unsynced")).toBe(null);
|
|
117
|
+
|
|
118
|
+
t.setAttribute("unsynced", "Joe");
|
|
119
|
+
expect(t.unsynced).toBe("Joe");
|
|
120
|
+
expect(t.getAttribute("unsynced")).toBe("Joe");
|
|
121
|
+
|
|
122
|
+
t.unsynced = "Robert";
|
|
123
|
+
expect(t.unsynced).toBe("Robert");
|
|
124
|
+
expect(t.getAttribute("unsynced")).toBe("Joe");
|
|
125
|
+
});
|
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
2
2
|
|
|
3
|
-
import { isNullish, unreachable } from "@bodil/core/assert";
|
|
3
|
+
import { assertNever, isNullish, present, unreachable } from "@bodil/core/assert";
|
|
4
4
|
import { Signal } from "@bodil/signal";
|
|
5
5
|
|
|
6
6
|
import type { Component } from "../component";
|
|
7
7
|
import { signalForObject } from "./reactive";
|
|
8
|
+
import type {
|
|
9
|
+
ClassAccessorDecoratorFunction,
|
|
10
|
+
ClassGetterDecoratorFunction,
|
|
11
|
+
ClassGetterDecoratorResult,
|
|
12
|
+
ClassGetterDecoratorTarget,
|
|
13
|
+
ClassSetterDecoratorFunction,
|
|
14
|
+
ClassSetterDecoratorResult,
|
|
15
|
+
ClassSetterDecoratorTarget,
|
|
16
|
+
} from "./types";
|
|
8
17
|
|
|
9
18
|
export const attributeConfig = Symbol("attributeConfig");
|
|
10
19
|
|
|
11
20
|
export type AttributeType = typeof String | typeof Number | typeof Boolean;
|
|
12
21
|
|
|
13
|
-
export type
|
|
22
|
+
export type AttributeGetterSetterOptions = {
|
|
23
|
+
type: AttributeType | undefined;
|
|
14
24
|
name: string | undefined;
|
|
15
25
|
reflect: boolean;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type AttributeOptions = AttributeGetterSetterOptions & {
|
|
16
29
|
reactive: boolean;
|
|
17
30
|
};
|
|
18
31
|
|
|
19
32
|
export type AttributeConfig = {
|
|
20
|
-
type: AttributeType | undefined;
|
|
21
33
|
property: string;
|
|
22
34
|
} & AttributeOptions;
|
|
23
35
|
|
|
@@ -67,46 +79,102 @@ export function fromAttribute(
|
|
|
67
79
|
}
|
|
68
80
|
}
|
|
69
81
|
|
|
70
|
-
export function detectAttributeType(value: unknown): AttributeType | undefined {
|
|
71
|
-
switch (typeof value) {
|
|
72
|
-
case "string":
|
|
73
|
-
return String;
|
|
74
|
-
case "number":
|
|
75
|
-
return Number;
|
|
76
|
-
case "boolean":
|
|
77
|
-
return Boolean;
|
|
78
|
-
default:
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
82
|
function toKebabCase(s: string): string {
|
|
84
83
|
return s.replace(/((?<=[a-z\d])[A-Z]|(?<=[A-Z\d])[A-Z](?=[a-z]))/g, "-$1").toLowerCase();
|
|
85
84
|
}
|
|
86
85
|
|
|
86
|
+
type AttributeDecoratorTarget<C, T> =
|
|
87
|
+
| ClassAccessorDecoratorTarget<C, T>
|
|
88
|
+
| ClassGetterDecoratorTarget<C, T>
|
|
89
|
+
| ClassSetterDecoratorTarget<C, T>;
|
|
90
|
+
|
|
91
|
+
type AttributeDecoratorResult<C, T> =
|
|
92
|
+
| ClassAccessorDecoratorResult<C, T>
|
|
93
|
+
| ClassGetterDecoratorResult<C, T>
|
|
94
|
+
| ClassSetterDecoratorResult<C, T>;
|
|
95
|
+
|
|
96
|
+
type AttributeDecoratorContext<C, T> =
|
|
97
|
+
| ClassAccessorDecoratorContext<C, T>
|
|
98
|
+
| ClassGetterDecoratorContext<C, T>
|
|
99
|
+
| ClassSetterDecoratorContext<C, T>;
|
|
100
|
+
|
|
101
|
+
type AttributeDecoratorFunction<C, T> =
|
|
102
|
+
| ClassAccessorDecoratorFunction<C, T>
|
|
103
|
+
| ClassGetterDecoratorFunction<C, T>
|
|
104
|
+
| ClassSetterDecoratorFunction<C, T>;
|
|
105
|
+
|
|
106
|
+
// Getter with number type
|
|
107
|
+
export function attributeGetter<C extends Component, T extends number | undefined>(
|
|
108
|
+
options: Partial<AttributeOptions> & { type: typeof Number },
|
|
109
|
+
): ClassGetterDecoratorFunction<C, T>;
|
|
110
|
+
|
|
111
|
+
// Getter with boolean type
|
|
112
|
+
export function attributeGetter<C extends Component, T extends boolean | undefined>(
|
|
113
|
+
options: Partial<AttributeOptions> & { type: typeof Boolean },
|
|
114
|
+
): ClassGetterDecoratorFunction<C, T>;
|
|
115
|
+
|
|
116
|
+
// Getter with string type
|
|
117
|
+
export function attributeGetter<C extends Component, T extends string | undefined>(
|
|
118
|
+
options: Partial<AttributeOptions>,
|
|
119
|
+
): ClassGetterDecoratorFunction<C, T>;
|
|
120
|
+
|
|
121
|
+
// Getter with no options
|
|
122
|
+
export function attributeGetter<C extends Component, T extends string | undefined>(
|
|
123
|
+
value: ClassGetterDecoratorTarget<C, T>,
|
|
124
|
+
context: ClassGetterDecoratorContext<C, T>,
|
|
125
|
+
): ClassGetterDecoratorResult<C, T>;
|
|
126
|
+
|
|
127
|
+
export function attributeGetter<C extends Component, T>(
|
|
128
|
+
valueOrOptions?: ClassGetterDecoratorTarget<C, T> | Partial<AttributeGetterSetterOptions>,
|
|
129
|
+
context?: ClassGetterDecoratorContext<C, T>,
|
|
130
|
+
): ClassGetterDecoratorResult<C, T> | ClassGetterDecoratorFunction<C, T> {
|
|
131
|
+
//@ts-ignore
|
|
132
|
+
return attribute(valueOrOptions, context);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Setter with number type
|
|
136
|
+
export function attributeSetter<C extends Component, T extends number | undefined>(
|
|
137
|
+
options: Partial<AttributeOptions> & { type: typeof Number },
|
|
138
|
+
): ClassSetterDecoratorFunction<C, T>;
|
|
139
|
+
|
|
140
|
+
// Setter with boolean type
|
|
141
|
+
export function attributeSetter<C extends Component, T extends boolean | undefined>(
|
|
142
|
+
options: Partial<AttributeOptions> & { type: typeof Boolean },
|
|
143
|
+
): ClassSetterDecoratorFunction<C, T>;
|
|
144
|
+
|
|
145
|
+
// Setter with string type
|
|
146
|
+
export function attributeSetter<C extends Component, T extends string | undefined>(
|
|
147
|
+
options: Partial<AttributeOptions>,
|
|
148
|
+
): ClassSetterDecoratorFunction<C, T>;
|
|
149
|
+
|
|
150
|
+
// Setter with no options
|
|
151
|
+
export function attributeSetter<C extends Component, T extends string | undefined>(
|
|
152
|
+
value: ClassSetterDecoratorTarget<C, T>,
|
|
153
|
+
context: ClassSetterDecoratorContext<C, T>,
|
|
154
|
+
): ClassSetterDecoratorResult<C, T>;
|
|
155
|
+
|
|
156
|
+
export function attributeSetter<C extends Component, T>(
|
|
157
|
+
valueOrOptions?: ClassSetterDecoratorTarget<C, T> | Partial<AttributeGetterSetterOptions>,
|
|
158
|
+
context?: ClassSetterDecoratorContext<C, T>,
|
|
159
|
+
): ClassSetterDecoratorResult<C, T> | ClassSetterDecoratorFunction<C, T> {
|
|
160
|
+
//@ts-ignore
|
|
161
|
+
return attribute(valueOrOptions, context);
|
|
162
|
+
}
|
|
163
|
+
|
|
87
164
|
// Accessor with number type
|
|
88
165
|
export function attribute<C extends Component, T extends number | undefined>(
|
|
89
166
|
options: Partial<AttributeOptions> & { type: typeof Number },
|
|
90
|
-
):
|
|
91
|
-
value: ClassAccessorDecoratorTarget<C, T>,
|
|
92
|
-
context: ClassAccessorDecoratorContext<C, T>,
|
|
93
|
-
) => ClassAccessorDecoratorResult<C, T>;
|
|
167
|
+
): ClassAccessorDecoratorFunction<C, T>;
|
|
94
168
|
|
|
95
169
|
// Accessor with boolean type
|
|
96
170
|
export function attribute<C extends Component, T extends boolean | undefined>(
|
|
97
171
|
options: Partial<AttributeOptions> & { type: typeof Boolean },
|
|
98
|
-
):
|
|
99
|
-
value: ClassAccessorDecoratorTarget<C, T>,
|
|
100
|
-
context: ClassAccessorDecoratorContext<C, T>,
|
|
101
|
-
) => ClassAccessorDecoratorResult<C, T>;
|
|
172
|
+
): ClassAccessorDecoratorFunction<C, T>;
|
|
102
173
|
|
|
103
174
|
// Accessor with string type
|
|
104
175
|
export function attribute<C extends Component, T extends string | undefined>(
|
|
105
176
|
options: Partial<AttributeOptions>,
|
|
106
|
-
):
|
|
107
|
-
value: ClassAccessorDecoratorTarget<C, T>,
|
|
108
|
-
context: ClassAccessorDecoratorContext<C, T>,
|
|
109
|
-
) => ClassAccessorDecoratorResult<C, T>;
|
|
177
|
+
): ClassAccessorDecoratorFunction<C, T>;
|
|
110
178
|
|
|
111
179
|
// Accessor with no options
|
|
112
180
|
export function attribute<C extends Component, T extends string | undefined>(
|
|
@@ -115,22 +183,18 @@ export function attribute<C extends Component, T extends string | undefined>(
|
|
|
115
183
|
): ClassAccessorDecoratorResult<C, T>;
|
|
116
184
|
|
|
117
185
|
export function attribute<C extends Component, T extends string | number | boolean | undefined>(
|
|
118
|
-
valueOrOptions?:
|
|
119
|
-
context?:
|
|
120
|
-
):
|
|
121
|
-
| ClassAccessorDecoratorResult<C, T>
|
|
122
|
-
| ((
|
|
123
|
-
value: ClassAccessorDecoratorTarget<C, T>,
|
|
124
|
-
context: ClassAccessorDecoratorContext<C, T>,
|
|
125
|
-
) => ClassAccessorDecoratorResult<C, T>) {
|
|
186
|
+
valueOrOptions?: AttributeDecoratorTarget<C, T> | Partial<AttributeOptions>,
|
|
187
|
+
context?: AttributeDecoratorContext<C, T>,
|
|
188
|
+
): AttributeDecoratorResult<C, T> | AttributeDecoratorFunction<C, T> {
|
|
126
189
|
if (context !== undefined) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
T
|
|
130
|
-
>;
|
|
190
|
+
//@ts-ignore
|
|
191
|
+
return attribute({})(valueOrOptions, context);
|
|
131
192
|
}
|
|
132
193
|
|
|
133
|
-
return (
|
|
194
|
+
return (
|
|
195
|
+
value: AttributeDecoratorTarget<C, T>,
|
|
196
|
+
context: AttributeDecoratorContext<C, T>,
|
|
197
|
+
): any => {
|
|
134
198
|
if (typeof context.name !== "string") {
|
|
135
199
|
throw new TypeError(
|
|
136
200
|
`Can't declare a ${typeof context.name} as an attribute (${JSON.stringify(context.name)})`,
|
|
@@ -141,7 +205,7 @@ export function attribute<C extends Component, T extends string | number | boole
|
|
|
141
205
|
...{
|
|
142
206
|
type: String,
|
|
143
207
|
property: context.name,
|
|
144
|
-
reactive:
|
|
208
|
+
reactive: context.kind === "accessor",
|
|
145
209
|
reflect: true,
|
|
146
210
|
},
|
|
147
211
|
...((valueOrOptions as AttributeConfig) ?? {}),
|
|
@@ -153,45 +217,119 @@ export function attribute<C extends Component, T extends string | number | boole
|
|
|
153
217
|
const key = options.name ?? toKebabCase(context.name);
|
|
154
218
|
attrs.set(key, options);
|
|
155
219
|
|
|
220
|
+
if (context.kind === "accessor") {
|
|
221
|
+
return accessor(options, context, key, value as ClassAccessorDecoratorTarget<C, T>);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// ensure getters/setters aren't configured as reactive
|
|
156
225
|
if (options.reactive) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return
|
|
164
|
-
get(): T {
|
|
165
|
-
return getSig(this).get();
|
|
166
|
-
},
|
|
167
|
-
set(newValue: T) {
|
|
168
|
-
options.type ??= detectAttributeType(newValue);
|
|
169
|
-
getSig(this).set(newValue);
|
|
170
|
-
if (options.reflect) {
|
|
171
|
-
(this as any).syncAttribute(key);
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
init(newValue: T): T {
|
|
175
|
-
options.type ??= detectAttributeType(newValue);
|
|
176
|
-
return newValue;
|
|
177
|
-
},
|
|
178
|
-
} as ClassAccessorDecoratorResult<C, T>;
|
|
226
|
+
throw new TypeError(
|
|
227
|
+
`Getter/setter attributes cannot be declared with reactive: true (on ${JSON.stringify(context.name)})`,
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (context.kind === "setter") {
|
|
232
|
+
return setter(options, context, key, value as ClassSetterDecoratorTarget<C, T>);
|
|
179
233
|
}
|
|
234
|
+
|
|
235
|
+
if (context.kind === "getter") {
|
|
236
|
+
return getter(options, context, key);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
assertNever(context);
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function syncAttribute<C extends Component, T>(
|
|
244
|
+
target: C,
|
|
245
|
+
options: AttributeConfig,
|
|
246
|
+
key: string,
|
|
247
|
+
value: T,
|
|
248
|
+
) {
|
|
249
|
+
const attributeValue = toAttribute(value, present(options.type));
|
|
250
|
+
const oldValue = target.getAttribute(key);
|
|
251
|
+
if (attributeValue !== oldValue) {
|
|
252
|
+
if (attributeValue === null) {
|
|
253
|
+
target.removeAttribute(key);
|
|
254
|
+
} else {
|
|
255
|
+
target.setAttribute(key, attributeValue);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function getter<C extends Component, T>(
|
|
261
|
+
options: AttributeConfig,
|
|
262
|
+
context: ClassGetterDecoratorContext<C, T>,
|
|
263
|
+
key: string,
|
|
264
|
+
): ClassGetterDecoratorResult<C, T> {
|
|
265
|
+
if (options.reflect) {
|
|
266
|
+
context.addInitializer(function (this: C) {
|
|
267
|
+
queueMicrotask(() => {
|
|
268
|
+
syncAttribute(this, options, key, (this as any)[context.name]);
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
function setter<C extends Component, T>(
|
|
275
|
+
options: AttributeConfig,
|
|
276
|
+
context: ClassSetterDecoratorContext<C, T>,
|
|
277
|
+
key: string,
|
|
278
|
+
value: ClassSetterDecoratorTarget<C, T>,
|
|
279
|
+
): ClassSetterDecoratorResult<C, T> {
|
|
280
|
+
if (options.reflect) {
|
|
281
|
+
return function set(this: C, newValue: T) {
|
|
282
|
+
value.call(this, newValue);
|
|
283
|
+
syncAttribute(this, options, key, (this as any)[context.name] as T);
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function accessor<C extends Component, T>(
|
|
289
|
+
options: AttributeConfig,
|
|
290
|
+
context: ClassAccessorDecoratorContext<C, T>,
|
|
291
|
+
key: string,
|
|
292
|
+
value: ClassAccessorDecoratorTarget<C, T>,
|
|
293
|
+
): ClassAccessorDecoratorResult<C, T> {
|
|
294
|
+
const init = function init(this: C, value: T): T {
|
|
295
|
+
if (options.reflect) {
|
|
296
|
+
queueMicrotask(() => {
|
|
297
|
+
syncAttribute(this, options, key, value);
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
return value;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
if (options.reactive) {
|
|
304
|
+
const getSig = (obj: object) =>
|
|
305
|
+
signalForObject(obj, context.name, () =>
|
|
306
|
+
Signal((value as ClassAccessorDecoratorTarget<unknown, T>).get.call(obj), {
|
|
307
|
+
equals: Object.is,
|
|
308
|
+
}),
|
|
309
|
+
) as Signal.State<T>;
|
|
180
310
|
return {
|
|
181
311
|
get(): T {
|
|
182
|
-
return
|
|
312
|
+
return getSig(this).get();
|
|
183
313
|
},
|
|
184
314
|
set(newValue: T) {
|
|
185
|
-
|
|
186
|
-
value.set.call(this, newValue);
|
|
315
|
+
getSig(this).set(newValue);
|
|
187
316
|
if (options.reflect) {
|
|
188
|
-
(this
|
|
317
|
+
syncAttribute(this, options, key, newValue);
|
|
189
318
|
}
|
|
190
319
|
},
|
|
191
|
-
init
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
320
|
+
init,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
get(): T {
|
|
325
|
+
return value.get.call(this);
|
|
326
|
+
},
|
|
327
|
+
set(newValue: T) {
|
|
328
|
+
value.set.call(this, newValue);
|
|
329
|
+
if (options.reflect) {
|
|
330
|
+
syncAttribute(this, options, key, newValue);
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
init,
|
|
196
334
|
};
|
|
197
335
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Signal } from "@bodil/signal";
|
|
2
2
|
|
|
3
3
|
import type { Component } from "../component";
|
|
4
|
+
import type { ClassGetterDecoratorResult, ClassGetterDecoratorTarget } from "./types";
|
|
4
5
|
|
|
5
6
|
export const reactiveFields = Symbol("reactiveFields");
|
|
6
7
|
|
|
@@ -29,9 +30,9 @@ export function reactive<C extends object, T>(
|
|
|
29
30
|
context: ClassAccessorDecoratorContext<C, T>,
|
|
30
31
|
): ClassAccessorDecoratorResult<C, T>;
|
|
31
32
|
export function reactive<C extends object, T>(
|
|
32
|
-
value:
|
|
33
|
+
value: ClassGetterDecoratorTarget<C, T>,
|
|
33
34
|
context: ClassGetterDecoratorContext<C, T>,
|
|
34
|
-
):
|
|
35
|
+
): ClassGetterDecoratorResult<C, T>;
|
|
35
36
|
export function reactive<C extends Component, T>(
|
|
36
37
|
value: undefined,
|
|
37
38
|
context: ClassFieldDecoratorContext<C, T>,
|
|
@@ -42,7 +43,7 @@ export function reactive<C extends object, T>(
|
|
|
42
43
|
| ClassAccessorDecoratorContext<C, T>
|
|
43
44
|
| ClassGetterDecoratorContext<C, T>
|
|
44
45
|
| ClassFieldDecoratorContext<C, T>,
|
|
45
|
-
): ClassAccessorDecoratorResult<C, T> |
|
|
46
|
+
): ClassAccessorDecoratorResult<C, T> | ClassGetterDecoratorResult<C, T> | undefined {
|
|
46
47
|
switch (context.kind) {
|
|
47
48
|
case "accessor": {
|
|
48
49
|
const getSig = (obj: object) =>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type ClassGetterDecoratorTarget<_C, T> = () => T;
|
|
2
|
+
export type ClassGetterDecoratorResult<_C, T> = (() => T) | void;
|
|
3
|
+
|
|
4
|
+
export type ClassSetterDecoratorTarget<_C, T> = (value: T) => void;
|
|
5
|
+
export type ClassSetterDecoratorResult<_C, T> = ((value: T) => void) | void;
|
|
6
|
+
|
|
7
|
+
export type ClassAccessorDecoratorFunction<C, T> = (
|
|
8
|
+
value: ClassAccessorDecoratorTarget<C, T>,
|
|
9
|
+
context: ClassAccessorDecoratorContext<C, T>,
|
|
10
|
+
) => ClassAccessorDecoratorResult<C, T>;
|
|
11
|
+
|
|
12
|
+
export type ClassGetterDecoratorFunction<C, T> = (
|
|
13
|
+
value: ClassGetterDecoratorTarget<C, T>,
|
|
14
|
+
context: ClassGetterDecoratorContext<C, T>,
|
|
15
|
+
) => ClassGetterDecoratorResult<C, T>;
|
|
16
|
+
|
|
17
|
+
export type ClassSetterDecoratorFunction<C, T> = (
|
|
18
|
+
value: ClassSetterDecoratorTarget<C, T>,
|
|
19
|
+
context: ClassSetterDecoratorContext<C, T>,
|
|
20
|
+
) => ClassSetterDecoratorResult<C, T>;
|