@matthewp/zebra 0.0.3 → 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/element.d.ts +206 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +552 -0
- package/dist/element.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/list.d.ts +17 -13
- package/dist/list.d.ts.map +1 -1
- package/dist/list.js +104 -68
- package/dist/list.js.map +1 -1
- package/dist/view.d.ts +28 -13
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +107 -22
- package/dist/view.js.map +1 -1
- package/package.json +9 -12
- package/dist/html.d.ts +0 -8
- package/dist/html.d.ts.map +0 -1
- package/dist/html.js +0 -43
- package/dist/html.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -4
- package/dist/server.js.map +0 -1
package/dist/list.js
CHANGED
|
@@ -1,44 +1,86 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { Element } from "./element.js";
|
|
2
|
+
import { View } from "./view.js";
|
|
3
|
+
import { effect } from 'alien-signals';
|
|
4
|
+
export class List extends View {
|
|
5
|
+
_containerTag;
|
|
6
|
+
_items;
|
|
7
|
+
_keyFn;
|
|
8
|
+
_factory;
|
|
9
|
+
_views = [];
|
|
10
|
+
_keys = [];
|
|
11
|
+
_currentItems = [];
|
|
12
|
+
constructor(items, keyFn, factory, tag = 'div') {
|
|
13
|
+
super();
|
|
14
|
+
this._containerTag = tag;
|
|
15
|
+
this._items = items;
|
|
16
|
+
this._keyFn = keyFn;
|
|
17
|
+
this._factory = factory;
|
|
11
18
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let view = new this.ViewClass();
|
|
17
|
-
return view.template(item).toString();
|
|
18
|
-
}).join(''));
|
|
19
|
+
_getItems() {
|
|
20
|
+
return typeof this._items === 'function'
|
|
21
|
+
? this._items()
|
|
22
|
+
: this._items;
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
view.mount(children[i]);
|
|
27
|
-
view.update(items[i]);
|
|
28
|
-
this.views.push(view);
|
|
29
|
-
this.keys.push(this.keyFn(items[i]));
|
|
24
|
+
render() {
|
|
25
|
+
const container = new Element(this._containerTag);
|
|
26
|
+
effect(() => {
|
|
27
|
+
const items = this._getItems();
|
|
28
|
+
if (container.el) {
|
|
29
|
+
this._reconcile(container.el, items);
|
|
30
30
|
}
|
|
31
|
+
else {
|
|
32
|
+
this._buildInitial(container, items);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return container;
|
|
36
|
+
}
|
|
37
|
+
_buildInitial(container, items) {
|
|
38
|
+
this._views = [];
|
|
39
|
+
this._keys = [];
|
|
40
|
+
this._currentItems = [];
|
|
41
|
+
for (const item of items) {
|
|
42
|
+
const view = this._factory(item);
|
|
43
|
+
this._views.push(view);
|
|
44
|
+
this._keys.push(this._keyFn(item));
|
|
45
|
+
this._currentItems.push(item);
|
|
46
|
+
container.append(view);
|
|
31
47
|
}
|
|
32
48
|
}
|
|
33
|
-
|
|
34
|
-
|
|
49
|
+
_updateView(view, newItem, oldItem) {
|
|
50
|
+
if (newItem !== oldItem) {
|
|
51
|
+
const anyView = view;
|
|
52
|
+
if (typeof anyView.update === 'function') {
|
|
53
|
+
anyView.update(newItem);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
35
56
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
_reconcile(container, items) {
|
|
58
|
+
const oldViews = this._views;
|
|
59
|
+
const oldKeys = this._keys;
|
|
60
|
+
const oldItems = this._currentItems;
|
|
61
|
+
// Fast path: same length + all keys in same order
|
|
62
|
+
if (items.length === oldViews.length && items.length > 0) {
|
|
63
|
+
let sameOrder = true;
|
|
64
|
+
const newKeys2 = new Array(items.length);
|
|
65
|
+
for (let i = 0; i < items.length; i++) {
|
|
66
|
+
newKeys2[i] = this._keyFn(items[i]);
|
|
67
|
+
if (newKeys2[i] !== oldKeys[i]) {
|
|
68
|
+
sameOrder = false;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (sameOrder) {
|
|
73
|
+
for (let i = 0; i < items.length; i++) {
|
|
74
|
+
if (items[i] !== oldItems[i])
|
|
75
|
+
this._updateView(oldViews[i], items[i], oldItems[i]);
|
|
76
|
+
this._currentItems[i] = items[i];
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const newKeys = items.map(this._keyFn);
|
|
82
|
+
const newViews = new Array(items.length).fill(null);
|
|
83
|
+
const newItems = new Array(items.length).fill(null);
|
|
42
84
|
let oldHead = 0;
|
|
43
85
|
let oldTail = oldViews.length - 1;
|
|
44
86
|
let newHead = 0;
|
|
@@ -52,37 +94,36 @@ export class List {
|
|
|
52
94
|
oldTail--;
|
|
53
95
|
}
|
|
54
96
|
else if (oldKeys[oldHead] === newKeys[newHead]) {
|
|
55
|
-
// Head-Head match
|
|
56
97
|
newViews[newHead] = oldViews[oldHead];
|
|
57
|
-
|
|
98
|
+
newItems[newHead] = items[newHead];
|
|
99
|
+
this._updateView(oldViews[oldHead], items[newHead], oldItems[oldHead]);
|
|
58
100
|
oldHead++;
|
|
59
101
|
newHead++;
|
|
60
102
|
}
|
|
61
103
|
else if (oldKeys[oldTail] === newKeys[newTail]) {
|
|
62
|
-
// Tail-Tail match
|
|
63
104
|
newViews[newTail] = oldViews[oldTail];
|
|
64
|
-
|
|
105
|
+
newItems[newTail] = items[newTail];
|
|
106
|
+
this._updateView(oldViews[oldTail], items[newTail], oldItems[oldTail]);
|
|
65
107
|
oldTail--;
|
|
66
108
|
newTail--;
|
|
67
109
|
}
|
|
68
110
|
else if (oldKeys[oldHead] === newKeys[newTail]) {
|
|
69
|
-
// Head-Tail match: move old head to after old tail
|
|
70
111
|
newViews[newTail] = oldViews[oldHead];
|
|
71
|
-
|
|
72
|
-
|
|
112
|
+
newItems[newTail] = items[newTail];
|
|
113
|
+
this._updateView(oldViews[oldHead], items[newTail], oldItems[oldHead]);
|
|
114
|
+
oldViews[oldTail].toDOM().after(oldViews[oldHead].toDOM());
|
|
73
115
|
oldHead++;
|
|
74
116
|
newTail--;
|
|
75
117
|
}
|
|
76
118
|
else if (oldKeys[oldTail] === newKeys[newHead]) {
|
|
77
|
-
// Tail-Head match: move old tail to before old head
|
|
78
119
|
newViews[newHead] = oldViews[oldTail];
|
|
79
|
-
|
|
80
|
-
|
|
120
|
+
newItems[newHead] = items[newHead];
|
|
121
|
+
this._updateView(oldViews[oldTail], items[newHead], oldItems[oldTail]);
|
|
122
|
+
oldViews[oldHead].toDOM().before(oldViews[oldTail].toDOM());
|
|
81
123
|
oldTail--;
|
|
82
124
|
newHead++;
|
|
83
125
|
}
|
|
84
126
|
else {
|
|
85
|
-
// Build map lazily
|
|
86
127
|
if (!oldKeyToIndex) {
|
|
87
128
|
oldKeyToIndex = new Map();
|
|
88
129
|
for (let i = oldHead; i <= oldTail; i++) {
|
|
@@ -91,51 +132,46 @@ export class List {
|
|
|
91
132
|
}
|
|
92
133
|
}
|
|
93
134
|
}
|
|
94
|
-
|
|
135
|
+
const oldIndex = oldKeyToIndex.get(newKeys[newHead]);
|
|
95
136
|
if (oldIndex === undefined) {
|
|
96
|
-
|
|
97
|
-
let view = new this.ViewClass();
|
|
98
|
-
view.createAndMount();
|
|
137
|
+
const view = this._factory(items[newHead]);
|
|
99
138
|
newViews[newHead] = view;
|
|
100
|
-
|
|
101
|
-
|
|
139
|
+
newItems[newHead] = items[newHead];
|
|
140
|
+
oldViews[oldHead].toDOM().before(view.toDOM());
|
|
102
141
|
}
|
|
103
142
|
else {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
this.updateView(view, items[newHead]);
|
|
143
|
+
const view = oldViews[oldIndex];
|
|
144
|
+
this._updateView(view, items[newHead], oldItems[oldIndex]);
|
|
107
145
|
newViews[newHead] = view;
|
|
108
|
-
|
|
146
|
+
newItems[newHead] = items[newHead];
|
|
147
|
+
oldViews[oldHead].toDOM().before(view.toDOM());
|
|
109
148
|
oldViews[oldIndex] = null;
|
|
110
149
|
}
|
|
111
150
|
newHead++;
|
|
112
151
|
}
|
|
113
152
|
}
|
|
114
|
-
// Remove remaining old items
|
|
115
153
|
while (oldHead <= oldTail) {
|
|
116
154
|
if (oldViews[oldHead] !== null) {
|
|
117
|
-
oldViews[oldHead].
|
|
155
|
+
oldViews[oldHead].toDOM().remove();
|
|
118
156
|
}
|
|
119
157
|
oldHead++;
|
|
120
158
|
}
|
|
121
|
-
// Add remaining new items
|
|
122
159
|
while (newHead <= newTail) {
|
|
123
|
-
|
|
124
|
-
view.createAndMount();
|
|
160
|
+
const view = this._factory(items[newHead]);
|
|
125
161
|
newViews[newHead] = view;
|
|
126
|
-
|
|
127
|
-
|
|
162
|
+
newItems[newHead] = items[newHead];
|
|
163
|
+
const ref = newViews[newTail + 1]?.toDOM();
|
|
128
164
|
if (ref) {
|
|
129
|
-
ref.before(
|
|
165
|
+
ref.before(view.toDOM());
|
|
130
166
|
}
|
|
131
167
|
else {
|
|
132
|
-
container.append(
|
|
168
|
+
container.append(view.toDOM());
|
|
133
169
|
}
|
|
134
|
-
this.updateView(view, items[newHead]);
|
|
135
170
|
newHead++;
|
|
136
171
|
}
|
|
137
|
-
this.
|
|
138
|
-
this.
|
|
172
|
+
this._views = newViews;
|
|
173
|
+
this._keys = newKeys;
|
|
174
|
+
this._currentItems = newItems;
|
|
139
175
|
}
|
|
140
176
|
}
|
|
141
177
|
//# sourceMappingURL=list.js.map
|
package/dist/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"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"}
|
package/dist/view.d.ts
CHANGED
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { Element, type Child } from './element.ts';
|
|
2
|
+
export declare class View extends Element {
|
|
3
|
+
protected _rendered: Element | null;
|
|
4
|
+
constructor();
|
|
5
|
+
render(): Element;
|
|
6
|
+
protected _getRendered(): Element;
|
|
7
|
+
append(...children: Child[]): this;
|
|
8
|
+
prepend(...children: Child[]): this;
|
|
9
|
+
setText(text: string): this;
|
|
10
|
+
setAttribute(name: string, value: string): this;
|
|
11
|
+
removeAttribute(name: string): this;
|
|
12
|
+
toggleAttribute(name: string, force?: boolean): this;
|
|
13
|
+
addClass(...classes: string[]): this;
|
|
14
|
+
removeClass(...classes: string[]): this;
|
|
15
|
+
toggleClass(name: string, force?: boolean): this;
|
|
16
|
+
setStyle(prop: string, value: string): this;
|
|
17
|
+
removeStyle(prop: string): this;
|
|
18
|
+
show(): this;
|
|
19
|
+
hide(): this;
|
|
20
|
+
on(event: string, handler: EventListener): this;
|
|
21
|
+
setHTML(html: string): this;
|
|
22
|
+
clear(): this;
|
|
23
|
+
disable(): this;
|
|
24
|
+
enable(): this;
|
|
25
|
+
toDOM(): HTMLElement;
|
|
26
|
+
hydrate(el: HTMLElement): this;
|
|
27
|
+
toString(): string;
|
|
28
|
+
mount(container: HTMLElement): this;
|
|
10
29
|
}
|
|
11
|
-
interface Slottable {
|
|
12
|
-
template(props?: any): SafeHTML;
|
|
13
|
-
}
|
|
14
|
-
export declare function slot<T extends Slottable>(target: T, ...args: Parameters<T['template']>): SafeHTML;
|
|
15
30
|
//# sourceMappingURL=view.d.ts.map
|
package/dist/view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnD,qBAAa,IAAK,SAAQ,OAAO;IAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAQ;;IAM3C,MAAM,IAAI,OAAO;IAIjB,SAAS,CAAC,YAAY,IAAI,OAAO;IAOjC,MAAM,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI;IAKlC,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI;IAKnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAKpD,QAAQ,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKpC,WAAW,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKvC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAKhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAK/C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3B,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAKf,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,WAAW;IAOpB,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAO9B,QAAQ,IAAI,MAAM;IAIlB,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAIpC"}
|
package/dist/view.js
CHANGED
|
@@ -1,27 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { Element } from "./element.js";
|
|
2
|
+
export class View extends Element {
|
|
3
|
+
_rendered = null;
|
|
4
|
+
constructor() {
|
|
5
|
+
super('');
|
|
6
|
+
}
|
|
7
|
+
render() {
|
|
8
|
+
return new Element('div');
|
|
9
|
+
}
|
|
10
|
+
_getRendered() {
|
|
11
|
+
if (!this._rendered) {
|
|
12
|
+
this._rendered = this.render();
|
|
13
|
+
}
|
|
14
|
+
return this._rendered;
|
|
15
|
+
}
|
|
16
|
+
append(...children) {
|
|
17
|
+
this._getRendered().append(...children);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
prepend(...children) {
|
|
21
|
+
this._getRendered().prepend(...children);
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
setText(text) {
|
|
25
|
+
this._getRendered().setText(text);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
setAttribute(name, value) {
|
|
29
|
+
this._getRendered().setAttribute(name, value);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
removeAttribute(name) {
|
|
33
|
+
this._getRendered().removeAttribute(name);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
toggleAttribute(name, force) {
|
|
37
|
+
this._getRendered().toggleAttribute(name, force);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
addClass(...classes) {
|
|
41
|
+
this._getRendered().addClass(...classes);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
removeClass(...classes) {
|
|
45
|
+
this._getRendered().removeClass(...classes);
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
toggleClass(name, force) {
|
|
49
|
+
this._getRendered().toggleClass(name, force);
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
setStyle(prop, value) {
|
|
53
|
+
this._getRendered().setStyle(prop, value);
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
removeStyle(prop) {
|
|
57
|
+
this._getRendered().removeStyle(prop);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
show() {
|
|
61
|
+
this._getRendered().show();
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
hide() {
|
|
65
|
+
this._getRendered().hide();
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
on(event, handler) {
|
|
69
|
+
this._getRendered().on(event, handler);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
setHTML(html) {
|
|
73
|
+
const r = this._getRendered();
|
|
74
|
+
if (r instanceof Element)
|
|
75
|
+
r.setHTML(html);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
clear() {
|
|
79
|
+
this._getRendered().clear();
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
disable() {
|
|
83
|
+
this._getRendered().disable();
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
enable() {
|
|
87
|
+
this._getRendered().enable();
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
toDOM() {
|
|
91
|
+
if (this.el)
|
|
92
|
+
return this.el;
|
|
93
|
+
const el = this._getRendered().toDOM();
|
|
94
|
+
this.el = el;
|
|
95
|
+
return el;
|
|
96
|
+
}
|
|
97
|
+
hydrate(el) {
|
|
98
|
+
if (this.el)
|
|
99
|
+
return this;
|
|
100
|
+
this._getRendered().hydrate(el);
|
|
18
101
|
this.el = el;
|
|
102
|
+
return this;
|
|
19
103
|
}
|
|
20
|
-
|
|
21
|
-
return this.
|
|
104
|
+
toString() {
|
|
105
|
+
return this._getRendered().toString();
|
|
106
|
+
}
|
|
107
|
+
mount(container) {
|
|
108
|
+
container.append(this.toDOM());
|
|
109
|
+
return this;
|
|
22
110
|
}
|
|
23
|
-
}
|
|
24
|
-
export function slot(target, ...args) {
|
|
25
|
-
return target.template(...args);
|
|
26
111
|
}
|
|
27
112
|
//# sourceMappingURL=view.js.map
|
package/dist/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matthewp/zebra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"types": "./dist/
|
|
8
|
-
"default": "./dist/
|
|
9
|
-
},
|
|
10
|
-
"./html": {
|
|
11
|
-
"types": "./dist/html.d.ts",
|
|
12
|
-
"default": "./dist/html.js"
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"default": "./dist/index.js"
|
|
13
9
|
},
|
|
14
10
|
"./list": {
|
|
15
11
|
"types": "./dist/list.d.ts",
|
|
16
12
|
"default": "./dist/list.js"
|
|
17
|
-
},
|
|
18
|
-
"./server": {
|
|
19
|
-
"types": "./dist/server.d.ts",
|
|
20
|
-
"default": "./dist/server.js"
|
|
21
13
|
}
|
|
22
14
|
},
|
|
23
|
-
"files": [
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
24
18
|
"scripts": {
|
|
25
19
|
"build": "tsc"
|
|
26
20
|
},
|
|
27
21
|
"devDependencies": {
|
|
28
22
|
"typescript": "^5.8.0"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"alien-signals": "^3.1.2"
|
|
29
26
|
}
|
|
30
27
|
}
|
package/dist/html.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare class SafeHTML {
|
|
2
|
-
#private;
|
|
3
|
-
constructor(value: string);
|
|
4
|
-
toString(): string;
|
|
5
|
-
}
|
|
6
|
-
export declare function unsafeHTML(s: string): SafeHTML;
|
|
7
|
-
export declare function html(strings: TemplateStringsArray, ...values: unknown[]): SafeHTML;
|
|
8
|
-
//# sourceMappingURL=html.d.ts.map
|
package/dist/html.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAYA,qBAAa,QAAQ;;gBAEP,KAAK,EAAE,MAAM;IAGzB,QAAQ,IAAI,MAAM;CAGnB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAE9C;AAYD,wBAAgB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAOlF"}
|
package/dist/html.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
const ESC = {
|
|
2
|
-
'&': '&',
|
|
3
|
-
'<': '<',
|
|
4
|
-
'>': '>',
|
|
5
|
-
'"': '"',
|
|
6
|
-
"'": ''',
|
|
7
|
-
};
|
|
8
|
-
function escapeHtml(s) {
|
|
9
|
-
return s.replace(/[&<>"']/g, (ch) => ESC[ch]);
|
|
10
|
-
}
|
|
11
|
-
export class SafeHTML {
|
|
12
|
-
#html;
|
|
13
|
-
constructor(value) {
|
|
14
|
-
this.#html = value;
|
|
15
|
-
}
|
|
16
|
-
toString() {
|
|
17
|
-
return this.#html;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
export function unsafeHTML(s) {
|
|
21
|
-
return new SafeHTML(s);
|
|
22
|
-
}
|
|
23
|
-
function resolveValue(val) {
|
|
24
|
-
if (val == null || val === false)
|
|
25
|
-
return '';
|
|
26
|
-
if (val instanceof SafeHTML)
|
|
27
|
-
return val.toString();
|
|
28
|
-
if (typeof val === 'object' && 'template' in val && typeof val.template === 'function') {
|
|
29
|
-
return val.template().toString();
|
|
30
|
-
}
|
|
31
|
-
if (Array.isArray(val))
|
|
32
|
-
return val.map(resolveValue).join('');
|
|
33
|
-
return escapeHtml(String(val));
|
|
34
|
-
}
|
|
35
|
-
export function html(strings, ...values) {
|
|
36
|
-
let result = strings[0];
|
|
37
|
-
for (let i = 0; i < values.length; i++) {
|
|
38
|
-
result += resolveValue(values[i]);
|
|
39
|
-
result += strings[i + 1];
|
|
40
|
-
}
|
|
41
|
-
return new SafeHTML(result);
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=html.js.map
|
package/dist/html.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAA2B;IAClC,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACb,CAAC;AAEF,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,OAAO,QAAQ;IACnB,KAAK,CAAS;IACd,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC5C,IAAI,GAAG,YAAY,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAChG,OAAQ,GAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAA6B,EAAE,GAAG,MAAiB;IACtE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/server.d.ts
DELETED
package/dist/server.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAElF"}
|
package/dist/server.js
DELETED
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,KAA+B;IACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC"}
|