@rhtml/custom-attributes 0.0.95 → 0.0.96
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 +34 -11
- package/dist/index.d.ts +11 -4
- package/dist/index.js +27 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +37 -21
package/README.md
CHANGED
|
@@ -37,24 +37,47 @@ class BackgroundColor extends Attribute {
|
|
|
37
37
|
customAttributes.define('red', BackgroundColor);
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
####
|
|
40
|
+
#### Usage inside @rxdi/lit-html
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
|
-
|
|
44
|
-
public element: HTMLElement;
|
|
45
|
-
public value: string;
|
|
46
|
-
public name: string;
|
|
43
|
+
import { Component, LitElement, html } from '@rxdi/lit-html';
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
export class BackgroundColor extends Attribute {
|
|
46
|
+
static options(this: HTMLElement) {
|
|
47
|
+
return {
|
|
48
|
+
name: 'myAttribute',
|
|
49
|
+
registry: CustomAttributeRegistry
|
|
50
|
+
};
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
OnInit() {
|
|
54
|
+
console.log('Attribute initialized');
|
|
55
|
+
this.setColor();
|
|
54
56
|
}
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
OnDestroy() {
|
|
59
|
+
console.log('Attribute destroyed');
|
|
60
|
+
this.element.style.backgroundColor = null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
OnUpdate(oldValue: string, newValue: string) {
|
|
64
|
+
console.log('Attribute updated');
|
|
65
|
+
this.setColor();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
setColor() {
|
|
69
|
+
this.element.style.backgroundColor = this.value;
|
|
58
70
|
}
|
|
59
71
|
}
|
|
72
|
+
|
|
73
|
+
@Component({
|
|
74
|
+
selector: 'home-component',
|
|
75
|
+
modifiers: [BackgroundColor],
|
|
76
|
+
template(this: HomeComponent) {
|
|
77
|
+
return html`
|
|
78
|
+
<div myAttribute="red">Background</div>
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
export class HomeComponent extends LitElement {}
|
|
60
83
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
export declare type Constructor<T
|
|
2
|
-
export
|
|
1
|
+
export declare type Constructor<T> = new (...args: never[]) => T;
|
|
2
|
+
export interface Options {
|
|
3
|
+
registry: Constructor<CustomAttributeRegistry>;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class Attribute<T = {}> {
|
|
7
|
+
static options(this: HTMLElement): Options;
|
|
3
8
|
element?: HTMLElement;
|
|
4
9
|
value?: string;
|
|
5
10
|
name?: string;
|
|
11
|
+
parent?: HTMLElement | Document | ShadowRoot;
|
|
12
|
+
setStyles(keys: T): (div: HTMLElement) => void;
|
|
6
13
|
OnInit(): void;
|
|
7
14
|
OnDestroy(): void;
|
|
8
15
|
OnUpdate(_oldValue: string, _newValue: string): void;
|
|
@@ -12,9 +19,9 @@ export declare class CustomAttributeRegistry {
|
|
|
12
19
|
private _attrMap;
|
|
13
20
|
private _elementMap;
|
|
14
21
|
private observer;
|
|
15
|
-
constructor(parent: HTMLElement | ShadowRoot);
|
|
22
|
+
constructor(parent: HTMLElement | Document | ShadowRoot);
|
|
16
23
|
define(attrName: string, Constructor: Constructor<Attribute>): void;
|
|
17
|
-
get(element: HTMLElement, attrName: string): Attribute
|
|
24
|
+
get(element: HTMLElement, attrName: string): Attribute<{}>;
|
|
18
25
|
private getConstructor;
|
|
19
26
|
private observe;
|
|
20
27
|
private upgradeAttribute;
|
package/dist/index.js
CHANGED
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CustomAttributeRegistry = exports.Attribute = void 0;
|
|
4
4
|
class Attribute {
|
|
5
|
+
static options() {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
setStyles(keys) {
|
|
9
|
+
return (div) => {
|
|
10
|
+
for (const [key, value] of Object.entries(keys)) {
|
|
11
|
+
div.style[key] = value;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
5
15
|
OnInit() {
|
|
6
16
|
/* */
|
|
7
17
|
}
|
|
8
18
|
OnDestroy() {
|
|
9
19
|
/* */
|
|
10
20
|
}
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
22
|
OnUpdate(_oldValue, _newValue) {
|
|
12
23
|
/* */
|
|
13
24
|
}
|
|
@@ -24,14 +35,14 @@ class CustomAttributeRegistry {
|
|
|
24
35
|
this.observe();
|
|
25
36
|
}
|
|
26
37
|
define(attrName, Constructor) {
|
|
27
|
-
this._attrMap.set(attrName, Constructor);
|
|
38
|
+
this._attrMap.set(attrName.toLowerCase(), Constructor);
|
|
28
39
|
this.upgradeAttribute(attrName);
|
|
29
40
|
}
|
|
30
41
|
get(element, attrName) {
|
|
31
42
|
const map = this._elementMap.get(element);
|
|
32
43
|
if (!map)
|
|
33
44
|
return;
|
|
34
|
-
return map.get(attrName);
|
|
45
|
+
return map.get(attrName.toLowerCase());
|
|
35
46
|
}
|
|
36
47
|
getConstructor(attrName) {
|
|
37
48
|
return this._attrMap.get(attrName);
|
|
@@ -94,38 +105,39 @@ class CustomAttributeRegistry {
|
|
|
94
105
|
}
|
|
95
106
|
this._elementMap.delete(element);
|
|
96
107
|
}
|
|
97
|
-
found(
|
|
108
|
+
found(attributeName, el, oldVal) {
|
|
98
109
|
let map = this._elementMap.get(el);
|
|
99
110
|
if (!map) {
|
|
100
111
|
map = new Map();
|
|
101
112
|
this._elementMap.set(el, map);
|
|
102
113
|
}
|
|
103
|
-
const modifier = map.get(
|
|
104
|
-
const
|
|
114
|
+
const modifier = map.get(attributeName);
|
|
115
|
+
const attribute = el.getAttribute(attributeName);
|
|
105
116
|
if (!modifier) {
|
|
106
|
-
const Constructor = this.getConstructor(
|
|
117
|
+
const Constructor = this.getConstructor(attributeName);
|
|
107
118
|
const modifier = new Constructor();
|
|
108
|
-
map.set(
|
|
119
|
+
map.set(attributeName, modifier);
|
|
109
120
|
modifier.element = el;
|
|
110
|
-
modifier.name =
|
|
111
|
-
modifier.value =
|
|
121
|
+
modifier.name = attributeName;
|
|
122
|
+
modifier.value = attribute;
|
|
123
|
+
modifier.parent = this.parent;
|
|
112
124
|
if (modifier.OnInit) {
|
|
113
125
|
modifier.OnInit();
|
|
114
126
|
}
|
|
115
127
|
return;
|
|
116
128
|
}
|
|
117
|
-
if (
|
|
118
|
-
modifier.value =
|
|
129
|
+
if (attribute == null && !!modifier.value) {
|
|
130
|
+
modifier.value = attribute;
|
|
119
131
|
if (modifier.OnDestroy) {
|
|
120
132
|
modifier.OnDestroy();
|
|
121
133
|
}
|
|
122
|
-
map.delete(
|
|
134
|
+
map.delete(attributeName);
|
|
123
135
|
return;
|
|
124
136
|
}
|
|
125
|
-
if (
|
|
126
|
-
modifier.value =
|
|
137
|
+
if (attribute !== modifier.value) {
|
|
138
|
+
modifier.value = attribute;
|
|
127
139
|
if (modifier.OnUpdate) {
|
|
128
|
-
modifier.OnUpdate(oldVal,
|
|
140
|
+
modifier.OnUpdate(oldVal, attribute);
|
|
129
141
|
}
|
|
130
142
|
return;
|
|
131
143
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
export type Constructor<T = {}> = new (...args: never[]) => T;
|
|
1
|
+
export type Constructor<T> = new (...args: never[]) => T;
|
|
3
2
|
|
|
4
|
-
export
|
|
3
|
+
export interface Options {
|
|
4
|
+
registry: Constructor<CustomAttributeRegistry>;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export abstract class Attribute<T = {}> {
|
|
9
|
+
public static options(this: HTMLElement): Options {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
5
12
|
public element?: HTMLElement;
|
|
6
13
|
public value?: string;
|
|
7
14
|
public name?: string;
|
|
15
|
+
public parent?: HTMLElement | Document | ShadowRoot;
|
|
16
|
+
setStyles(keys: T) {
|
|
17
|
+
return (div: HTMLElement) => {
|
|
18
|
+
for (const [key, value] of Object.entries(keys)) {
|
|
19
|
+
div.style[key] = value;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
8
23
|
OnInit(): void {
|
|
9
24
|
/* */
|
|
10
25
|
}
|
|
11
26
|
OnDestroy(): void {
|
|
12
27
|
/* */
|
|
13
28
|
}
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
30
|
OnUpdate(_oldValue: string, _newValue: string) {
|
|
15
31
|
/* */
|
|
16
32
|
}
|
|
@@ -24,7 +40,7 @@ export class CustomAttributeRegistry {
|
|
|
24
40
|
> = new WeakMap();
|
|
25
41
|
private observer: MutationObserver;
|
|
26
42
|
|
|
27
|
-
constructor(private parent: HTMLElement | ShadowRoot) {
|
|
43
|
+
constructor(private parent: HTMLElement | Document | ShadowRoot) {
|
|
28
44
|
if (!parent) {
|
|
29
45
|
throw new Error('Must be given a parent element');
|
|
30
46
|
}
|
|
@@ -32,14 +48,14 @@ export class CustomAttributeRegistry {
|
|
|
32
48
|
}
|
|
33
49
|
|
|
34
50
|
define(attrName: string, Constructor: Constructor<Attribute>) {
|
|
35
|
-
this._attrMap.set(attrName, Constructor);
|
|
51
|
+
this._attrMap.set(attrName.toLowerCase(), Constructor);
|
|
36
52
|
this.upgradeAttribute(attrName);
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
get(element: HTMLElement, attrName: string) {
|
|
40
56
|
const map = this._elementMap.get(element);
|
|
41
57
|
if (!map) return;
|
|
42
|
-
return map.get(attrName);
|
|
58
|
+
return map.get(attrName.toLowerCase());
|
|
43
59
|
}
|
|
44
60
|
|
|
45
61
|
private getConstructor(attrName: string) {
|
|
@@ -68,7 +84,6 @@ export class CustomAttributeRegistry {
|
|
|
68
84
|
}
|
|
69
85
|
}
|
|
70
86
|
});
|
|
71
|
-
|
|
72
87
|
this.observer.observe(this.parent, {
|
|
73
88
|
childList: true,
|
|
74
89
|
subtree: true,
|
|
@@ -114,42 +129,43 @@ export class CustomAttributeRegistry {
|
|
|
114
129
|
this._elementMap.delete(element);
|
|
115
130
|
}
|
|
116
131
|
|
|
117
|
-
private found(
|
|
132
|
+
private found(attributeName: string, el: HTMLElement, oldVal?: string) {
|
|
118
133
|
let map = this._elementMap.get(el);
|
|
119
134
|
if (!map) {
|
|
120
135
|
map = new Map();
|
|
121
136
|
this._elementMap.set(el, map);
|
|
122
137
|
}
|
|
123
138
|
|
|
124
|
-
const modifier = map.get(
|
|
125
|
-
const
|
|
139
|
+
const modifier = map.get(attributeName);
|
|
140
|
+
const attribute = el.getAttribute(attributeName);
|
|
126
141
|
|
|
127
142
|
if (!modifier) {
|
|
128
|
-
const Constructor = this.getConstructor(
|
|
143
|
+
const Constructor = this.getConstructor(attributeName);
|
|
129
144
|
const modifier = new Constructor();
|
|
130
|
-
map.set(
|
|
145
|
+
map.set(attributeName, modifier);
|
|
131
146
|
modifier.element = el;
|
|
132
|
-
modifier.name =
|
|
133
|
-
modifier.value =
|
|
147
|
+
modifier.name = attributeName;
|
|
148
|
+
modifier.value = attribute;
|
|
149
|
+
modifier.parent = this.parent;
|
|
150
|
+
|
|
134
151
|
if (modifier.OnInit) {
|
|
135
152
|
modifier.OnInit();
|
|
136
153
|
}
|
|
137
154
|
return;
|
|
138
155
|
}
|
|
139
156
|
|
|
140
|
-
if (
|
|
141
|
-
modifier.value =
|
|
157
|
+
if (attribute == null && !!modifier.value) {
|
|
158
|
+
modifier.value = attribute;
|
|
142
159
|
if (modifier.OnDestroy) {
|
|
143
160
|
modifier.OnDestroy();
|
|
144
161
|
}
|
|
145
|
-
map.delete(
|
|
162
|
+
map.delete(attributeName);
|
|
146
163
|
return;
|
|
147
164
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
modifier.value = newValue;
|
|
165
|
+
if (attribute !== modifier.value) {
|
|
166
|
+
modifier.value = attribute;
|
|
151
167
|
if (modifier.OnUpdate) {
|
|
152
|
-
modifier.OnUpdate(oldVal,
|
|
168
|
+
modifier.OnUpdate(oldVal, attribute);
|
|
153
169
|
}
|
|
154
170
|
return;
|
|
155
171
|
}
|