@oddo/ui 0.0.3 → 0.0.4

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/index.mjs CHANGED
@@ -1,182 +1,17 @@
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 state = (state2) => {
21
- const { subscribe, notify } = observable();
22
- return [
23
- new ReactiveContainer((caller) => (caller && subscribe(caller), state2)),
24
- (value) => value !== state2 && (state2 = value, notify())
25
- ];
26
- };
27
- var bindDependencies = (deps, cleanup) => deps.map((dep) => dep[reactiveSymbol] ? dep.get.bind(null, cleanup) : () => dep);
28
- var computed = (fn, deps) => {
29
- const { subscribe, notify } = observable();
30
- let cache, cached = false;
31
- deps = bindDependencies(deps, () => (cached = false, notify()));
32
- return new ReactiveContainer(function computed2(caller) {
33
- if (!cached) {
34
- caller && subscribe(caller);
35
- cache = fn(...deps);
36
- cached = true;
37
- }
38
- return cache;
39
- });
40
- };
41
- var effect = (fn, deps) => {
42
- const effect3 = schedule.bind(null, () => fn(...deps));
43
- deps = bindDependencies(deps, effect3);
44
- effect3();
45
- };
46
- var effect2 = (fn, deps) => {
47
- const effect3 = () => fn(...deps);
48
- deps = bindDependencies(deps, schedule.bind(null, effect3));
49
- effect3();
50
- };
51
- var queue = [];
52
- var schedule = (effect3) => {
53
- queue.length || queueMicrotask(executeQueue);
54
- queue.push(effect3);
55
- };
56
- var executeQueue = () => {
57
- for (const effect3 of queue) {
58
- effect3();
59
- }
60
- queue.length = 0;
61
- };
62
- var copyOnWrite = (target) => {
63
- let dirty = false;
64
- return (update = true) => {
65
- if (dirty) {
66
- return target;
67
- }
68
- dirty = update;
69
- return target = Object.assign(target.constructor(), target);
70
- };
71
- };
72
- var noop = () => {
73
- };
74
- var stateProxy = (target, mutable, notifyParent) => {
75
- if (target && typeof target === "object") {
76
- const mutate = copyOnWrite(target);
77
- const children = /* @__PURE__ */ new Map();
78
- return new Proxy(noop, {
79
- apply() {
80
- return target = mutate(mutable);
81
- },
82
- set(_, key, value) {
83
- if (record.hasOwnProperty(prop) && target[key] === value) return false;
84
- if (children.has(key) && !(value && typeof value === "object")) {
85
- children.delete(key);
86
- }
87
- target = mutate();
88
- target[key] = value;
89
- mutable || (notifyParent == null ? void 0 : notifyParent(target));
90
- return true;
91
- },
92
- get(_, key) {
93
- const value = Reflect.get(target, key, target);
94
- if (!children.has(key)) {
95
- children.set(stateProxy(value, mutable, (value2) => {
96
- target = mutate();
97
- target[key] = value2;
98
- }));
99
- }
100
- return children.get(key);
101
- }
102
- });
103
- }
104
- return () => target;
105
- };
106
- var liftValue = (arg) => (arg == null ? void 0 : arg[reactiveSymbol]) ? arg.get() : arg;
107
- var empty = Object.freeze([]);
108
- var transact = (mutator, finalizer, targets, otherValues = empty) => {
109
- otherValues = bindDependencies(otherValues);
110
- return (...args) => {
111
- const stateProxies = targets.map((state2) => stateProxy(state2.get()));
112
- mutator(finalizer, ...stateProxies, ...otherValues, ...args.map(liftValue));
113
- };
114
- };
115
- var lift = (fn, deps) => fn(...bindDependencies(deps));
116
- var liftFn = (callbackFn, deps = empty) => (...args) => callbackFn(...deps.map(liftValue), ...args.map(liftValue));
117
-
118
- // src/attrs.mjs
119
- var patchAttributes = (el, newAttrs, oldAttrs = {}) => {
120
- for (const key in oldAttrs) {
121
- if (!(key in newAttrs)) {
122
- removeAttribute(el, key);
123
- }
124
- }
125
- for (const key in newAttrs) {
126
- const oldValue = oldAttrs[key];
127
- const newValue = newAttrs[key];
128
- if (oldValue !== newValue) {
129
- (newValue == null ? void 0 : newValue[reactiveSymbol]) ? effect2((newValue2) => setAttribute(el, key, newValue2(), oldValue), [newValue]) : setAttribute(el, key, newValue, oldValue);
130
- }
131
- }
132
- };
133
- var setAttribute = (element, key, value, oldValue) => {
134
- switch (key) {
135
- case "style":
136
- return typeof value === "string" ? element.style = value : patchStyle(element, oldValue, value);
137
- case "value":
138
- return element.value = value ?? "";
139
- case "checked":
140
- return element.checked = !!value;
141
- case "selected":
142
- return element.selected = !!value;
143
- case "innerHTML":
144
- return element.innerHTML = value ?? "";
145
- default:
146
- if (value == null || value === false) {
147
- element.removeAttribute(key);
148
- } else if (key.startsWith("on")) {
149
- element[key] = value;
150
- } else if (value == true) {
151
- element.setAttribute(key, "");
152
- } else {
153
- element.setAttribute(key, value);
154
- }
155
- }
156
- };
157
- var removeAttribute = (element, key) => {
158
- switch (key) {
159
- case "value":
160
- return element.value = null;
161
- case "checked":
162
- case "selected":
163
- return element[key] = false;
164
- default:
165
- return key.startsWith("on") ? element[key] = null : element.removeAttribute(key);
166
- }
167
- };
168
- var patchStyle = (element, oldStyle = {}, newStyle = {}) => {
169
- for (const prop2 in oldStyle) {
170
- if (!(prop2 in newStyle)) {
171
- element.style[prop2] = null;
172
- }
173
- }
174
- for (const prop2 in newStyle) {
175
- if (oldStyle[prop2] !== newStyle[prop2]) {
176
- element.style[prop2] = newStyle[prop2];
177
- }
178
- }
179
- };
1
+ import {
2
+ computed,
3
+ effect,
4
+ effect2,
5
+ lift,
6
+ liftFn,
7
+ observable,
8
+ patchAttributes,
9
+ reactiveSymbol,
10
+ ref,
11
+ state,
12
+ stateProxy,
13
+ transact
14
+ } from "./chunk-UD3G5YTZ.mjs";
180
15
 
