@oddo/ui 0.0.3 → 0.0.5

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.
@@ -0,0 +1,297 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class;// src/reactive.mjs
2
+ var reactiveSymbol = /* @__PURE__ */ Symbol.for("oddo::is-reactive-handler-property-symbol");
3
+ var ReactiveContainer = (_class = class {
4
+ __init() {this[reactiveSymbol] = true}
5
+ constructor(getter) {;_class.prototype.__init.call(this);
6
+ this.get = getter;
7
+ Object.freeze(this);
8
+ }
9
+ }, _class);
10
+ var observable = (observers = /* @__PURE__ */ new Set()) => ({
11
+ subscribe: (fn) => observers.add(fn),
12
+ notify: () => {
13
+ const current = Array.from(observers);
14
+ observers.clear();
15
+ for (const observer of current) {
16
+ observer();
17
+ }
18
+ }
19
+ });
20
+ var ref = (value) => (...args) => args.length ? void (value = args[0]) : value;
21
+ var state = (state2) => {
22
+ const { subscribe, notify } = observable();
23
+ return [
24
+ new ReactiveContainer((caller) => (caller && subscribe(caller), state2)),
25
+ (value) => value !== state2 && (state2 = value, notify())
26
+ ];
27
+ };
28
+ var bindDependencies = (deps, cleanup) => deps.map((dep) => dep[reactiveSymbol] ? dep.get.bind(null, cleanup) : () => dep);
29
+ var computed = (fn, deps) => {
30
+ const { subscribe, notify } = observable();
31
+ let cache, cached = false;
32
+ deps = bindDependencies(deps, () => (cached = false, notify()));
33
+ return new ReactiveContainer(function computed2(caller) {
34
+ if (!cached) {
35
+ caller && subscribe(caller);
36
+ cache = fn(...deps);
37
+ cached = true;
38
+ }
39
+ return cache;
40
+ });
41
+ };
42
+ var effect = (fn, deps) => {
43
+ const effect3 = schedule.bind(null, () => fn(...deps));
44
+ deps = bindDependencies(deps, effect3);
45
+ effect3();
46
+ };
47
+ var effect2 = (fn, deps, run = true) => {
48
+ const effect3 = () => fn(...deps);
49
+ deps = bindDependencies(deps, schedule.bind(null, effect3));
50
+ run && effect3();
51
+ };
52
+ var queue = [];
53
+ var schedule = (effect3) => {
54
+ queue.length || queueMicrotask(executeQueue);
55
+ queue.push(effect3);
56
+ };
57
+ var executeQueue = () => {
58
+ for (const effect3 of queue) {
59
+ effect3();
60
+ }
61
+ queue.length = 0;
62
+ };
63
+ var copyOnWrite = (target) => {
64
+ let dirty = false;
65
+ return (update = true) => {
66
+ if (dirty) {
67
+ return target;
68
+ }
69
+ dirty = update;
70
+ return target = Object.assign(target.constructor(), target);
71
+ };
72
+ };
73
+ var noop = () => {
74
+ };
75
+ var stateProxy = (target, mutable, notifyParent) => {
76
+ if (target && typeof target === "object") {
77
+ const mutate = copyOnWrite(target);
78
+ const children = /* @__PURE__ */ new Map();
79
+ return new Proxy(noop, {
80
+ apply() {
81
+ return target = mutate(mutable);
82
+ },
83
+ set(_, key, value) {
84
+ if (record.hasOwnProperty(prop) && target[key] === value) return false;
85
+ if (children.has(key) && !(value && typeof value === "object")) {
86
+ children.delete(key);
87
+ }
88
+ target = mutate();
89
+ target[key] = value;
90
+ mutable || (notifyParent == null ? void 0 : notifyParent(target));
91
+ return true;
92
+ },
93
+ get(_, key) {
94
+ const value = Reflect.get(target, key, target);
95
+ if (!children.has(key)) {
96
+ children.set(stateProxy(value, mutable, (value2) => {
97
+ target = mutate();
98
+ target[key] = value2;
99
+ }));
100
+ }
101
+ return children.get(key);
102
+ }
103
+ });
104
+ }
105
+ return () => target;
106
+ };
107
+ var liftValue = (arg) => (arg == null ? void 0 : arg[reactiveSymbol]) ? arg.get() : arg;
108
+ var empty = Object.freeze([]);
109
+ var transact = (mutator, finalizer, targets, otherValues = empty) => {
110
+ otherValues = bindDependencies(otherValues);
111
+ return (...args) => {
112
+ const stateProxies = targets.map((state2) => stateProxy(state2.get()));
113
+ mutator(finalizer, ...stateProxies, ...otherValues, ...args.map(liftValue));
114
+ };
115
+ };
116
+ var lift = (fn, deps) => fn(...bindDependencies(deps));
117
+ var liftFn = (callbackFn, deps = empty) => (...args) => callbackFn(...deps.map(liftValue), ...args.map(liftValue));
118
+
119
+ // src/attrs.mjs
120
+ var htmlEventHandlers = [
121
+ "onpointerdown",
122
+ "onpointerup",
123
+ "onpointermove",
124
+ "onpointerover",
125
+ "onpointerout",
126
+ "onpointerenter",
127
+ "onpointerleave",
128
+ "onpointercancel",
129
+ "ongotpointercapture",
130
+ "onlostpointercapture",
131
+ "onclick",
132
+ "ondblclick",
133
+ "onmousedown",
134
+ "onmouseup",
135
+ "onmouseover",
136
+ "onmouseout",
137
+ "onmouseenter",
138
+ "onmouseleave",
139
+ "onmousemove",
140
+ "oncontextmenu",
141
+ "onwheel",
142
+ "onauxclick",
143
+ "onkeydown",
144
+ "onkeyup",
145
+ "onkeypress",
146
+ "oninput",
147
+ "onchange",
148
+ "onfocus",
149
+ "onblur",
150
+ "onfocusin",
151
+ "onfocusout",
152
+ "onsubmit",
153
+ "onreset",
154
+ "oninvalid",
155
+ "onsearch",
156
+ "onselect",
157
+ "onbeforeinput",
158
+ "ondrag",
159
+ "ondragstart",
160
+ "ondragend",
161
+ "ondragenter",
162
+ "ondragleave",
163
+ "ondragover",
164
+ "ondrop",
165
+ "onplay",
166
+ "onpause",
167
+ "onplaying",
168
+ "onended",
169
+ "onvolumechange",
170
+ "onwaiting",
171
+ "onstalled",
172
+ "onsuspend",
173
+ "onprogress",
174
+ "oncanplay",
175
+ "oncanplaythrough",
176
+ "onloadeddata",
177
+ "onloadedmetadata",
178
+ "onloadstart",
179
+ "ondurationchange",
180
+ "onratechange",
181
+ "onseeked",
182
+ "onseeking",
183
+ "onanimationstart",
184
+ "onanimationend",
185
+ "onanimationiteration",
186
+ "ontransitionstart",
187
+ "ontransitionend",
188
+ "ontransitionrun",
189
+ "ontransitioncancel",
190
+ "onload",
191
+ "onerror",
192
+ "onscroll",
193
+ "onscrollend",
194
+ "onresize",
195
+ "ontoggle",
196
+ "oncopy",
197
+ "oncut",
198
+ "onpaste"
199
+ ];
200
+ var htmlEventList = new Set(htmlEventHandlers);
201
+ var hydrateAttributes = (element, attrs) => {
202
+ for (const key in attrs) {
203
+ const maybeContainerValue = attrs[key];
204
+ const value = (maybeContainerValue == null ? void 0 : maybeContainerValue[reactiveSymbol]) ? maybeContainerValue.get() : maybeContainerValue;
205
+ key === "ref" && value(element);
206
+ htmlEventList.has(key) && (element[key] = value);
207
+ (value == null ? void 0 : value[reactiveSymbol]) && effect2((value2) => setAttribute(element, key, value2(), oldValue), [value], false);
208
+ }
209
+ };
210
+ var patchAttributes = (element, oldAttrs = {}) => (newAttrs, hydrating = false) => {
211
+ if (hydrating) {
212
+ oldAttrs = newAttrs;
213
+ return hydrateAttributes(element, newAttrs);
214
+ }
215
+ for (const key in oldAttrs) {
216
+ if (!(key in newAttrs)) {
217
+ removeAttribute(element, key);
218
+ }
219
+ }
220
+ for (const key in newAttrs) {
221
+ const oldValue2 = oldAttrs[key];
222
+ const newValue = newAttrs[key];
223
+ if (oldValue2 !== newValue) {
224
+ (newValue == null ? void 0 : newValue[reactiveSymbol]) ? effect2((newValue2) => setAttribute(element, key, newValue2(), oldValue2), [newValue], !hydrating) : setAttribute(element, key, newValue, oldValue2);
225
+ }
226
+ }
227
+ oldAttrs = newAttrs;
228
+ };
229
+ var setAttribute = (element, key, value, oldValue2) => {
230
+ switch (key) {
231
+ case "ref":
232
+ return value(element);
233
+ case "style":
234
+ return typeof value === "string" ? element.style = value : patchStyle(element, oldValue2, value);
235
+ case "value":
236
+ return element.value = _nullishCoalesce(value, () => ( ""));
237
+ case "checked":
238
+ return element.checked = !!value;
239
+ case "selected":
240
+ return element.selected = !!value;
241
+ // case "innerHTML":
242
+ // return element.innerHTML = value ?? ""
243
+ default:
244
+ if (value == null || value === false) {
245
+ element.removeAttribute(key);
246
+ } else if (key.startsWith("on")) {
247
+ element[key] = value;
248
+ } else if (value == true) {
249
+ element.setAttribute(key, "");
250
+ } else {
251
+ element.setAttribute(key, value);
252
+ }
253
+ }
254
+ };
255
+ var removeAttribute = (element, key) => {
256
+ switch (key) {
257
+ case "value":
258
+ return element.value = null;
259
+ case "checked":
260
+ case "selected":
261
+ return element[key] = false;
262
+ default:
263
+ return key.startsWith("on") ? element[key] = null : element.removeAttribute(key);
264
+ }
265
+ };
266
+ var patchStyle = (element, oldStyle = {}, newStyle = {}) => {
267
+ for (const prop2 in oldStyle) {
268
+ if (!(prop2 in newStyle)) {
269
+ element.style[prop2] = null;
270
+ }
271
+ }
272
+ for (const prop2 in newStyle) {
273
+ if (oldStyle[prop2] !== newStyle[prop2]) {
274
+ element.style[prop2] = newStyle[prop2];
275
+ }
276
+ }
277
+ };
278
+ var createAttributes = (props) => props ? Object.entries(props).map(createAttribute).join("") : "";
279
+ var printAttribute = (key, value) => ` ${key}="${value.replaceAll('"', '\\"')}"`;
280
+ var createAttribute = ([key, value]) => htmlEventList.has(key) || key === "ref" ? "" : (value == null ? void 0 : value[reactiveSymbol]) ? lift((value2) => printAttribute(key, value2()), [value]) : printAttribute(key, value);
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+ exports.reactiveSymbol = reactiveSymbol; exports.observable = observable; exports.ref = ref; exports.state = state; exports.computed = computed; exports.effect = effect; exports.effect2 = effect2; exports.stateProxy = stateProxy; exports.transact = transact; exports.lift = lift; exports.liftFn = liftFn; exports.patchAttributes = patchAttributes; exports.createAttributes = createAttributes;
297
+ //# sourceMappingURL=chunk-7AQ257KF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dane/Documents/My%20Projects/oddo/packages/ui/dist/chunk-7AQ257KF.js"],"names":[],"mappings":"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","file":"/Users/dane/Documents/My Projects/oddo/packages/ui/dist/chunk-7AQ257KF.js","sourcesContent":[null]}
@@ -0,0 +1,297 @@
1
+ // src/reactive.mjs
2
+ var reactiveSymbol = /* @__PURE__ */ Symbol.for("oddo::is-reactive-handler-property-symbol");
3
+ var ReactiveContainer = class {
4
+ [reactiveSymbol] = true;
5
+ constructor(getter) {
6
+ this.get = getter;
7
+ Object.freeze(this);
8
+ }
9
+ };
10
+ var observable = (observers = /* @__PURE__ */ new Set()) => ({
11
+ subscribe: (fn) => observers.add(fn),
12
+ notify: () => {
13
+ const current = Array.from(observers);
14
+ observers.clear();
15
+ for (const observer of current) {
16
+ observer();
17
+ }
18
+ }
19
+ });
20
+ var ref = (value) => (...args) => args.length ? void (value = args[0]) : value;
21
+ var state = (state2) => {
22
+ const { subscribe, notify } = observable();
23
+ return [
24
+ new ReactiveContainer((caller) => (caller && subscribe(caller), state2)),
25
+ (value) => value !== state2 && (state2 = value, notify())
26
+ ];
27
+ };
28
+ var bindDependencies = (deps, cleanup) => deps.map((dep) => dep[reactiveSymbol] ? dep.get.bind(null, cleanup) : () => dep);
29
+ var computed = (fn, deps) => {
30
+ const { subscribe, notify } = observable();
31
+ let cache, cached = false;
32
+ deps = bindDependencies(deps, () => (cached = false, notify()));
33
+ return new ReactiveContainer(function computed2(caller) {
34
+ if (!cached) {
35
+ caller && subscribe(caller);
36
+ cache = fn(...deps);
37
+ cached = true;
38
+ }
39
+ return cache;
40
+ });
41
+ };
42
+ var effect = (fn, deps) => {
43
+ const effect3 = schedule.bind(null, () => fn(...deps));
44
+ deps = bindDependencies(deps, effect3);
45
+ effect3();
46
+ };
47
+ var effect2 = (fn, deps, run = true) => {
48
+ const effect3 = () => fn(...deps);
49
+ deps = bindDependencies(deps, schedule.bind(null, effect3));
50
+ run && effect3();
51
+ };
52
+ var queue = [];
53
+ var schedule = (effect3) => {
54
+ queue.length || queueMicrotask(executeQueue);
55
+ queue.push(effect3);
56
+ };
57
+ var executeQueue = () => {
58
+ for (const effect3 of queue) {
59
+ effect3();
60
+ }
61
+ queue.length = 0;
62
+ };
63
+ var copyOnWrite = (target) => {
64
+ let dirty = false;
65
+ return (update = true) => {
66
+ if (dirty) {
67
+ return target;
68
+ }
69
+ dirty = update;
70
+ return target = Object.assign(target.constructor(), target);
71
+ };
72
+ };
73
+ var noop = () => {
74
+ };
75
+ var stateProxy = (target, mutable, notifyParent) => {
76
+ if (target && typeof target === "object") {
77
+ const mutate = copyOnWrite(target);
78
+ const children = /* @__PURE__ */ new Map();
79
+ return new Proxy(noop, {
80
+ apply() {
81
+ return target = mutate(mutable);
82
+ },
83
+ set(_, key, value) {
84
+ if (record.hasOwnProperty(prop) && target[key] === value) return false;
85
+ if (children.has(key) && !(value && typeof value === "object")) {
86
+ children.delete(key);
87
+ }
88
+ target = mutate();
89
+ target[key] = value;
90
+ mutable || (notifyParent == null ? void 0 : notifyParent(target));
91
+ return true;
92
+ },
93
+ get(_, key) {
94
+ const value = Reflect.get(target, key, target);
95
+ if (!children.has(key)) {
96
+ children.set(stateProxy(value, mutable, (value2) => {
97
+ target = mutate();
98
+ target[key] = value2;
99
+ }));
100
+ }
101
+ return children.get(key);
102
+ }
103
+ });
104
+ }
105
+ return () => target;
106
+ };
107
+ var liftValue = (arg) => (arg == null ? void 0 : arg[reactiveSymbol]) ? arg.get() : arg;
108
+ var empty = Object.freeze([]);
109
+ var transact = (mutator, finalizer, targets, otherValues = empty) => {
110
+ otherValues = bindDependencies(otherValues);
111
+ return (...args) => {
112
+ const stateProxies = targets.map((state2) => stateProxy(state2.get()));
113
+ mutator(finalizer, ...stateProxies, ...otherValues, ...args.map(liftValue));
114
+ };
115
+ };
116
+ var lift = (fn, deps) => fn(...bindDependencies(deps));
117
+ var liftFn = (callbackFn, deps = empty) => (...args) => callbackFn(...deps.map(liftValue), ...args.map(liftValue));
118
+
119
+ // src/attrs.mjs
120
+ var htmlEventHandlers = [
121
+ "onpointerdown",
122
+ "onpointerup",
123
+ "onpointermove",
124
+ "onpointerover",
125
+ "onpointerout",
126
+ "onpointerenter",
127
+ "onpointerleave",
128
+ "onpointercancel",
129
+ "ongotpointercapture",
130
+ "onlostpointercapture",
131
+ "onclick",
132
+ "ondblclick",
133
+ "onmousedown",
134
+ "onmouseup",
135
+ "onmouseover",
136
+ "onmouseout",
137
+ "onmouseenter",
138
+ "onmouseleave",
139
+ "onmousemove",
140
+ "oncontextmenu",
141
+ "onwheel",
142
+ "onauxclick",
143
+ "onkeydown",
144
+ "onkeyup",
145
+ "onkeypress",
146
+ "oninput",
147
+ "onchange",
148
+ "onfocus",
149
+ "onblur",
150
+ "onfocusin",
151
+ "onfocusout",
152
+ "onsubmit",
153
+ "onreset",
154
+ "oninvalid",
155
+ "onsearch",
156
+ "onselect",
157
+ "onbeforeinput",
158
+ "ondrag",
159
+ "ondragstart",
160
+ "ondragend",
161
+ "ondragenter",
162
+ "ondragleave",
163
+ "ondragover",
164
+ "ondrop",
165
+ "onplay",
166
+ "onpause",
167
+ "onplaying",
168
+ "onended",
169
+ "onvolumechange",
170
+ "onwaiting",
171
+ "onstalled",
172
+ "onsuspend",
173
+ "onprogress",
174
+ "oncanplay",
175
+ "oncanplaythrough",
176
+ "onloadeddata",
177
+ "onloadedmetadata",
178
+ "onloadstart",
179
+ "ondurationchange",
180
+ "onratechange",
181
+ "onseeked",
182
+ "onseeking",
183
+ "onanimationstart",
184
+ "onanimationend",
185
+ "onanimationiteration",
186
+ "ontransitionstart",
187
+ "ontransitionend",
188
+ "ontransitionrun",
189
+ "ontransitioncancel",
190
+ "onload",
191
+ "onerror",
192
+ "onscroll",
193
+ "onscrollend",
194
+ "onresize",
195
+ "ontoggle",
196
+ "oncopy",
197
+ "oncut",
198
+ "onpaste"
199
+ ];
200
+ var htmlEventList = new Set(htmlEventHandlers);
201
+ var hydrateAttributes = (element, attrs) => {
202
+ for (const key in attrs) {
203
+ const maybeContainerValue = attrs[key];
204
+ const value = (maybeContainerValue == null ? void 0 : maybeContainerValue[reactiveSymbol]) ? maybeContainerValue.get() : maybeContainerValue;
205
+ key === "ref" && value(element);
206
+ htmlEventList.has(key) && (element[key] = value);
207
+ (value == null ? void 0 : value[reactiveSymbol]) && effect2((value2) => setAttribute(element, key, value2(), oldValue), [value], false);
208
+ }
209
+ };
210
+ var patchAttributes = (element, oldAttrs = {}) => (newAttrs, hydrating = false) => {
211
+ if (hydrating) {
212
+ oldAttrs = newAttrs;
213
+ return hydrateAttributes(element, newAttrs);
214
+ }
215
+ for (const key in oldAttrs) {
216
+ if (!(key in newAttrs)) {
217
+ removeAttribute(element, key);
218
+ }
219
+ }
220
+ for (const key in newAttrs) {
221
+ const oldValue2 = oldAttrs[key];
222
+ const newValue = newAttrs[key];
223
+ if (oldValue2 !== newValue) {
224
+ (newValue == null ? void 0 : newValue[reactiveSymbol]) ? effect2((newValue2) => setAttribute(element, key, newValue2(), oldValue2), [newValue], !hydrating) : setAttribute(element, key, newValue, oldValue2);
225
+ }
226
+ }
227
+ oldAttrs = newAttrs;
228
+ };
229
+ var setAttribute = (element, key, value, oldValue2) => {
230
+ switch (key) {
231
+ case "ref":
232
+ return value(element);
233
+ case "style":
234
+ return typeof value === "string" ? element.style = value : patchStyle(element, oldValue2, value);
235
+ case "value":
236
+ return element.value = value ?? "";
237
+ case "checked":
238
+ return element.checked = !!value;
239
+ case "selected":
240
+ return element.selected = !!value;
241
+ // case "innerHTML":
242
+ // return element.innerHTML = value ?? ""
243
+ default:
244
+ if (value == null || value === false) {
245
+ element.removeAttribute(key);
246
+ } else if (key.startsWith("on")) {
247
+ element[key] = value;
248
+ } else if (value == true) {
249
+ element.setAttribute(key, "");
250
+ } else {
251
+ element.setAttribute(key, value);
252
+ }
253
+ }
254
+ };
255
+ var removeAttribute = (element, key) => {
256
+ switch (key) {
257
+ case "value":
258
+ return element.value = null;
259
+ case "checked":
260
+ case "selected":
261
+ return element[key] = false;
262
+ default:
263
+ return key.startsWith("on") ? element[key] = null : element.removeAttribute(key);
264
+ }
265
+ };
266
+ var patchStyle = (element, oldStyle = {}, newStyle = {}) => {
267
+ for (const prop2 in oldStyle) {
268
+ if (!(prop2 in newStyle)) {
269
+ element.style[prop2] = null;
270
+ }
271
+ }
272
+ for (const prop2 in newStyle) {
273
+ if (oldStyle[prop2] !== newStyle[prop2]) {
274
+ element.style[prop2] = newStyle[prop2];
275
+ }
276
+ }
277
+ };
278
+ var createAttributes = (props) => props ? Object.entries(props).map(createAttribute).join("") : "";
279
+ var printAttribute = (key, value) => ` ${key}="${value.replaceAll('"', '\\"')}"`;
280
+ var createAttribute = ([key, value]) => htmlEventList.has(key) || key === "ref" ? "" : (value == null ? void 0 : value[reactiveSymbol]) ? lift((value2) => printAttribute(key, value2()), [value]) : printAttribute(key, value);
281
+
282
+ export {
283
+ reactiveSymbol,
284
+ observable,
285
+ ref,
286
+ state,
287
+ computed,
288
+ effect,
289
+ effect2,
290
+ stateProxy,
291
+ transact,
292
+ lift,
293
+ liftFn,
294
+ patchAttributes,
295
+ createAttributes
296
+ };
297
+ //# sourceMappingURL=chunk-UD3G5YTZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/reactive.mjs","../src/attrs.mjs"],"sourcesContent":["export const reactiveSymbol = Symbol.for(\"oddo::is-reactive-handler-property-symbol\")\r\n\r\nclass ReactiveContainer {\r\n [reactiveSymbol] = true\r\n\r\n constructor (getter) {\r\n this.get = getter\r\n Object.freeze(this)\r\n }\r\n}\r\n\r\nexport const observable = (observers = new Set) => ({\r\n subscribe: (fn) => observers.add(fn),\r\n notify: () => {\r\n const current = Array.from(observers)\r\n observers.clear()\r\n for (const observer of current) { observer() }\r\n }\r\n})\r\n\r\n// export const ref = (value) =>\r\n// new ReactiveContainer((...args) => args.length ? void (value = args[0]) : value)\r\nexport const ref = (value) => (...args) => args.length ? void (value = args[0]) : value\r\n\r\nexport const state = (state) => {\r\n const { subscribe, notify } = observable()\r\n return [\r\n new ReactiveContainer(caller => (caller && subscribe(caller), state)),\r\n value => value !== state && (state = value, notify())\r\n ]\r\n}\r\n\r\nexport const bindDependencies = (deps, cleanup) =>\r\n deps.map(dep => dep[reactiveSymbol] ? dep.get.bind(null, cleanup) : () => dep)\r\n\r\nexport const computed = (fn, deps) => {\r\n const { subscribe, notify } = observable()\r\n let cache, cached = false\r\n deps = bindDependencies(deps, () => (cached = false, notify()))\r\n\r\n return new ReactiveContainer(function computed (caller) {\r\n if (!cached) {\r\n caller && subscribe(caller)\r\n cache = fn(...deps)\r\n cached = true\r\n }\r\n return cache\r\n })\r\n}\r\n\r\nexport const effect = (fn, deps) => {\r\n const effect = schedule.bind(null, () => fn(...deps))\r\n deps = bindDependencies(deps, effect)\r\n effect()\r\n}\r\n\r\nexport const effect2 = (fn, deps, run = true) => {\r\n const effect = () => fn(...deps)\r\n deps = bindDependencies(deps, schedule.bind(null, effect))\r\n run && effect()\r\n}\r\n\r\nconst queue = []\r\nexport const schedule = (effect) => {\r\n queue.length || queueMicrotask(executeQueue)\r\n queue.push(effect)\r\n}\r\n\r\nexport const executeQueue = () => {\r\n for (const effect of queue) { effect() }\r\n queue.length = 0\r\n}\r\n\r\nconst copyOnWrite = (target) => {\r\n\tlet dirty = false\r\n\treturn (update = true) => {\r\n\t\tif (dirty) {\r\n\t\t\treturn target\r\n\t\t}\r\n\t\tdirty = update\r\n\t\treturn target = Object.assign(target.constructor(), target)\r\n\t}\r\n};\r\n\r\nconst noop = () => {}\r\nexport const stateProxy = (target, mutable, notifyParent) => {\r\n if (target && typeof target === \"object\") {\r\n const mutate = copyOnWrite(target)\r\n const children = new Map()\r\n return new Proxy(noop, {\r\n apply () {\r\n return target = mutate(mutable)\r\n },\r\n set (_, key, value) {\r\n if (record.hasOwnProperty(prop) && target[key] === value) return false\r\n if (children.has(key) && !(value && typeof value === \"object\")) {\r\n children.delete(key)\r\n }\r\n target = mutate()\r\n target[key] = value\r\n mutable || notifyParent?.(target)\r\n return true\r\n },\r\n get (_, key) {\r\n const value = Reflect.get(target, key, target)\r\n if (!children.has(key)) {\r\n children.set(stateProxy(value, mutable, (value) => {\r\n target = mutate()\r\n target[key] = value\r\n }))\r\n }\r\n return children.get(key)\r\n }\r\n })\r\n }\r\n return () => target\r\n}\r\n\r\nconst liftValue = arg => arg?.[reactiveSymbol] ? arg.get() : arg\r\nconst empty = Object.freeze([])\r\n\r\nexport const mutate = (mutator, targets, otherValues = empty) => {\r\n otherValues = bindDependencies(otherValues)\r\n return (...args) => {\r\n const stateProxies = targets.map(state => stateProxy(state.get()))\r\n mutator(...stateProxies, ...otherValues, ...args.map(liftValue))\r\n }\r\n}\r\n\r\nexport const transact = (mutator, finalizer, targets, otherValues = empty) => {\r\n otherValues = bindDependencies(otherValues)\r\n return (...args) => {\r\n const stateProxies = targets.map(state => stateProxy(state.get())) // we also need to include mutable (LET) variables here\r\n mutator(finalizer, ...stateProxies, ...otherValues, ...args.map(liftValue))\r\n }\r\n}\r\n\r\nexport const lift = (fn, deps) => fn(...bindDependencies(deps))\r\nexport const liftFn = (callbackFn, deps = empty) => (...args) =>\r\n callbackFn(...deps.map(liftValue), ...args.map(liftValue))\r\n","import { reactiveSymbol, effect2, lift } from \"./reactive.mjs\"\r\n\r\nconst htmlEventHandlers = [\r\n \"onpointerdown\", \"onpointerup\", \"onpointermove\", \"onpointerover\", \"onpointerout\", \"onpointerenter\", \"onpointerleave\", \"onpointercancel\", \"ongotpointercapture\", \"onlostpointercapture\", \"onclick\", \"ondblclick\", \"onmousedown\", \"onmouseup\", \"onmouseover\", \"onmouseout\", \"onmouseenter\", \"onmouseleave\", \"onmousemove\", \"oncontextmenu\", \"onwheel\", \"onauxclick\", \"onkeydown\", \"onkeyup\", \"onkeypress\", \"oninput\", \"onchange\", \"onfocus\", \"onblur\", \"onfocusin\", \"onfocusout\", \"onsubmit\", \"onreset\", \"oninvalid\", \"onsearch\", \"onselect\", \"onbeforeinput\", \"ondrag\", \"ondragstart\", \"ondragend\", \"ondragenter\", \"ondragleave\", \"ondragover\", \"ondrop\", \"onplay\", \"onpause\", \"onplaying\", \"onended\", \"onvolumechange\", \"onwaiting\", \"onstalled\", \"onsuspend\", \"onprogress\", \"oncanplay\", \"oncanplaythrough\", \"onloadeddata\", \"onloadedmetadata\", \"onloadstart\", \"ondurationchange\", \"onratechange\", \"onseeked\", \"onseeking\", \"onanimationstart\", \"onanimationend\", \"onanimationiteration\", \"ontransitionstart\", \"ontransitionend\", \"ontransitionrun\", \"ontransitioncancel\", \"onload\", \"onerror\", \"onscroll\", \"onscrollend\", \"onresize\", \"ontoggle\", \"oncopy\", \"oncut\", \"onpaste\"\r\n];\r\nconst htmlEventList = new Set(htmlEventHandlers)\r\n\r\nconst hydrateAttributes = (element, attrs) => {\r\n for (const key in attrs) {\r\n const maybeContainerValue = attrs[key]\r\n const value = maybeContainerValue?.[reactiveSymbol] ? maybeContainerValue.get() : maybeContainerValue;\r\n key === \"ref\" && value(element)\r\n htmlEventList.has(key) && (element[key] = value)\r\n value?.[reactiveSymbol] && effect2((value) => setAttribute(element, key, value(), oldValue), [value], false)\r\n }\r\n}\r\n\r\nexport const patchAttributes = (element, oldAttrs = {}) => (newAttrs, hydrating = false) => {\r\n if (hydrating) {\r\n oldAttrs = newAttrs\r\n return hydrateAttributes(element, newAttrs)\r\n }\r\n\r\n for (const key in oldAttrs) {\r\n if (!(key in newAttrs)) {\r\n removeAttribute(element, key)\r\n }\r\n }\r\n\r\n for (const key in newAttrs) {\r\n const oldValue = oldAttrs[key]\r\n const newValue = newAttrs[key]\r\n\r\n if (oldValue !== newValue) {\r\n newValue?.[reactiveSymbol]\r\n ? effect2((newValue) => setAttribute(element, key, newValue(), oldValue), [newValue], !hydrating)\r\n : setAttribute(element, key, newValue, oldValue)\r\n }\r\n }\r\n oldAttrs = newAttrs\r\n}\r\n\r\nconst setAttribute = (element, key, value, oldValue) => {\r\n switch (key) {\r\n case \"ref\":\r\n return value(element)\r\n case \"style\":\r\n return typeof value === \"string\"\r\n ? element.style = value\r\n : patchStyle(element, oldValue, value)\r\n case \"value\":\r\n return element.value = value ?? \"\"\r\n case \"checked\":\r\n return element.checked = !!value\r\n case \"selected\":\r\n return element.selected = !!value\r\n // case \"innerHTML\":\r\n // return element.innerHTML = value ?? \"\"\r\n default:\r\n if (value == null || value === false) {\r\n element.removeAttribute(key)\r\n } else if (key.startsWith(\"on\")) {\r\n element[key] = value\r\n } else if (value == true) {\r\n element.setAttribute(key, \"\")\r\n } else {\r\n element.setAttribute(key, value)\r\n }\r\n }\r\n}\r\n\r\nconst removeAttribute = (element, key) => {\r\n switch (key) {\r\n case 'value':\r\n return element.value = null\r\n case 'checked':\r\n case 'selected':\r\n return element[key] = false\r\n default:\r\n return key.startsWith('on')\r\n ? element[key] = null\r\n : element.removeAttribute(key)\r\n }\r\n}\r\n\r\nconst patchStyle = (element, oldStyle = {}, newStyle = {}) => {\r\n for (const prop in oldStyle) {\r\n if (!(prop in newStyle)) {\r\n element.style[prop] = null;\r\n }\r\n }\r\n for (const prop in newStyle) {\r\n if (oldStyle[prop] !== newStyle[prop]) {\r\n element.style[prop] = newStyle[prop];\r\n }\r\n }\r\n}\r\n\r\nexport const createAttributes = props => props\r\n ? Object.entries(props)\r\n .map(createAttribute)\r\n .join(\"\")\r\n : \"\"\r\n\r\n\r\nconst printAttribute = (key, value) => ` ${key}=\"${value.replaceAll(\"\\\"\", \"\\\\\\\"\")}\"`\r\nconst createAttribute = ([key, value]) => (htmlEventList.has(key) || key === \"ref\") ? \"\" : value?.[reactiveSymbol]\r\n ? lift(value => printAttribute(key, value()), [value])\r\n : printAttribute(key, value)\r\n"],"mappings":"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","names":["state","computed","effect","value","state","value","oldValue","newValue","prop"]}