@fun-land/fun-web 0.3.2 → 0.5.0-alpha.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/README.md +6 -24
- package/dist/esm/src/dom.d.ts +53 -31
- package/dist/esm/src/dom.js +83 -50
- package/dist/esm/src/dom.js.map +1 -1
- package/dist/esm/src/index.d.ts +1 -1
- package/dist/esm/src/index.js +1 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/tsconfig.publish.tsbuildinfo +1 -1
- package/dist/src/dom.d.ts +53 -31
- package/dist/src/dom.js +86 -55
- package/dist/src/dom.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -4
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.publish.tsbuildinfo +1 -1
- package/examples/todo-app/AddTodoForm.ts +4 -4
- package/examples/todo-app/DraggableTodoList.ts +52 -47
- package/examples/todo-app/Todo.ts +7 -7
- package/examples/todo-app/TodoApp.js +94 -51
- package/examples/todo-app/TodoApp.ts +9 -9
- package/package.json +2 -2
- package/src/dom.test.ts +92 -60
- package/src/dom.ts +190 -159
- package/src/index.ts +1 -3
- package/src/types.ts +2 -6
package/dist/src/dom.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.$$ = exports.$ = exports.
|
|
4
|
-
exports.bindProperty = bindProperty;
|
|
5
|
-
exports.keyedChildren = keyedChildren;
|
|
3
|
+
exports.$$ = exports.$ = exports.bindListChildren = exports.enhance = exports.on = exports.append = exports.toggleClass = exports.removeClass = exports.addClass = exports.bindProperty = exports.attrs = exports.attr = exports.text = exports.h = void 0;
|
|
6
4
|
exports.renderWhen = renderWhen;
|
|
7
|
-
const accessor_1 = require("@fun-land/accessor");
|
|
8
5
|
/**
|
|
9
6
|
* Create an HTML element with attributes and children
|
|
10
7
|
*
|
|
@@ -45,17 +42,18 @@ attrs, children) => {
|
|
|
45
42
|
}
|
|
46
43
|
// Append children
|
|
47
44
|
if (children != null) {
|
|
48
|
-
appendChildren(
|
|
45
|
+
appendChildren(children)(element);
|
|
49
46
|
}
|
|
50
47
|
return element;
|
|
51
48
|
};
|
|
52
49
|
exports.h = h;
|
|
53
50
|
/**
|
|
54
51
|
* Append children to an element, flattening arrays and converting primitives to text nodes
|
|
52
|
+
* @returns {Enhancer}
|
|
55
53
|
*/
|
|
56
|
-
const appendChildren = (
|
|
54
|
+
const appendChildren = (children) => (parent) => {
|
|
57
55
|
if (Array.isArray(children)) {
|
|
58
|
-
children.forEach((child) => appendChildren(
|
|
56
|
+
children.forEach((child) => appendChildren(child)(parent));
|
|
59
57
|
}
|
|
60
58
|
else if (children != null) {
|
|
61
59
|
if (typeof children === "string" || typeof children === "number") {
|
|
@@ -65,25 +63,26 @@ const appendChildren = (parent, children) => {
|
|
|
65
63
|
parent.appendChild(children);
|
|
66
64
|
}
|
|
67
65
|
}
|
|
66
|
+
return parent;
|
|
68
67
|
};
|
|
69
68
|
/**
|
|
70
69
|
* Set text content of an element (returns element for chaining)
|
|
70
|
+
* @returns {Enhancer}
|
|
71
71
|
*/
|
|
72
72
|
const text = (content) => (el) => {
|
|
73
73
|
el.textContent = String(content);
|
|
74
74
|
return el;
|
|
75
75
|
};
|
|
76
76
|
exports.text = text;
|
|
77
|
-
;
|
|
78
77
|
/**
|
|
79
78
|
* Set an attribute on an element (returns element for chaining)
|
|
79
|
+
* @returns {Enhancer}
|
|
80
80
|
*/
|
|
81
81
|
const attr = (name, value) => (el) => {
|
|
82
82
|
el.setAttribute(name, value);
|
|
83
83
|
return el;
|
|
84
84
|
};
|
|
85
85
|
exports.attr = attr;
|
|
86
|
-
;
|
|
87
86
|
/**
|
|
88
87
|
* Set multiple attributes on an element (returns element for chaining)
|
|
89
88
|
*/
|
|
@@ -94,38 +93,41 @@ const attrs = (obj) => (el) => {
|
|
|
94
93
|
return el;
|
|
95
94
|
};
|
|
96
95
|
exports.attrs = attrs;
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
/**
|
|
97
|
+
* update property `key` of element when state updates
|
|
98
|
+
* @returns {Enhancer}
|
|
99
|
+
*/
|
|
100
|
+
const bindProperty = (key, state, signal) => (el) => {
|
|
99
101
|
// initial sync
|
|
100
|
-
el[key] =
|
|
102
|
+
el[key] = state.get();
|
|
101
103
|
// reactive sync
|
|
102
|
-
|
|
104
|
+
state.watch(signal, (v) => {
|
|
103
105
|
el[key] = v;
|
|
104
106
|
});
|
|
105
107
|
return el;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
exports.bindPropertyTo = bindPropertyTo;
|
|
108
|
+
};
|
|
109
|
+
exports.bindProperty = bindProperty;
|
|
109
110
|
/**
|
|
110
111
|
* Add CSS classes to an element (returns element for chaining)
|
|
112
|
+
* @returns {Enhancer}
|
|
111
113
|
*/
|
|
112
114
|
const addClass = (...classes) => (el) => {
|
|
113
115
|
el.classList.add(...classes);
|
|
114
116
|
return el;
|
|
115
117
|
};
|
|
116
118
|
exports.addClass = addClass;
|
|
117
|
-
;
|
|
118
119
|
/**
|
|
119
120
|
* Remove CSS classes from an element (returns element for chaining)
|
|
121
|
+
* @returns {Enhancer}
|
|
120
122
|
*/
|
|
121
123
|
const removeClass = (...classes) => (el) => {
|
|
122
124
|
el.classList.remove(...classes);
|
|
123
125
|
return el;
|
|
124
126
|
};
|
|
125
127
|
exports.removeClass = removeClass;
|
|
126
|
-
;
|
|
127
128
|
/**
|
|
128
129
|
* Toggle a CSS class on an element (returns element for chaining)
|
|
130
|
+
* @returns {Enhancer}
|
|
129
131
|
*/
|
|
130
132
|
const toggleClass = (className, force) => (el) => {
|
|
131
133
|
el.classList.toggle(className, force);
|
|
@@ -141,40 +143,54 @@ const append = (...children) => (el) => {
|
|
|
141
143
|
return el;
|
|
142
144
|
};
|
|
143
145
|
exports.append = append;
|
|
144
|
-
;
|
|
145
146
|
/**
|
|
146
147
|
* Add event listener with required AbortSignal (returns element for chaining)
|
|
147
148
|
* Signal is required to prevent forgetting cleanup
|
|
149
|
+
* @returns {Enhancer}
|
|
148
150
|
*/
|
|
149
|
-
const on = (
|
|
151
|
+
const on = (type, handler, signal) => (el) => {
|
|
150
152
|
el.addEventListener(type, handler, { signal });
|
|
151
153
|
return el;
|
|
152
154
|
};
|
|
153
155
|
exports.on = on;
|
|
154
|
-
/** Enhancer version of `on()` */
|
|
155
|
-
const onTo = (type, handler, signal) => (el) => (0, exports.on)(el, type, handler, signal);
|
|
156
|
-
exports.onTo = onTo;
|
|
157
156
|
/**
|
|
158
157
|
* Apply enhancers to an HTMLElement.
|
|
159
158
|
*/
|
|
160
159
|
const enhance = (x, ...fns) => fns.reduce((acc, fn) => fn(acc), x);
|
|
161
160
|
exports.enhance = enhance;
|
|
161
|
+
const keyOf = (keyAcc, item) => {
|
|
162
|
+
const k = keyAcc.query(item)[0];
|
|
163
|
+
if (k == null)
|
|
164
|
+
throw new Error("bindListChildren: key accessor returned no value");
|
|
165
|
+
return k;
|
|
166
|
+
};
|
|
167
|
+
const byKey = (keyAcc, key) => ({
|
|
168
|
+
query: (xs) => {
|
|
169
|
+
const hit = xs.find((t) => keyOf(keyAcc, t) === key);
|
|
170
|
+
return hit ? [hit] : [];
|
|
171
|
+
},
|
|
172
|
+
mod: (f) => (xs) => {
|
|
173
|
+
let found = false;
|
|
174
|
+
return xs.map((t) => {
|
|
175
|
+
if (keyOf(keyAcc, t) !== key)
|
|
176
|
+
return t;
|
|
177
|
+
if (found)
|
|
178
|
+
throw new Error(`bindListChildren: duplicate key "${key}"`);
|
|
179
|
+
found = true;
|
|
180
|
+
return f(t);
|
|
181
|
+
});
|
|
182
|
+
},
|
|
183
|
+
});
|
|
162
184
|
/**
|
|
163
|
-
* Keep
|
|
164
|
-
*
|
|
165
|
-
* - No VDOM
|
|
166
|
-
* - Preserves existing row elements across updates
|
|
167
|
-
* - Creates one AbortController per row (cleaned up on removal or parent abort)
|
|
168
|
-
* - Reorders by DOM moves (appendChild)
|
|
169
|
-
* - Only remounts if order changes
|
|
185
|
+
* Keep an element's children in sync with a FunState<T[]> by stable identity.
|
|
186
|
+
* Cleanup is driven by `signal` abort (no handle returned).
|
|
170
187
|
*/
|
|
171
|
-
|
|
188
|
+
const bindListChildren = (options) => (parent) => {
|
|
189
|
+
const { signal, state: list, key: keyAcc, row: renderRow } = options;
|
|
172
190
|
const rows = new Map();
|
|
173
191
|
const dispose = () => {
|
|
174
192
|
for (const row of rows.values()) {
|
|
175
|
-
// Abort first so listeners/subscriptions clean up
|
|
176
193
|
row.ctrl.abort();
|
|
177
|
-
// Remove from DOM (safe even if already removed)
|
|
178
194
|
row.el.remove();
|
|
179
195
|
}
|
|
180
196
|
rows.clear();
|
|
@@ -184,13 +200,13 @@ function keyedChildren(parent, signal, list, renderRow) {
|
|
|
184
200
|
const nextKeys = [];
|
|
185
201
|
const seen = new Set();
|
|
186
202
|
for (const it of items) {
|
|
187
|
-
const k = it
|
|
203
|
+
const k = keyOf(keyAcc, it);
|
|
188
204
|
if (seen.has(k))
|
|
189
|
-
throw new Error(`
|
|
205
|
+
throw new Error(`bindListChildren: duplicate key "${k}"`);
|
|
190
206
|
seen.add(k);
|
|
191
207
|
nextKeys.push(k);
|
|
192
208
|
}
|
|
193
|
-
//
|
|
209
|
+
// remove missing
|
|
194
210
|
for (const [k, row] of rows) {
|
|
195
211
|
if (!seen.has(k)) {
|
|
196
212
|
row.ctrl.abort();
|
|
@@ -198,58 +214,73 @@ function keyedChildren(parent, signal, list, renderRow) {
|
|
|
198
214
|
rows.delete(k);
|
|
199
215
|
}
|
|
200
216
|
}
|
|
201
|
-
//
|
|
217
|
+
// ensure present
|
|
202
218
|
for (const k of nextKeys) {
|
|
203
219
|
if (!rows.has(k)) {
|
|
204
220
|
const ctrl = new AbortController();
|
|
205
|
-
const itemState = list.focus((
|
|
221
|
+
const itemState = list.focus(byKey(keyAcc, k));
|
|
206
222
|
const el = renderRow({
|
|
207
223
|
signal: ctrl.signal,
|
|
208
224
|
state: itemState,
|
|
209
|
-
remove: () => list.mod((
|
|
225
|
+
remove: () => list.mod((xs) => xs.filter((t) => keyOf(keyAcc, t) !== k)),
|
|
210
226
|
});
|
|
211
|
-
rows.set(k, {
|
|
227
|
+
rows.set(k, { el, ctrl });
|
|
212
228
|
}
|
|
213
229
|
}
|
|
214
|
-
//
|
|
230
|
+
// reorder with minimal DOM moves
|
|
215
231
|
const children = parent.children; // live
|
|
216
232
|
for (let i = 0; i < nextKeys.length; i++) {
|
|
217
233
|
const k = nextKeys[i];
|
|
218
234
|
const row = rows.get(k);
|
|
219
235
|
const currentAtI = children[i];
|
|
220
|
-
if (currentAtI !== row.el)
|
|
236
|
+
if (currentAtI !== row.el)
|
|
221
237
|
parent.insertBefore(row.el, currentAtI !== null && currentAtI !== void 0 ? currentAtI : null);
|
|
222
|
-
}
|
|
223
238
|
}
|
|
224
239
|
};
|
|
225
|
-
// Reconcile whenever the list changes; `subscribe` will unsubscribe on abort (per your fix).
|
|
226
240
|
list.watch(signal, reconcile);
|
|
227
|
-
// Ensure all children clean up when parent aborts
|
|
228
241
|
signal.addEventListener("abort", dispose, { once: true });
|
|
229
|
-
// Initial mount
|
|
230
242
|
reconcile();
|
|
231
|
-
return
|
|
232
|
-
}
|
|
243
|
+
return parent;
|
|
244
|
+
};
|
|
245
|
+
exports.bindListChildren = bindListChildren;
|
|
233
246
|
/**
|
|
234
|
-
* Conditionally render a component based on
|
|
235
|
-
* Returns a container element that mounts/unmounts the component as the
|
|
247
|
+
* Conditionally render a component based on state and an optional predicate.
|
|
248
|
+
* Returns a container element that mounts/unmounts the component as the condition changes.
|
|
236
249
|
*
|
|
237
250
|
* @example
|
|
238
|
-
*
|
|
239
|
-
* const
|
|
251
|
+
* // With boolean state
|
|
252
|
+
* const showDetails = funState(false);
|
|
253
|
+
* const detailsEl = renderWhen({
|
|
254
|
+
* state: showDetails,
|
|
255
|
+
* component: DetailsComponent,
|
|
256
|
+
* props: {id: 123},
|
|
257
|
+
* signal
|
|
258
|
+
* });
|
|
240
259
|
* parent.appendChild(detailsEl);
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* // With predicate
|
|
263
|
+
* const rollType = funState(RollType.action);
|
|
264
|
+
* const actionEl = renderWhen({
|
|
265
|
+
* state: rollType,
|
|
266
|
+
* predicate: (type) => type === RollType.action,
|
|
267
|
+
* component: ActionForm,
|
|
268
|
+
* props: {roll, uid},
|
|
269
|
+
* signal
|
|
270
|
+
* });
|
|
241
271
|
*/
|
|
242
|
-
function renderWhen(
|
|
272
|
+
function renderWhen(options) {
|
|
273
|
+
const { state, predicate = (x) => x, component, props, signal, } = options;
|
|
243
274
|
const container = document.createElement("span");
|
|
244
275
|
container.style.display = "contents";
|
|
245
276
|
let childCtrl = null;
|
|
246
277
|
let childEl = null;
|
|
247
278
|
const reconcile = () => {
|
|
248
|
-
const shouldRender = state.get();
|
|
279
|
+
const shouldRender = predicate(state.get());
|
|
249
280
|
if (shouldRender && !childEl) {
|
|
250
281
|
// Mount the component
|
|
251
282
|
childCtrl = new AbortController();
|
|
252
|
-
childEl =
|
|
283
|
+
childEl = component(childCtrl.signal, props);
|
|
253
284
|
container.appendChild(childEl);
|
|
254
285
|
}
|
|
255
286
|
else if (!shouldRender && childEl) {
|
package/dist/src/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/dom.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/dom.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export type { FunState } from "./state";
|
|
|
3
3
|
export type { MountedComponent } from "./mount";
|
|
4
4
|
export type { KeyedChildren } from "./dom";
|
|
5
5
|
export { funState } from "./state";
|
|
6
|
-
export { h, text, attr, attrs, addClass, removeClass, toggleClass, append, on,
|
|
6
|
+
export { h, text, attr, attrs, addClass, removeClass, toggleClass, append, on, bindProperty, bindListChildren, renderWhen, enhance, $, $$, } from "./dom";
|
|
7
7
|
export { mount } from "./mount";
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// @fun-land/fun-web - Web component library for fun-land
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.mount = exports.$$ = exports.$ = exports.enhance = exports.renderWhen = exports.
|
|
4
|
+
exports.mount = exports.$$ = exports.$ = exports.enhance = exports.renderWhen = exports.bindListChildren = exports.bindProperty = exports.on = exports.append = exports.toggleClass = exports.removeClass = exports.addClass = exports.attrs = exports.attr = exports.text = exports.h = exports.funState = void 0;
|
|
5
5
|
var state_1 = require("./state");
|
|
6
6
|
Object.defineProperty(exports, "funState", { enumerable: true, get: function () { return state_1.funState; } });
|
|
7
7
|
var dom_1 = require("./dom");
|
|
@@ -14,10 +14,8 @@ Object.defineProperty(exports, "removeClass", { enumerable: true, get: function
|
|
|
14
14
|
Object.defineProperty(exports, "toggleClass", { enumerable: true, get: function () { return dom_1.toggleClass; } });
|
|
15
15
|
Object.defineProperty(exports, "append", { enumerable: true, get: function () { return dom_1.append; } });
|
|
16
16
|
Object.defineProperty(exports, "on", { enumerable: true, get: function () { return dom_1.on; } });
|
|
17
|
-
Object.defineProperty(exports, "onTo", { enumerable: true, get: function () { return dom_1.onTo; } });
|
|
18
17
|
Object.defineProperty(exports, "bindProperty", { enumerable: true, get: function () { return dom_1.bindProperty; } });
|
|
19
|
-
Object.defineProperty(exports, "
|
|
20
|
-
Object.defineProperty(exports, "keyedChildren", { enumerable: true, get: function () { return dom_1.keyedChildren; } });
|
|
18
|
+
Object.defineProperty(exports, "bindListChildren", { enumerable: true, get: function () { return dom_1.bindListChildren; } });
|
|
21
19
|
Object.defineProperty(exports, "renderWhen", { enumerable: true, get: function () { return dom_1.renderWhen; } });
|
|
22
20
|
Object.defineProperty(exports, "enhance", { enumerable: true, get: function () { return dom_1.enhance; } });
|
|
23
21
|
Object.defineProperty(exports, "$", { enumerable: true, get: function () { return dom_1.$; } });
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAOzD,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAOzD,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,6BAgBe;AAfb,wFAAA,CAAC,OAAA;AACD,2FAAA,IAAI,OAAA;AACJ,2FAAA,IAAI,OAAA;AACJ,4FAAA,KAAK,OAAA;AACL,+FAAA,QAAQ,OAAA;AACR,kGAAA,WAAW,OAAA;AACX,kGAAA,WAAW,OAAA;AACX,6FAAA,MAAM,OAAA;AACN,yFAAA,EAAE,OAAA;AACF,mGAAA,YAAY,OAAA;AACZ,uGAAA,gBAAgB,OAAA;AAChB,iGAAA,UAAU,OAAA;AACV,8FAAA,OAAO,OAAA;AACP,wFAAA,CAAC,OAAA;AACD,yFAAA,EAAE,OAAA;AAEJ,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|