181
16
  // src/dom.mjs
182
17
  var emptyObject = {};
@@ -207,14 +42,14 @@ var createJsxExpression = (fn, deps) => (parent) => {
207
42
  };
208
43
  var createFragment = (...children) => (parent, oldNodeCleanup) => {
209
44
  const node = new DocumentFragment();
210
- const startNode = document.createComment("<");
211
- const endNode = document.createComment(">");
212
- node.appendChild(startNode);
45
+ const startNode = hydrating ? walk() : document.createComment("<");
46
+ hydrating || node.appendChild(startNode);
213
47
  for (const child of children) {
214
48
  render(child)(node);
215
49
  }
216
- node.appendChild(endNode);
217
- oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node);
50
+ const endNode = hydrating ? walk() : document.createComment(">");
51
+ hydrating || node.appendChild(endNode);
52
+ oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node);
218
53
  return (parent2, newElement) => {
219
54
  const range = document.createRange();
220
55
  range.setStart(startNode, 1);
@@ -224,12 +59,16 @@ var createFragment = (...children) => (parent, oldNodeCleanup) => {
224
59
  };
225
60
  };
226
61
  var createElement = (tag, attrs, ...children) => (parent, oldNodeCleanup) => {
227
- const node = document.createElement(tag);
228
- (attrs == null ? void 0 : attrs[reactiveSymbol]) ? effect2((attrs2) => attrs2 = patchAttributes(node, attrs2()), [attrs]) : patchAttributes(node, attrs);
62
+ const node = hydrating ? walk() : document.createElement(tag);
63
+ const patch = patchAttributes(node);
64
+ (attrs == null ? void 0 : attrs[reactiveSymbol]) ? effect2((attrs2) => patch(attrs2(), hydrating), [attrs]) : patch(attrs, hydrating);
65
+ const temp = walk;
66
+ hydrating && (walk = domWalker(node.childNodes));
229
67
  for (const child of children) {
230
68
  render(child)(node);
231
69
  }
232
- oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node);
70
+ hydrating && (walk = temp);
71
+ oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node);
233
72
  return (parent2, newElement) => {
234
73
  parent2.replaceChild(newElement, node);
235
74
  };
@@ -268,15 +107,15 @@ var render = (vdom) => {
268
107
  }
269
108
  };
270
109
  var createNullElement = () => (parent, oldNodeCleanup) => {
271
- const node = document.createComment("|");
272
- oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node);
110
+ const node = hydrating ? walk() : document.createComment("|");
111
+ oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node);
273
112
  return (parent2, newElement) => {
274
113
  parent2.replaceChild(newElement, node);
275
114
  };
276
115
  };
277
116
  var createTextElement = (text) => (parent, oldNodeCleanup) => {
278
- const node = document.createTextNode(text);
279
- oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node);
117
+ const node = hydrating ? (walk(), walk()) : document.createTextNode(text);
118
+ oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node);
280
119
  return (parent2, newElement) => {
281
120
  parent2.replaceChild(newElement, node);
282
121
  };
@@ -284,6 +123,20 @@ var createTextElement = (text) => (parent, oldNodeCleanup) => {
284
123
  var mount = (root, jsx) => {
285
124
  render(jsx)(root);
286
125
  };
126
+ var hydrating = false;
127
+ var hydrate = (root, jsx) => {
128
+ hydrating = true;
129
+ walk = domWalker(root.childNodes);
130
+ render(jsx)(root);
131
+ hydrating = false;
132
+ };
133
+ var walk;
134
+ var domWalker = (children) => {
135
+ let cursor = 0;
136
+ console.log("NEW WALKER", { cursor, children });
137
+ return () => log(children[cursor++], { cursor, children });
138
+ };
139
+ var log = (item, ...args) => (console.log({ item }, ...args), item);
287
140
  export {
288
141
  createComponent as c,
289
142
  computed,
@@ -294,10 +147,12 @@ export {
294
147
  createElement as e,
295
148
  effect,
296
149
  createFragment as f,
150
+ hydrate,
297
151
  lift,
298
152
  liftFn,
299
153
  mount,
300
154
  transact as mutate,
155
+ ref,
301
156
  state,
302
157
  stateProxy,
303
158
  transact,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/reactive.mjs","../src/attrs.mjs","../src/dom.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\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) => {\r\n const effect = () => fn(...deps)\r\n deps = bindDependencies(deps, schedule.bind(null, effect))\r\n 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 } from \"./reactive.mjs\"\r\nexport const patchAttributes = (el, newAttrs, oldAttrs = {}) => {\r\n for (const key in oldAttrs) {\r\n if (!(key in newAttrs)) {\r\n removeAttribute(el, 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(el, key, newValue(), oldValue), [newValue])\r\n : setAttribute(el, key, newValue, oldValue)\r\n }\r\n }\r\n}\r\n\r\nconst setAttribute = (element, key, value, oldValue) => {\r\n switch (key) {\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","import { patchAttributes } from \"./attrs.mjs\"\nimport { observable, reactiveSymbol, effect2, computed } from \"./reactive.mjs\"\n\nconst emptyObject = {}\n\nlet currentContext = null\nconst cleanupContext = (parent) => {\n const { subscribe, notify: disposeChildren} = observable()\n const { subscribe: onCleanup, notify: runCleanup} = observable()\n const dispose = () => (runCleanup(), disposeChildren())\n parent?.(dispose)\n\n return { onCleanup, dispose, subscribe }\n}\n\nexport const createJsxExpression = (fn, deps) => (parent) => {\n let patch\n let dispose\n let subscribe\n\n effect2(\n (vdom) => {\n dispose?.()\n const content = vdom();\n ({ dispose, subscribe } = typeof vdom === \"function\" ? cleanupContext(currentContext) : emptyObject)\n const prevContext = currentContext\n currentContext = subscribe\n patch = render(content)(parent, patch)\n currentContext = prevContext\n },\n [computed(fn, deps)]\n )\n}\n\nexport const createFragment = (...children) => (parent, oldNodeCleanup) => {\n const node = new DocumentFragment\n const startNode = document.createComment(\"<\")\n const endNode = document.createComment(\">\")\n node.appendChild(startNode)\n for (const child of children) {\n render(child)(node)\n }\n node.appendChild(endNode)\n oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node)\n\n return (parent, newElement) => {\n const range = document.createRange()\n range.setStart(startNode, 1)\n range.setEnd(endNode, 0)\n range.deleteContents()\n parent.replaceChild(newElement, startNode)\n }\n}\n\nexport const createElement = (tag, attrs, ...children) => (parent, oldNodeCleanup) => {\n const node = document.createElement(tag)\n attrs?.[reactiveSymbol]\n ? effect2((attrs) => attrs = patchAttributes(node, attrs()), [attrs])\n : patchAttributes(node, attrs)\n\n for (const child of children) {\n render(child)(node)\n }\n oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const createComponent = (component, props, ...children) => (parent, oldNodeCleanup) => {\n const initializers = []\n const { dispose, subscribe, onCleanup } = cleanupContext(currentContext)\n const prevContext = currentContext\n currentContext = subscribe\n const expressionOrVdom = component.call({ onCleanup, onMount: fn => initializers.push(fn) }, { props, children })\n const nodeCleanup = render(expressionOrVdom)(parent, oldNodeCleanup)\n currentContext = prevContext\n\n for (const initializer of initializers) { initializer() }\n\n return (parent, newElement) => {\n dispose()\n nodeCleanup(parent, newElement)\n }\n}\n\nexport const render = vdom => {\n if (Array.isArray(vdom)) return createFragment(...vdom)\n switch (vdom) {\n case true:\n case false:\n case null:\n case undefined:\n return createNullElement()\n }\n\n switch (typeof vdom) {\n case \"string\":\n case \"number\":\n return createTextElement(vdom)\n case \"function\":\n return vdom\n }\n}\n\nexport const createNullElement = () => (parent, oldNodeCleanup) => {\n const node = document.createComment(\"|\")\n oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const createTextElement = (text) => (parent, oldNodeCleanup) => {\n const node = document.createTextNode(text)\n oldNodeCleanup ? oldNodeCleanup(parent, node) : parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const mount = (root, jsx) => {\n render(jsx)(root)\n}\n"],"mappings":"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","names":["state","computed","effect","value","state","newValue","prop","parent","attrs"]}
1
+ {"version":3,"sources":["../src/dom.mjs"],"sourcesContent":["import { patchAttributes } from \"./attrs.mjs\"\nimport { observable, reactiveSymbol, effect2, computed } from \"./reactive.mjs\"\n\nconst emptyObject = {}\n\nlet currentContext = null\nconst cleanupContext = (parent) => {\n const { subscribe, notify: disposeChildren} = observable()\n const { subscribe: onCleanup, notify: runCleanup} = observable()\n const dispose = () => (runCleanup(), disposeChildren())\n parent?.(dispose)\n\n return { onCleanup, dispose, subscribe }\n}\n\nexport const createJsxExpression = (fn, deps) => (parent) => {\n let patch\n let dispose\n let subscribe\n\n effect2(\n (vdom) => {\n dispose?.()\n const content = vdom();\n ({ dispose, subscribe } = typeof vdom === \"function\" ? cleanupContext(currentContext) : emptyObject)\n const prevContext = currentContext\n currentContext = subscribe\n patch = render(content)(parent, patch)\n currentContext = prevContext\n },\n [computed(fn, deps)]\n )\n}\n\nexport const createFragment = (...children) => (parent, oldNodeCleanup) => {\n const node = new DocumentFragment\n const startNode = hydrating ? walk() : document.createComment(\"<\")\n hydrating || node.appendChild(startNode)\n for (const child of children) {\n render(child)(node)\n }\n const endNode = hydrating ? walk() : document.createComment(\">\")\n hydrating || node.appendChild(endNode)\n oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node)\n\n return (parent, newElement) => {\n const range = document.createRange()\n range.setStart(startNode, 1)\n range.setEnd(endNode, 0)\n range.deleteContents()\n parent.replaceChild(newElement, startNode)\n }\n}\n\nexport const createElement = (tag, attrs, ...children) => (parent, oldNodeCleanup) => {\n const node = hydrating ? walk() : document.createElement(tag)\n const patch = patchAttributes(node)\n attrs?.[reactiveSymbol]\n ? effect2((attrs) => patch(attrs(), hydrating), [attrs])\n : patch(attrs, hydrating)\n\n const temp = walk\n hydrating && (walk = domWalker(node.childNodes))\n for (const child of children) { render(child)(node) }\n hydrating && (walk = temp)\n oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const createComponent = (component, props, ...children) => (parent, oldNodeCleanup) => {\n const initializers = []\n const { dispose, subscribe, onCleanup } = cleanupContext(currentContext)\n const prevContext = currentContext\n currentContext = subscribe\n const expressionOrVdom = component.call({ onCleanup, onMount: fn => initializers.push(fn) }, { props, children })\n const nodeCleanup = render(expressionOrVdom)(parent, oldNodeCleanup)\n currentContext = prevContext\n\n for (const initializer of initializers) { initializer() }\n\n return (parent, newElement) => {\n dispose()\n nodeCleanup(parent, newElement)\n }\n}\n\nexport const render = vdom => {\n if (Array.isArray(vdom)) return createFragment(...vdom)\n switch (vdom) {\n case true:\n case false:\n case null:\n case undefined:\n return createNullElement()\n }\n\n switch (typeof vdom) {\n case \"string\":\n case \"number\":\n return createTextElement(vdom)\n case \"function\":\n return vdom\n }\n}\n\nexport const createNullElement = () => (parent, oldNodeCleanup) => {\n const node = hydrating ? walk() : document.createComment(\"|\")\n oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const createTextElement = (text) => (parent, oldNodeCleanup) => {\n const node = hydrating ? (walk(), walk()) : document.createTextNode(text)\n oldNodeCleanup ? oldNodeCleanup(parent, node) : hydrating || parent.appendChild(node)\n\n return (parent, newElement) => {\n parent.replaceChild(newElement, node)\n }\n}\n\nexport const mount = (root, jsx) => {\n render(jsx)(root)\n}\n\nlet hydrating = false\nexport const hydrate = (root, jsx) => {\n hydrating = true\n walk = domWalker(root.childNodes)\n render(jsx)(root)\n hydrating = false\n}\n\nlet walk\nconst domWalker = children => {\n let cursor = 0\n console.log(\"NEW WALKER\", { cursor, children })\n return () => log(children[cursor++], {cursor, children})\n}\n\nconst log = (item, ...args) => (console.log({ item }, ...args), item)\n"],"mappings":";;;;;;;;;;;;;;;;AAGA,IAAM,cAAc,CAAC;AAErB,IAAI,iBAAiB;AACrB,IAAM,iBAAiB,CAAC,WAAW;AACjC,QAAM,EAAE,WAAW,QAAQ,gBAAe,IAAI,WAAW;AACzD,QAAM,EAAE,WAAW,WAAW,QAAQ,WAAU,IAAI,WAAW;AAC/D,QAAM,UAAU,OAAO,WAAW,GAAG,gBAAgB;AACrD,mCAAS;AAET,SAAO,EAAE,WAAW,SAAS,UAAU;AACzC;AAEO,IAAM,sBAAsB,CAAC,IAAI,SAAS,CAAC,WAAW;AAC3D,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ;AAAA,IACE,CAAC,SAAS;AACR;AACA,YAAM,UAAU,KAAK;AACrB,OAAC,EAAE,SAAS,UAAU,IAAI,OAAO,SAAS,aAAa,eAAe,cAAc,IAAI;AACxF,YAAM,cAAc;AACpB,uBAAiB;AACjB,cAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK;AACrC,uBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,SAAS,IAAI,IAAI,CAAC;AAAA,EACrB;AACF;AAEO,IAAM,iBAAiB,IAAI,aAAa,CAAC,QAAQ,mBAAmB;AACzE,QAAM,OAAO,IAAI;AACjB,QAAM,YAAY,YAAY,KAAK,IAAI,SAAS,cAAc,GAAG;AACjE,eAAa,KAAK,YAAY,SAAS;AACvC,aAAW,SAAS,UAAU;AAC5B,WAAO,KAAK,EAAE,IAAI;AAAA,EACpB;AACA,QAAM,UAAU,YAAY,KAAK,IAAI,SAAS,cAAc,GAAG;AAC/D,eAAa,KAAK,YAAY,OAAO;AACrC,mBAAiB,eAAe,QAAQ,IAAI,IAAI,aAAa,OAAO,YAAY,IAAI;AAEpF,SAAO,CAACA,SAAQ,eAAe;AAC7B,UAAM,QAAQ,SAAS,YAAY;AACnC,UAAM,SAAS,WAAW,CAAC;AAC3B,UAAM,OAAO,SAAS,CAAC;AACvB,UAAM,eAAe;AACrB,IAAAA,QAAO,aAAa,YAAY,SAAS;AAAA,EAC3C;AACF;AAEO,IAAM,gBAAgB,CAAC,KAAK,UAAU,aAAa,CAAC,QAAQ,mBAAmB;AACpF,QAAM,OAAO,YAAY,KAAK,IAAI,SAAS,cAAc,GAAG;AAC5D,QAAM,QAAQ,gBAAgB,IAAI;AAClC,kCAAQ,mBACJ,QAAQ,CAACC,WAAU,MAAMA,OAAM,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,IACrD,MAAM,OAAO,SAAS;AAE1B,QAAM,OAAO;AACb,gBAAc,OAAO,UAAU,KAAK,UAAU;AAC9C,aAAW,SAAS,UAAU;AAAE,WAAO,KAAK,EAAE,IAAI;AAAA,EAAE;AACpD,gBAAc,OAAO;AACrB,mBAAiB,eAAe,QAAQ,IAAI,IAAI,aAAa,OAAO,YAAY,IAAI;AAEpF,SAAO,CAACD,SAAQ,eAAe;AAC7B,IAAAA,QAAO,aAAa,YAAY,IAAI;AAAA,EACtC;AACF;AAEO,IAAM,kBAAkB,CAAC,WAAW,UAAU,aAAa,CAAC,QAAQ,mBAAmB;AAC5F,QAAM,eAAe,CAAC;AACtB,QAAM,EAAE,SAAS,WAAW,UAAU,IAAI,eAAe,cAAc;AACvE,QAAM,cAAc;AACpB,mBAAiB;AACjB,QAAM,mBAAmB,UAAU,KAAK,EAAE,WAAW,SAAS,QAAM,aAAa,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,SAAS,CAAC;AAChH,QAAM,cAAc,OAAO,gBAAgB,EAAE,QAAQ,cAAc;AACnE,mBAAiB;AAEjB,aAAW,eAAe,cAAc;AAAE,gBAAY;AAAA,EAAE;AAExD,SAAO,CAACA,SAAQ,eAAe;AAC7B,YAAQ;AACR,gBAAYA,SAAQ,UAAU;AAAA,EAChC;AACF;AAEO,IAAM,SAAS,UAAQ;AAC5B,MAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,eAAe,GAAG,IAAI;AACtD,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,kBAAkB;AAAA,EAC7B;AAEA,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,kBAAkB,IAAI;AAAA,IAC/B,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEO,IAAM,oBAAoB,MAAM,CAAC,QAAQ,mBAAmB;AACjE,QAAM,OAAO,YAAY,KAAK,IAAI,SAAS,cAAc,GAAG;AAC5D,mBAAiB,eAAe,QAAQ,IAAI,IAAI,aAAa,OAAO,YAAY,IAAI;AAEpF,SAAO,CAACA,SAAQ,eAAe;AAC7B,IAAAA,QAAO,aAAa,YAAY,IAAI;AAAA,EACtC;AACF;AAEO,IAAM,oBAAoB,CAAC,SAAS,CAAC,QAAQ,mBAAmB;AACrE,QAAM,OAAO,aAAa,KAAK,GAAG,KAAK,KAAK,SAAS,eAAe,IAAI;AACxE,mBAAiB,eAAe,QAAQ,IAAI,IAAI,aAAa,OAAO,YAAY,IAAI;AAEpF,SAAO,CAACA,SAAQ,eAAe;AAC7B,IAAAA,QAAO,aAAa,YAAY,IAAI;AAAA,EACtC;AACF;AAEO,IAAM,QAAQ,CAAC,MAAM,QAAQ;AAClC,SAAO,GAAG,EAAE,IAAI;AAClB;AAEA,IAAI,YAAY;AACT,IAAM,UAAU,CAAC,MAAM,QAAQ;AACpC,cAAY;AACZ,SAAO,UAAU,KAAK,UAAU;AAChC,SAAO,GAAG,EAAE,IAAI;AAChB,cAAY;AACd;AAEA,IAAI;AACJ,IAAM,YAAY,cAAY;AAC5B,MAAI,SAAS;AACb,UAAQ,IAAI,cAAc,EAAE,QAAQ,SAAS,CAAC;AAC9C,SAAO,MAAM,IAAI,SAAS,QAAQ,GAAG,EAAC,QAAQ,SAAQ,CAAC;AACzD;AAEA,IAAM,MAAM,CAAC,SAAS,UAAU,QAAQ,IAAI,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG;","names":["parent","attrs"]}
package/package.json CHANGED
@@ -1,14 +1,27 @@
1
1
  {
2
2
  "name": "@oddo/ui",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "description": "Oddo UI Framework",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
8
8
  "exports": {
9
9
  ".": {
10
+ "browser": {
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "node": {
15
+ "import": "./dist/index-ssr.mjs",
16
+ "require": "./dist/index-ssr.js"
17
+ },
10
18
  "import": "./dist/index.mjs",
11
- "require": "./dist/index.js"
19
+ "require": "./dist/index.js",
20
+ "default": "./dist/index.mjs"
21
+ },
22
+ "./ssr": {
23
+ "import": "./dist/index-ssr.mjs",
24
+ "require": "./dist/index-ssr.js"
12
25
  }
13
26
  },
14
27
  "files": [
@@ -36,4 +49,3 @@
36
49
  "url": "https://github.com/dbrdarski/oddo/issues"
37
50
  }
38
51
  }
39
-