@papack/csr 0.0.0 → 0.0.2
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.cjs +1 -1
- package/dist/index.d.cts +6 -3
- package/dist/index.d.mts +6 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=[],t=[];function n(){e.push([]),t.push([])}function r(n){let r=e.pop(),i=t.pop();if(!(!r||!i)){for(let e of r)try{let t=e(n);t instanceof Promise&&t.catch(console.error)}catch(e){console.error(e)}if(i.length>0){let e=n.__unmountCbs;e&&Array.isArray(e)?e.push(...i):n.__unmountCbs=[...i]}}}function i(t){let n=e[e.length-1];if(!n)throw Error(`mount(cb) was called outside of a component.`);n.push(t)}function a(e){let n=t[t.length-1];if(!n)throw Error(`unmount(cb) was called outside of a component.`);n.push(e)}async function o(e){let t=e.__unmountCbs;if(!(!t||t.length===0)){for(let e=t.length-1;e>=0;e--){let n=t[e];if(n)try{let e=n();e instanceof Promise&&await e}catch(e){console.error(e)}}e.__unmountCbs=void 0}}async function s(e){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove()}async function c(e){if(e instanceof Element){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove();return}e.parentNode&&e.parentNode.removeChild(e)}async function l(e,t){await e(async e=>{await t(e)})}function u(e,...t){return t}function d(e,t,...n){let r=n.flatMap(f);return{kind:typeof e==`string`?`host`:`component`,tag:e,props:t,children:r}}function f(e){return e==null||e===!1||e===!0?[]:typeof e==`function`&&e?.type===`signal`?{kind:`signal`,value:e}:typeof e==`string`||typeof e==`number`?{kind:`text`,value:String(e)}:Array.isArray(e)?e.flatMap(f):e}async function p(e,t){if(e==null)return{el:t.parent};if(Array.isArray(e))for(let n of e)return await p(n,t);if(e.kind===`text`)return{el:_(e,t)};if(e.kind===`signal`)return{el:await v(e,t)};if(e.kind===`component`){let i=e.tag;n();let a=await p(await i({...e.props,ctx:t},e.children),t);return a.el instanceof Element?r(a.el):console.warn(`Component-Root ist kein Element. Mount/Unmount werden ignoriert.`),t.self=a.el,a}let i=await g(e,t),a={...t,parent:i,self:t.self};for(let t of e.children)await p(t,a);return{el:i}}const m=`http://www.w3.org/2000/svg`,h=new Set([`svg`,`path`,`circle`,`rect`,`line`,`polyline`,`polygon`,`g`,`defs`,`linearGradient`,`radialGradient`,`stop`,`mask`,`clipPath`,`pattern`,`text`,`tspan`,`use`,`symbol`,`view`,`ellipse`,`foreignObject`]);async function g(e,t){if(typeof e.tag!=`string`)throw Error(`Host renderer erwartet string-Tag.`);let n=e.tag,r=h.has(n),i=r?document.createElementNS(`http://www.w3.org/2000/svg`,n):document.createElement(n),a=e.props||{};for(let[e,t]of Object.entries(a))if(!(e===`ctx`||e===`children`)){if(e.startsWith(`on`)&&typeof t==`function`){let n=e.slice(2).toLowerCase();i.addEventListener(n,t);continue}if(e===`style`&&t&&typeof t==`object`){for(let[e,n]of Object.entries(t))if(typeof n==`function`&&n.type===`signal`){let t=await n();i.style.setProperty(e,String(t)),await n(async t=>{i.style.setProperty(e,String(t))})}else i.style.setProperty(e,String(n));continue}if(typeof t==`function`&&t.type===`signal`){let n=await t();r?(i.setAttribute(e,String(n)),await t(async t=>{i.setAttribute(e,String(t))})):(i[e]=n,await t(async t=>{i[e]=t}));continue}r?i.setAttribute(e,String(t)):e in i?i[e]=t:i.setAttribute(e,String(t))}return t.parent.appendChild(i),i}function _(e,t){let n=document.createTextNode(e.value);return t.parent.appendChild(n),n}async function v(e,t){let n=document.createTextNode(``);return t.parent.appendChild(n),await e.value(async e=>{if(n instanceof Text)n.nodeValue=String(e);else throw`svg not implemented with number and string`}),n}async function y(e,t){let n=d(`csr-show-host`,{style:{display:`contents`}}),r=d(`csr-show-content`,{style:{display:`contents`}},...t),a=null,o=null;return i(async t=>{let{el:i}=await p(n,{parent:t});a=i;let c=!1;l(e.when,async t=>{if(c=!c,!c)o&&=(await s(o),null);else{let{el:t}=await p(r,{...e.ctx,parent:a});o=t}})}),null}function b(e){a(e)}function x(e){let t=crypto.randomUUID();C.addTopic(t),b(()=>{C.removeTopic(t)});let n=async n=>(n&&(C.registerClbk(t,n),b(()=>{C.removeClbk(t,n)}),await n(e)),e);return n.type=`signal`,[n,async n=>{let r=await n(e);e=r,C&&C.update(t,r)}]}var S=class{topic=new Map;clbkMapping=new Map;addTopic(e){this.topic.set(e,new Set)}removeTopic(e){this.topic.delete(e)}registerClbk(e,t){let n=this.topic.get(e);n&&(this.clbkMapping.set(t,e),n.add(t))}removeClbk(e,t){let n=this.topic.get(e);n&&n.delete(t)}update(e,t){let n=this.topic.get(e);if(n)for(let e of n)e(t)}getUuidByClbk(e){let t=this.clbkMapping.get(e);if(!t)throw Error(`Connector: clbkMapping has no uuid for fn `+e);return t}};const C=new S;exports.Show=y,exports.beginComponentMountSession=n,exports.connector=C,exports.destroy=s,exports.effect=l,exports.endComponentMountSession=r,exports.fragment=u,exports.jsx=d,exports.mount=i,exports.registerUnmount=a,exports.render=p,exports.runUnmountsForElement=o,exports.signal=x,exports.unmount=b;
|
|
1
|
+
const e=[],t=[];function n(){e.push([]),t.push([])}function r(n){let r=e.pop(),i=t.pop();if(!(!r||!i)){for(let e of r)try{let t=e(n);t instanceof Promise&&t.catch(console.error)}catch(e){console.error(e)}if(i.length>0){let e=n.__unmountCbs;e&&Array.isArray(e)?e.push(...i):n.__unmountCbs=[...i]}}}function i(t){let n=e[e.length-1];if(!n)throw Error(`mount(cb) was called outside of a component.`);n.push(t)}function a(e){let n=t[t.length-1];if(!n)throw Error(`unmount(cb) was called outside of a component.`);n.push(e)}async function o(e){let t=e.__unmountCbs;if(!(!t||t.length===0)){for(let e=t.length-1;e>=0;e--){let n=t[e];if(n)try{let e=n();e instanceof Promise&&await e}catch(e){console.error(e)}}e.__unmountCbs=void 0}}async function s(e){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove()}async function c(e){if(e instanceof Element){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove();return}e.parentNode&&e.parentNode.removeChild(e)}async function l(e,t){await e(async e=>{await t(e)})}function u(e,...t){return t}function d(e,t,...n){let r=n.flatMap(f);return{kind:typeof e==`string`?`host`:`component`,tag:e,props:t,children:r}}function f(e){return e==null||e===!1||e===!0?[]:typeof e==`function`&&e?.type===`signal`?{kind:`signal`,value:e}:typeof e==`string`||typeof e==`number`?{kind:`text`,value:String(e)}:Array.isArray(e)?e.flatMap(f):e}async function p(e,t){if(e=await e,e==null)return{el:t.parent};if(Array.isArray(e))for(let n of e)return await p(n,t);if(e.kind===`text`)return{el:_(e,t)};if(e.kind===`signal`)return{el:await v(e,t)};if(e.kind===`component`){let i=e.tag;n();let a=await p(await i({...e.props,ctx:t},e.children),t);return a.el instanceof Element?r(a.el):console.warn(`Component-Root ist kein Element. Mount/Unmount werden ignoriert.`),t.self=a.el,a}let i=await g(e,t),a={...t,parent:i,self:t.self};for(let t of e.children)await p(t,a);return{el:i}}const m=`http://www.w3.org/2000/svg`,h=new Set([`svg`,`path`,`circle`,`rect`,`line`,`polyline`,`polygon`,`g`,`defs`,`linearGradient`,`radialGradient`,`stop`,`mask`,`clipPath`,`pattern`,`text`,`tspan`,`use`,`symbol`,`view`,`ellipse`,`foreignObject`]);async function g(e,t){if(typeof e.tag!=`string`)throw Error(`Host renderer erwartet string-Tag.`);let n=e.tag,r=h.has(n),i=r?document.createElementNS(`http://www.w3.org/2000/svg`,n):document.createElement(n),a=e.props||{};for(let[e,t]of Object.entries(a))if(!(e===`ctx`||e===`children`)){if(e.startsWith(`on`)&&typeof t==`function`){let n=e.slice(2).toLowerCase();i.addEventListener(n,t);continue}if(e===`style`&&t&&typeof t==`object`){for(let[e,n]of Object.entries(t))if(typeof n==`function`&&n.type===`signal`){let t=await n();i.style.setProperty(e,String(t)),await n(async t=>{i.style.setProperty(e,String(t))})}else i.style.setProperty(e,String(n));continue}if(typeof t==`function`&&t.type===`signal`){let n=await t();r?(i.setAttribute(e,String(n)),await t(async t=>{i.setAttribute(e,String(t))})):(i[e]=n,await t(async t=>{i[e]=t}));continue}r?i.setAttribute(e,String(t)):e in i?i[e]=t:i.setAttribute(e,String(t))}return t.parent.appendChild(i),i}function _(e,t){let n=document.createTextNode(e.value);return t.parent.appendChild(n),n}async function v(e,t){let n=document.createTextNode(``);return t.parent.appendChild(n),await e.value(async e=>{if(n instanceof Text)n.nodeValue=String(e);else throw`svg not implemented with number and string`}),n}async function y(e,t){let n=d(`csr-show-host`,{style:{display:`contents`}}),r=d(`csr-show-content`,{style:{display:`contents`}},...t),a=null,o=null;return i(async t=>{let{el:i}=await p(n,{parent:t});a=i;let c=!1;l(e.when,async t=>{if(c=!c,!c)o&&=(await s(o),null);else{let{el:t}=await p(r,{...e.ctx,parent:a});o=t}})}),null}function b(e){a(e)}function x(e){let t=crypto.randomUUID();C.addTopic(t),b(()=>{C.removeTopic(t)});let n=async n=>(n&&(C.registerClbk(t,n),b(()=>{C.removeClbk(t,n)}),await n(e)),e);return n.type=`signal`,[n,async n=>{let r=await n(e);e=r,C&&C.update(t,r)}]}var S=class{topic=new Map;clbkMapping=new Map;addTopic(e){this.topic.set(e,new Set)}removeTopic(e){this.topic.delete(e)}registerClbk(e,t){let n=this.topic.get(e);n&&(this.clbkMapping.set(t,e),n.add(t))}removeClbk(e,t){let n=this.topic.get(e);n&&n.delete(t)}update(e,t){let n=this.topic.get(e);if(n)for(let e of n)e(t)}getUuidByClbk(e){let t=this.clbkMapping.get(e);if(!t)throw Error(`Connector: clbkMapping has no uuid for fn `+e);return t}};const C=new S;exports.Show=y,exports.beginComponentMountSession=n,exports.connector=C,exports.destroy=s,exports.effect=l,exports.endComponentMountSession=r,exports.fragment=u,exports.jsx=d,exports.mount=i,exports.registerUnmount=a,exports.render=p,exports.runUnmountsForElement=o,exports.signal=x,exports.unmount=b;
|
package/dist/index.d.cts
CHANGED
|
@@ -41,7 +41,7 @@ interface RenderCtx {
|
|
|
41
41
|
interface RenderResult {
|
|
42
42
|
el: Node;
|
|
43
43
|
}
|
|
44
|
-
declare function render(node: JsxChild
|
|
44
|
+
declare function render(node: JsxChild | Promise<JsxChild> | null | Promise<null>, ctx: RenderCtx): Promise<RenderResult>;
|
|
45
45
|
//#endregion
|
|
46
46
|
//#region core/jsx.d.ts
|
|
47
47
|
type EventHandler<E extends Event = Event> = (event: E) => void;
|
|
@@ -95,7 +95,10 @@ interface SVGAttributes extends DOMEvents {
|
|
|
95
95
|
}
|
|
96
96
|
declare global {
|
|
97
97
|
namespace JSX {
|
|
98
|
-
type Element = JsxNode
|
|
98
|
+
type Element = JsxNode | Promise<JsxNode> | null | Promise<null>;
|
|
99
|
+
interface ElementType {
|
|
100
|
+
(props: any, ...children: any[]): any;
|
|
101
|
+
}
|
|
99
102
|
interface IntrinsicElements {
|
|
100
103
|
div: HTMLAttributes;
|
|
101
104
|
li: HTMLAttributes;
|
|
@@ -147,7 +150,7 @@ interface JsxNode {
|
|
|
147
150
|
interface PropsInterface {
|
|
148
151
|
ctx?: RenderCtx;
|
|
149
152
|
}
|
|
150
|
-
type ComponentFn = (props: PropsInterface, children: JsxChild[]) =>
|
|
153
|
+
type ComponentFn = (props: PropsInterface, children: JsxChild[]) => JsxNode | null;
|
|
151
154
|
declare function jsx(tag: string | ComponentFn, props: any, ...rawChildren: any[]): JsxNode;
|
|
152
155
|
//#endregion
|
|
153
156
|
//#region core/mount.d.ts
|
package/dist/index.d.mts
CHANGED
|
@@ -41,7 +41,7 @@ interface RenderCtx {
|
|
|
41
41
|
interface RenderResult {
|
|
42
42
|
el: Node;
|
|
43
43
|
}
|
|
44
|
-
declare function render(node: JsxChild
|
|
44
|
+
declare function render(node: JsxChild | Promise<JsxChild> | null | Promise<null>, ctx: RenderCtx): Promise<RenderResult>;
|
|
45
45
|
//#endregion
|
|
46
46
|
//#region core/jsx.d.ts
|
|
47
47
|
type EventHandler<E extends Event = Event> = (event: E) => void;
|
|
@@ -95,7 +95,10 @@ interface SVGAttributes extends DOMEvents {
|
|
|
95
95
|
}
|
|
96
96
|
declare global {
|
|
97
97
|
namespace JSX {
|
|
98
|
-
type Element = JsxNode
|
|
98
|
+
type Element = JsxNode | Promise<JsxNode> | null | Promise<null>;
|
|
99
|
+
interface ElementType {
|
|
100
|
+
(props: any, ...children: any[]): any;
|
|
101
|
+
}
|
|
99
102
|
interface IntrinsicElements {
|
|
100
103
|
div: HTMLAttributes;
|
|
101
104
|
li: HTMLAttributes;
|
|
@@ -147,7 +150,7 @@ interface JsxNode {
|
|
|
147
150
|
interface PropsInterface {
|
|
148
151
|
ctx?: RenderCtx;
|
|
149
152
|
}
|
|
150
|
-
type ComponentFn = (props: PropsInterface, children: JsxChild[]) =>
|
|
153
|
+
type ComponentFn = (props: PropsInterface, children: JsxChild[]) => JsxNode | null;
|
|
151
154
|
declare function jsx(tag: string | ComponentFn, props: any, ...rawChildren: any[]): JsxNode;
|
|
152
155
|
//#endregion
|
|
153
156
|
//#region core/mount.d.ts
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../core/destroy.ts","../core/signal.ts","../core/effect.ts","../core/fragment.ts","../core/render.ts","../core/jsx.ts","../core/mount.ts","../core/show.tsx","../core/unmount.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["destroy","Element","Promise","UUID","ReadFn","T","Promise","signal","ConnectorInterface","Connector","connector","ReadFn","effect","T","Promise","fragment","JsxChild","RenderCtx","Node","ParentNode","RenderResult","render","Promise","RenderCtx","ReadFn","EventHandler","E","Event","DOMEvents","MouseEvent","KeyboardEvent","InputEvent","FocusEvent","StyleProps","MaybeSignal","T","HTMLAttributes","SVGAttributes","_0","JsxNode","Promise","sideEffect","JsxChild","JsxText","JsxSignal","ComponentFn","PropsInterface","jsx","MountCallback","Element","Promise","UnmountCallback","beginComponentMountSession","endComponentMountSession","mount","registerUnmount","runUnmountsForElement","ReadFn","ShowPropsInterface","Show","Promise","UnmountCallback","unmount"],"sources":["../core/destroy.d.ts","../core/signal.d.ts","../core/effect.d.ts","../core/fragment.d.ts","../core/render.d.ts","../core/jsx.d.ts","../core/mount.d.ts","../core/show.d.ts","../core/unmount.d.ts"],"sourcesContent":["export declare function destroy(root: Element): Promise<void>;\n","type UUID = string;\nexport type ReadFn<T> = ((cb?: (value: unknown) => Promise<void>) => Promise<T>) & {\n type: \"signal\";\n};\nexport declare function signal<T>(value: T): readonly [ReadFn<T>, (cb: (prev: T) => Promise<T> | T) => Promise<void>];\nexport interface ConnectorInterface {\n update: (uuid: UUID, value: unknown) => void;\n addTopic: (uuid: UUID) => void;\n removeTopic: (uuid: UUID) => void;\n registerClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n removeClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n getUuidByClbk: (cb: (value: unknown) => void) => UUID;\n}\ndeclare class Connector implements ConnectorInterface {\n private topic;\n private clbkMapping;\n addTopic(uuid: UUID): void;\n removeTopic(uuid: UUID): void;\n registerClbk<T>(uuid: string, cb: (value: T) => void): void;\n removeClbk<T>(uuid: UUID, cb: (value: T) => void): void;\n update<T>(uuid: UUID, value: T): void;\n getUuidByClbk(fn: (value: unknown) => void): string;\n}\nexport declare const connector: Connector;\nexport {};\n","import type { ReadFn } from \"./signal\";\nexport declare function effect<T>(readFn: ReadFn<T>, fn: (value: T) => Promise<unknown> | unknown): Promise<void>;\n","export declare function fragment(p: null, ...childs: any): any;\n","import type { JsxChild } from \"./jsx\";\nexport interface RenderCtx {\n parent: Node & ParentNode;\n [k: string]: any;\n}\nexport interface RenderResult {\n el: Node;\n}\nexport declare function render(node: JsxChild | Promise<JsxChild> | null | Promise<null>, ctx: RenderCtx): Promise<RenderResult>;\n","import type { RenderCtx } from \"./render\";\nimport type { ReadFn } from \"./signal\";\ntype EventHandler<E extends Event = Event> = (event: E) => void;\ninterface DOMEvents {\n onClick?: EventHandler<MouseEvent>;\n onDblClick?: EventHandler<MouseEvent>;\n onMouseDown?: EventHandler<MouseEvent>;\n onMouseUp?: EventHandler<MouseEvent>;\n onMouseMove?: EventHandler<MouseEvent>;\n onMouseEnter?: EventHandler<MouseEvent>;\n onMouseLeave?: EventHandler<MouseEvent>;\n onKeyDown?: EventHandler<KeyboardEvent>;\n onKeyUp?: EventHandler<KeyboardEvent>;\n onInput?: EventHandler<InputEvent>;\n onChange?: EventHandler<Event>;\n onFocus?: EventHandler<FocusEvent>;\n onBlur?: EventHandler<FocusEvent>;\n}\ninterface StyleProps {\n [key: string]: string | number | ReadFn<string | number>;\n}\ntype MaybeSignal<T> = T | ReadFn<T>;\ninterface HTMLAttributes extends DOMEvents {\n id?: string;\n class?: string;\n className?: string;\n title?: string;\n style?: StyleProps;\n value?: MaybeSignal<string | number>;\n checked?: MaybeSignal<boolean>;\n disabled?: MaybeSignal<boolean>;\n children?: any;\n}\ninterface SVGAttributes extends DOMEvents {\n id?: string;\n class?: string;\n style?: StyleProps;\n viewBox?: MaybeSignal<string>;\n fill?: MaybeSignal<string>;\n stroke?: MaybeSignal<string>;\n strokeWidth?: MaybeSignal<number>;\n d?: MaybeSignal<string>;\n cx?: MaybeSignal<string | number>;\n cy?: MaybeSignal<string | number>;\n r?: MaybeSignal<string | number>;\n x?: MaybeSignal<string | number>;\n y?: MaybeSignal<string | number>;\n width?: MaybeSignal<string | number>;\n height?: MaybeSignal<string | number>;\n children?: any;\n}\ndeclare global {\n namespace JSX {\n type Element = JsxNode | Promise<JsxNode> | null | Promise<null>;\n interface ElementType {\n (props: any, ...children: any[]): any;\n }\n interface IntrinsicElements {\n div: HTMLAttributes;\n li: HTMLAttributes;\n ul: HTMLAttributes;\n h1: HTMLAttributes;\n h2: HTMLAttributes;\n h3: HTMLAttributes;\n h4: HTMLAttributes;\n h5: HTMLAttributes;\n h6: HTMLAttributes;\n span: HTMLAttributes;\n p: HTMLAttributes;\n button: HTMLAttributes;\n input: HTMLAttributes & {\n type?: string;\n placeholder?: string;\n };\n textarea: HTMLAttributes;\n form: HTMLAttributes;\n label: HTMLAttributes;\n svg: SVGAttributes;\n path: SVGAttributes;\n circle: SVGAttributes;\n rect: SVGAttributes;\n g: SVGAttributes;\n line: SVGAttributes;\n polyline: SVGAttributes;\n polygon: SVGAttributes;\n text: SVGAttributes;\n tspan: SVGAttributes;\n }\n }\n}\nexport type JsxChild = JsxNode | JsxText | JsxSignal;\nexport interface JsxText {\n kind: \"text\";\n value: string;\n}\nexport interface JsxSignal {\n kind: \"signal\";\n value: any;\n}\nexport interface JsxNode {\n kind: \"host\" | \"component\" | \"signal\";\n tag: string | ComponentFn;\n props: any;\n children: JsxChild[];\n}\nexport interface PropsInterface {\n ctx?: RenderCtx;\n}\nexport type ComponentFn = (props: PropsInterface, children: JsxChild[]) => JsxNode | null;\nexport declare function jsx(tag: string | ComponentFn, props: any, ...rawChildren: any[]): JsxNode;\nexport {};\n","export type MountCallback = (el: Element) => void | Promise<void>;\nexport type UnmountCallback = () => void | Promise<void>;\nexport declare function beginComponentMountSession(): void;\nexport declare function endComponentMountSession(el: Element): void;\nexport declare function mount(cb: MountCallback): void;\nexport declare function registerUnmount(cb: UnmountCallback): void;\nexport declare function runUnmountsForElement(el: Element): Promise<void>;\n","import type { ReadFn } from \"./signal\";\ninterface ShowPropsInterface {\n when: ReadFn<boolean>;\n}\nexport declare function Show(p: ShowPropsInterface, children: any): Promise<null>;\nexport {};\n","import type { UnmountCallback } from \"./mount\";\nexport type { UnmountCallback } from \"./mount\";\nexport declare function unmount(cb: UnmountCallback): void;\n"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=[],t=[];function n(){e.push([]),t.push([])}function r(n){let r=e.pop(),i=t.pop();if(!(!r||!i)){for(let e of r)try{let t=e(n);t instanceof Promise&&t.catch(console.error)}catch(e){console.error(e)}if(i.length>0){let e=n.__unmountCbs;e&&Array.isArray(e)?e.push(...i):n.__unmountCbs=[...i]}}}function i(t){let n=e[e.length-1];if(!n)throw Error(`mount(cb) was called outside of a component.`);n.push(t)}function a(e){let n=t[t.length-1];if(!n)throw Error(`unmount(cb) was called outside of a component.`);n.push(e)}async function o(e){let t=e.__unmountCbs;if(!(!t||t.length===0)){for(let e=t.length-1;e>=0;e--){let n=t[e];if(n)try{let e=n();e instanceof Promise&&await e}catch(e){console.error(e)}}e.__unmountCbs=void 0}}async function s(e){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove()}async function c(e){if(e instanceof Element){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove();return}e.parentNode&&e.parentNode.removeChild(e)}async function l(e,t){await e(async e=>{await t(e)})}function u(e,...t){return t}function d(e,t,...n){let r=n.flatMap(f);return{kind:typeof e==`string`?`host`:`component`,tag:e,props:t,children:r}}function f(e){return e==null||e===!1||e===!0?[]:typeof e==`function`&&e?.type===`signal`?{kind:`signal`,value:e}:typeof e==`string`||typeof e==`number`?{kind:`text`,value:String(e)}:Array.isArray(e)?e.flatMap(f):e}async function p(e,t){if(e==null)return{el:t.parent};if(Array.isArray(e))for(let n of e)return await p(n,t);if(e.kind===`text`)return{el:g(e,t)};if(e.kind===`signal`)return{el:await _(e,t)};if(e.kind===`component`){let i=e.tag;n();let a=await p(await i({...e.props,ctx:t},e.children),t);return a.el instanceof Element?r(a.el):console.warn(`Component-Root ist kein Element. Mount/Unmount werden ignoriert.`),t.self=a.el,a}let i=await h(e,t),a={...t,parent:i,self:t.self};for(let t of e.children)await p(t,a);return{el:i}}const m=new Set([`svg`,`path`,`circle`,`rect`,`line`,`polyline`,`polygon`,`g`,`defs`,`linearGradient`,`radialGradient`,`stop`,`mask`,`clipPath`,`pattern`,`text`,`tspan`,`use`,`symbol`,`view`,`ellipse`,`foreignObject`]);async function h(e,t){if(typeof e.tag!=`string`)throw Error(`Host renderer erwartet string-Tag.`);let n=e.tag,r=m.has(n),i=r?document.createElementNS(`http://www.w3.org/2000/svg`,n):document.createElement(n),a=e.props||{};for(let[e,t]of Object.entries(a))if(!(e===`ctx`||e===`children`)){if(e.startsWith(`on`)&&typeof t==`function`){let n=e.slice(2).toLowerCase();i.addEventListener(n,t);continue}if(e===`style`&&t&&typeof t==`object`){for(let[e,n]of Object.entries(t))if(typeof n==`function`&&n.type===`signal`){let t=await n();i.style.setProperty(e,String(t)),await n(async t=>{i.style.setProperty(e,String(t))})}else i.style.setProperty(e,String(n));continue}if(typeof t==`function`&&t.type===`signal`){let n=await t();r?(i.setAttribute(e,String(n)),await t(async t=>{i.setAttribute(e,String(t))})):(i[e]=n,await t(async t=>{i[e]=t}));continue}r?i.setAttribute(e,String(t)):e in i?i[e]=t:i.setAttribute(e,String(t))}return t.parent.appendChild(i),i}function g(e,t){let n=document.createTextNode(e.value);return t.parent.appendChild(n),n}async function _(e,t){let n=document.createTextNode(``);return t.parent.appendChild(n),await e.value(async e=>{if(n instanceof Text)n.nodeValue=String(e);else throw`svg not implemented with number and string`}),n}async function v(e,t){let n=d(`csr-show-host`,{style:{display:`contents`}}),r=d(`csr-show-content`,{style:{display:`contents`}},...t),a=null,o=null;return i(async t=>{let{el:i}=await p(n,{parent:t});a=i;let c=!1;l(e.when,async t=>{if(c=!c,!c)o&&=(await s(o),null);else{let{el:t}=await p(r,{...e.ctx,parent:a});o=t}})}),null}function y(e){a(e)}function b(e){let t=crypto.randomUUID();x.addTopic(t),y(()=>{x.removeTopic(t)});let n=async n=>(n&&(x.registerClbk(t,n),y(()=>{x.removeClbk(t,n)}),await n(e)),e);return n.type=`signal`,[n,async n=>{let r=await n(e);e=r,x&&x.update(t,r)}]}const x=new class{topic=new Map;clbkMapping=new Map;addTopic(e){this.topic.set(e,new Set)}removeTopic(e){this.topic.delete(e)}registerClbk(e,t){let n=this.topic.get(e);n&&(this.clbkMapping.set(t,e),n.add(t))}removeClbk(e,t){let n=this.topic.get(e);n&&n.delete(t)}update(e,t){let n=this.topic.get(e);if(n)for(let e of n)e(t)}getUuidByClbk(e){let t=this.clbkMapping.get(e);if(!t)throw Error(`Connector: clbkMapping has no uuid for fn `+e);return t}};export{v as Show,n as beginComponentMountSession,x as connector,s as destroy,l as effect,r as endComponentMountSession,u as fragment,d as jsx,i as mount,a as registerUnmount,p as render,o as runUnmountsForElement,b as signal,y as unmount};
|
|
1
|
+
const e=[],t=[];function n(){e.push([]),t.push([])}function r(n){let r=e.pop(),i=t.pop();if(!(!r||!i)){for(let e of r)try{let t=e(n);t instanceof Promise&&t.catch(console.error)}catch(e){console.error(e)}if(i.length>0){let e=n.__unmountCbs;e&&Array.isArray(e)?e.push(...i):n.__unmountCbs=[...i]}}}function i(t){let n=e[e.length-1];if(!n)throw Error(`mount(cb) was called outside of a component.`);n.push(t)}function a(e){let n=t[t.length-1];if(!n)throw Error(`unmount(cb) was called outside of a component.`);n.push(e)}async function o(e){let t=e.__unmountCbs;if(!(!t||t.length===0)){for(let e=t.length-1;e>=0;e--){let n=t[e];if(n)try{let e=n();e instanceof Promise&&await e}catch(e){console.error(e)}}e.__unmountCbs=void 0}}async function s(e){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove()}async function c(e){if(e instanceof Element){let t=Array.from(e.childNodes);for(let e of t)await c(e);await o(e),e.parentNode?e.parentNode.removeChild(e):e.remove();return}e.parentNode&&e.parentNode.removeChild(e)}async function l(e,t){await e(async e=>{await t(e)})}function u(e,...t){return t}function d(e,t,...n){let r=n.flatMap(f);return{kind:typeof e==`string`?`host`:`component`,tag:e,props:t,children:r}}function f(e){return e==null||e===!1||e===!0?[]:typeof e==`function`&&e?.type===`signal`?{kind:`signal`,value:e}:typeof e==`string`||typeof e==`number`?{kind:`text`,value:String(e)}:Array.isArray(e)?e.flatMap(f):e}async function p(e,t){if(e=await e,e==null)return{el:t.parent};if(Array.isArray(e))for(let n of e)return await p(n,t);if(e.kind===`text`)return{el:g(e,t)};if(e.kind===`signal`)return{el:await _(e,t)};if(e.kind===`component`){let i=e.tag;n();let a=await p(await i({...e.props,ctx:t},e.children),t);return a.el instanceof Element?r(a.el):console.warn(`Component-Root ist kein Element. Mount/Unmount werden ignoriert.`),t.self=a.el,a}let i=await h(e,t),a={...t,parent:i,self:t.self};for(let t of e.children)await p(t,a);return{el:i}}const m=new Set([`svg`,`path`,`circle`,`rect`,`line`,`polyline`,`polygon`,`g`,`defs`,`linearGradient`,`radialGradient`,`stop`,`mask`,`clipPath`,`pattern`,`text`,`tspan`,`use`,`symbol`,`view`,`ellipse`,`foreignObject`]);async function h(e,t){if(typeof e.tag!=`string`)throw Error(`Host renderer erwartet string-Tag.`);let n=e.tag,r=m.has(n),i=r?document.createElementNS(`http://www.w3.org/2000/svg`,n):document.createElement(n),a=e.props||{};for(let[e,t]of Object.entries(a))if(!(e===`ctx`||e===`children`)){if(e.startsWith(`on`)&&typeof t==`function`){let n=e.slice(2).toLowerCase();i.addEventListener(n,t);continue}if(e===`style`&&t&&typeof t==`object`){for(let[e,n]of Object.entries(t))if(typeof n==`function`&&n.type===`signal`){let t=await n();i.style.setProperty(e,String(t)),await n(async t=>{i.style.setProperty(e,String(t))})}else i.style.setProperty(e,String(n));continue}if(typeof t==`function`&&t.type===`signal`){let n=await t();r?(i.setAttribute(e,String(n)),await t(async t=>{i.setAttribute(e,String(t))})):(i[e]=n,await t(async t=>{i[e]=t}));continue}r?i.setAttribute(e,String(t)):e in i?i[e]=t:i.setAttribute(e,String(t))}return t.parent.appendChild(i),i}function g(e,t){let n=document.createTextNode(e.value);return t.parent.appendChild(n),n}async function _(e,t){let n=document.createTextNode(``);return t.parent.appendChild(n),await e.value(async e=>{if(n instanceof Text)n.nodeValue=String(e);else throw`svg not implemented with number and string`}),n}async function v(e,t){let n=d(`csr-show-host`,{style:{display:`contents`}}),r=d(`csr-show-content`,{style:{display:`contents`}},...t),a=null,o=null;return i(async t=>{let{el:i}=await p(n,{parent:t});a=i;let c=!1;l(e.when,async t=>{if(c=!c,!c)o&&=(await s(o),null);else{let{el:t}=await p(r,{...e.ctx,parent:a});o=t}})}),null}function y(e){a(e)}function b(e){let t=crypto.randomUUID();x.addTopic(t),y(()=>{x.removeTopic(t)});let n=async n=>(n&&(x.registerClbk(t,n),y(()=>{x.removeClbk(t,n)}),await n(e)),e);return n.type=`signal`,[n,async n=>{let r=await n(e);e=r,x&&x.update(t,r)}]}const x=new class{topic=new Map;clbkMapping=new Map;addTopic(e){this.topic.set(e,new Set)}removeTopic(e){this.topic.delete(e)}registerClbk(e,t){let n=this.topic.get(e);n&&(this.clbkMapping.set(t,e),n.add(t))}removeClbk(e,t){let n=this.topic.get(e);n&&n.delete(t)}update(e,t){let n=this.topic.get(e);if(n)for(let e of n)e(t)}getUuidByClbk(e){let t=this.clbkMapping.get(e);if(!t)throw Error(`Connector: clbkMapping has no uuid for fn `+e);return t}};export{v as Show,n as beginComponentMountSession,x as connector,s as destroy,l as effect,r as endComponentMountSession,u as fragment,d as jsx,i as mount,a as registerUnmount,p as render,o as runUnmountsForElement,b as signal,y as unmount};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["mountStack: MountCallback[][]","unmountStack: UnmountCallback[][]","childCtx: RenderCtx","hostEl: Element | null","contentEl: Element | null","read: ReadFn<T>","next: T"],"sources":["../core/mount.ts","../core/destroy.ts","../core/effect.ts","../core/fragment.ts","../core/jsx.ts","../core/render.ts","../core/show.tsx","../core/unmount.ts","../core/signal.ts"],"sourcesContent":["export type MountCallback = (el: Element) => void | Promise<void>;\r\nexport type UnmountCallback = () => void | Promise<void>;\r\n\r\n// Stack of mount/unmount callback queues per component render\r\nconst mountStack: MountCallback[][] = [];\r\nconst unmountStack: UnmountCallback[][] = [];\r\n\r\n// Called by the renderer before a component function is executed.\r\n// Initializes a new mount/unmount session for that component.\r\nexport function beginComponentMountSession(): void {\r\n mountStack.push([]);\r\n unmountStack.push([]);\r\n}\r\n\r\n// Called by the renderer once the component's DOM root element is known.\r\n// - Executes all registered mount callbacks\r\n// - Attaches all unmount callbacks to the root element\r\nexport function endComponentMountSession(el: Element): void {\r\n const mounts = mountStack.pop();\r\n const unmounts = unmountStack.pop();\r\n\r\n if (!mounts || !unmounts) return;\r\n\r\n // Execute mount callbacks (fire-and-forget)\r\n for (const cb of mounts) {\r\n try {\r\n const r = cb(el);\r\n if (r instanceof Promise) {\r\n r.catch(console.error);\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n // Store unmount callbacks on the element (DOM-first lifecycle)\r\n if (unmounts.length > 0) {\r\n const store = (el as any).__unmountCbs as UnmountCallback[] | undefined;\r\n if (store && Array.isArray(store)) {\r\n store.push(...unmounts);\r\n } else {\r\n (el as any).__unmountCbs = [...unmounts];\r\n }\r\n }\r\n}\r\n\r\n//Used inside components to register an on-mount callback.\r\nexport function mount(cb: MountCallback): void {\r\n const queue = mountStack[mountStack.length - 1];\r\n if (!queue) {\r\n throw new Error(\"mount(cb) was called outside of a component.\");\r\n }\r\n queue.push(cb);\r\n}\r\n\r\n// Used internally to register cleanup logic for the current component session.\r\nexport function registerUnmount(cb: UnmountCallback): void {\r\n const queue = unmountStack[unmountStack.length - 1];\r\n if (!queue) {\r\n throw new Error(\"unmount(cb) was called outside of a component.\");\r\n }\r\n queue.push(cb);\r\n}\r\n\r\n// Used by the destroy() path:\r\n// Executes all unmount callbacks registered on the element (LIFO order).\r\nexport async function runUnmountsForElement(el: Element): Promise<void> {\r\n const list = (el as any).__unmountCbs as UnmountCallback[] | undefined;\r\n if (!list || list.length === 0) return;\r\n\r\n for (let i = list.length - 1; i >= 0; i--) {\r\n const fn = list[i];\r\n if (!fn) continue;\r\n try {\r\n const r = fn();\r\n if (r instanceof Promise) {\r\n await r;\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n (el as any).__unmountCbs = undefined;\r\n}\r\n","import { runUnmountsForElement } from \"./mount\";\r\n\r\nexport async function destroy(root: Element): Promise<void> {\r\n const children = Array.from(root.childNodes);\r\n\r\n for (const child of children) {\r\n await destroyChild(child);\r\n }\r\n\r\n await runUnmountsForElement(root);\r\n\r\n if (root.parentNode) {\r\n root.parentNode.removeChild(root);\r\n } else {\r\n root.remove(); // Element hat remove()\r\n }\r\n}\r\n\r\nasync function destroyChild(node: Node): Promise<void> {\r\n if (node instanceof Element) {\r\n const kids = Array.from(node.childNodes);\r\n\r\n for (const k of kids) {\r\n await destroyChild(k);\r\n }\r\n\r\n await runUnmountsForElement(node);\r\n\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n } else {\r\n node.remove();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Text/Comment etc.\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n}\r\n","import type { ReadFn } from \"./signal\";\n\nexport async function effect<T>(\n readFn: ReadFn<T>,\n fn: (value: T) => Promise<unknown> | unknown\n): Promise<void> {\n //call, run fn AND register (register == provide clbk)\n await readFn(async (v) => {\n await fn(v as T);\n });\n}\n","export function fragment(p: null, ...childs: any) {\n return childs;\n}\n","import type { RenderCtx } from \"./render\";\r\nimport type { ReadFn } from \"./signal\";\r\n\r\ntype EventHandler<E extends Event = Event> = (event: E) => void;\r\n\r\ninterface DOMEvents {\r\n onClick?: EventHandler<MouseEvent>;\r\n onDblClick?: EventHandler<MouseEvent>;\r\n onMouseDown?: EventHandler<MouseEvent>;\r\n onMouseUp?: EventHandler<MouseEvent>;\r\n onMouseMove?: EventHandler<MouseEvent>;\r\n onMouseEnter?: EventHandler<MouseEvent>;\r\n onMouseLeave?: EventHandler<MouseEvent>;\r\n\r\n onKeyDown?: EventHandler<KeyboardEvent>;\r\n onKeyUp?: EventHandler<KeyboardEvent>;\r\n onInput?: EventHandler<InputEvent>;\r\n onChange?: EventHandler<Event>;\r\n\r\n onFocus?: EventHandler<FocusEvent>;\r\n onBlur?: EventHandler<FocusEvent>;\r\n}\r\n\r\ninterface StyleProps {\r\n [key: string]: string | number | ReadFn<string | number>;\r\n}\r\n\r\ntype MaybeSignal<T> = T | ReadFn<T>;\r\n\r\ninterface HTMLAttributes extends DOMEvents {\r\n id?: string;\r\n class?: string;\r\n className?: string;\r\n title?: string;\r\n\r\n style?: StyleProps;\r\n\r\n value?: MaybeSignal<string | number>;\r\n checked?: MaybeSignal<boolean>;\r\n disabled?: MaybeSignal<boolean>;\r\n\r\n children?: any;\r\n}\r\n\r\ninterface SVGAttributes extends DOMEvents {\r\n id?: string;\r\n class?: string;\r\n\r\n style?: StyleProps;\r\n\r\n viewBox?: MaybeSignal<string>;\r\n fill?: MaybeSignal<string>;\r\n stroke?: MaybeSignal<string>;\r\n strokeWidth?: MaybeSignal<number>;\r\n\r\n d?: MaybeSignal<string>;\r\n cx?: MaybeSignal<string | number>;\r\n cy?: MaybeSignal<string | number>;\r\n r?: MaybeSignal<string | number>;\r\n\r\n x?: MaybeSignal<string | number>;\r\n y?: MaybeSignal<string | number>;\r\n width?: MaybeSignal<string | number>;\r\n height?: MaybeSignal<string | number>;\r\n\r\n children?: any;\r\n}\r\n\r\ndeclare global {\r\n namespace JSX {\r\n type Element = JsxNode;\r\n\r\n interface IntrinsicElements {\r\n // HTML\r\n div: HTMLAttributes;\r\n li: HTMLAttributes;\r\n ul: HTMLAttributes;\r\n h1: HTMLAttributes;\r\n h2: HTMLAttributes;\r\n h3: HTMLAttributes;\r\n h4: HTMLAttributes;\r\n h5: HTMLAttributes;\r\n h6: HTMLAttributes;\r\n span: HTMLAttributes;\r\n p: HTMLAttributes;\r\n button: HTMLAttributes;\r\n input: HTMLAttributes & {\r\n type?: string;\r\n placeholder?: string;\r\n };\r\n textarea: HTMLAttributes;\r\n form: HTMLAttributes;\r\n label: HTMLAttributes;\r\n\r\n // SVG\r\n svg: SVGAttributes;\r\n path: SVGAttributes;\r\n circle: SVGAttributes;\r\n rect: SVGAttributes;\r\n g: SVGAttributes;\r\n line: SVGAttributes;\r\n polyline: SVGAttributes;\r\n polygon: SVGAttributes;\r\n text: SVGAttributes;\r\n tspan: SVGAttributes;\r\n }\r\n }\r\n}\r\n\r\nexport type JsxChild = JsxNode | JsxText | JsxSignal;\r\n\r\nexport interface JsxText {\r\n kind: \"text\";\r\n value: string;\r\n}\r\n\r\nexport interface JsxSignal {\r\n kind: \"signal\";\r\n value: any;\r\n}\r\n\r\nexport interface JsxNode {\r\n kind: \"host\" | \"component\" | \"signal\";\r\n tag: string | ComponentFn;\r\n props: any;\r\n children: JsxChild[];\r\n}\r\n\r\nexport interface PropsInterface {\r\n ctx?: RenderCtx;\r\n}\r\n\r\nexport type ComponentFn = (\r\n props: PropsInterface,\r\n children: JsxChild[]\r\n) => Promise<JsxNode>;\r\n\r\n// 1) JSX sammelt nur Struktur\r\nexport function jsx(\r\n tag: string | ComponentFn,\r\n props: any,\r\n ...rawChildren: any[]\r\n): JsxNode {\r\n const children = rawChildren.flatMap(normalizeChild);\r\n\r\n return {\r\n kind: typeof tag === \"string\" ? \"host\" : \"component\",\r\n tag,\r\n props,\r\n children,\r\n };\r\n}\r\n\r\nfunction normalizeChild(input: any): JsxChild | JsxChild[] {\r\n if (input == null || input === false || input === true) return [];\r\n\r\n if (typeof input === \"function\" && input?.type === \"signal\") {\r\n return { kind: \"signal\", value: input };\r\n }\r\n\r\n if (typeof input === \"string\" || typeof input === \"number\") {\r\n return { kind: \"text\", value: String(input) };\r\n }\r\n\r\n if (Array.isArray(input)) {\r\n return input.flatMap(normalizeChild);\r\n }\r\n\r\n return input;\r\n}\r\n","import type { ComponentFn, JsxNode, JsxChild, JsxText, JsxSignal } from \"./jsx\";\r\nimport { beginComponentMountSession, endComponentMountSession } from \"./mount\";\r\n\r\nexport interface RenderCtx {\r\n parent: Node & ParentNode;\r\n [k: string]: any;\r\n}\r\n\r\nexport interface RenderResult {\r\n el: Node;\r\n}\r\n\r\nexport async function render(\r\n node: JsxChild,\r\n ctx: RenderCtx\r\n): Promise<RenderResult> {\r\n //nothing\r\n if (node == null) {\r\n return { el: ctx.parent };\r\n }\r\n\r\n //fragement recursive\r\n if (Array.isArray(node)) {\r\n for (const item of node) {\r\n return await render(item, ctx);\r\n }\r\n }\r\n\r\n // TEXT NODE\r\n if (node.kind === \"text\") {\r\n const el = renderText(node as JsxText, ctx);\r\n return { el };\r\n }\r\n\r\n //SIGNAL\r\n if (node.kind === \"signal\") {\r\n const el = await renderSignal(node as JsxSignal, ctx);\r\n return { el };\r\n }\r\n\r\n // COMPONENT NODE\r\n if (node.kind === \"component\") {\r\n const fn = node.tag as ComponentFn;\r\n\r\n // Mount/Unmount-Session für diese Component\r\n beginComponentMountSession();\r\n\r\n // Component-Funktion ausführen\r\n const resolved = await fn({ ...node.props, ctx }, node.children);\r\n\r\n // gerenderten Output rendern\r\n const result = await render(resolved, ctx);\r\n\r\n // Mounts ausführen und Unmounts am Root-Element registrieren\r\n if (result.el instanceof Element) {\r\n endComponentMountSession(result.el);\r\n } else {\r\n console.warn(\r\n \"Component-Root ist kein Element. Mount/Unmount werden ignoriert.\"\r\n );\r\n }\r\n\r\n ctx.self = result.el;\r\n return result;\r\n }\r\n\r\n // HOST NODE\r\n\r\n const el = await renderHost(node as JsxNode, ctx);\r\n\r\n const childCtx: RenderCtx = {\r\n ...ctx,\r\n parent: el,\r\n self: ctx.self,\r\n };\r\n\r\n for (const child of (node as JsxNode).children) {\r\n await render(child, childCtx);\r\n }\r\n\r\n return { el };\r\n}\r\n\r\n// HOST Renderer\r\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\r\n\r\nconst SVG_TAGS = new Set([\r\n \"svg\",\r\n \"path\",\r\n \"circle\",\r\n \"rect\",\r\n \"line\",\r\n \"polyline\",\r\n \"polygon\",\r\n \"g\",\r\n \"defs\",\r\n \"linearGradient\",\r\n \"radialGradient\",\r\n \"stop\",\r\n \"mask\",\r\n \"clipPath\",\r\n \"pattern\",\r\n \"text\",\r\n \"tspan\",\r\n \"use\",\r\n \"symbol\",\r\n \"view\",\r\n \"ellipse\",\r\n \"foreignObject\",\r\n]);\r\n\r\nasync function renderHost(node: JsxNode, ctx: RenderCtx): Promise<Element> {\r\n if (typeof node.tag !== \"string\") {\r\n throw new Error(\"Host renderer erwartet string-Tag.\");\r\n }\r\n\r\n const tag = node.tag;\r\n const isSvg = SVG_TAGS.has(tag);\r\n\r\n const el = isSvg\r\n ? document.createElementNS(SVG_NS, tag)\r\n : document.createElement(tag);\r\n\r\n const props = node.props || {};\r\n\r\n for (const [key, value] of Object.entries(props)) {\r\n if (key === \"ctx\" || key === \"children\") continue;\r\n\r\n // EVENTS\r\n if (key.startsWith(\"on\") && typeof value === \"function\") {\r\n const evt = key.slice(2).toLowerCase();\r\n el.addEventListener(evt, value as EventListener);\r\n continue;\r\n }\r\n\r\n // STYLE (allow Signals)\r\n if (key === \"style\" && value && typeof value === \"object\") {\r\n for (const [k, v] of Object.entries(value as Record<string, any>)) {\r\n if (typeof v === \"function\" && v.type === \"signal\") {\r\n const initial = await v();\r\n el.style.setProperty(k, String(initial));\r\n\r\n await v(async (nv: any) => {\r\n el.style.setProperty(k, String(nv));\r\n });\r\n } else {\r\n el.style.setProperty(k, String(v));\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // SIGNAL PROPS (HTML + SVG)\r\n //@ts-ignore\r\n if (typeof value === \"function\" && value.type === \"signal\") {\r\n const initial = await value();\r\n\r\n if (isSvg) {\r\n el.setAttribute(key, String(initial));\r\n\r\n await value(async (nv: any) => {\r\n el.setAttribute(key, String(nv));\r\n });\r\n } else {\r\n // @ts-ignore\r\n el[key] = initial;\r\n\r\n await value(async (nv: any) => {\r\n // @ts-ignore\r\n el[key] = nv;\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n // NORMAL PROPS\r\n if (isSvg) {\r\n el.setAttribute(key, String(value));\r\n } else if (key in el) {\r\n // @ts-ignore\r\n el[key] = value;\r\n } else {\r\n el.setAttribute(key, String(value));\r\n }\r\n }\r\n\r\n ctx.parent.appendChild(el);\r\n return el;\r\n}\r\n\r\n// TEXT Renderer\r\nfunction renderText(node: JsxText, ctx: RenderCtx): Text {\r\n const t = document.createTextNode(node.value);\r\n ctx.parent.appendChild(t);\r\n return t;\r\n}\r\n\r\n// SIGNAL Renderer\r\nasync function renderSignal(node: JsxSignal, ctx: RenderCtx): Promise<Text> {\r\n const el = document.createTextNode(\"\");\r\n ctx.parent.appendChild(el);\r\n\r\n await node.value(async (value: any) => {\r\n if (el instanceof Text) {\r\n el.nodeValue = String(value);\r\n } else {\r\n throw \"svg not implemented with number and string\";\r\n }\r\n });\r\n\r\n return el;\r\n}\r\n","import { jsx } from \"./jsx\";\r\nimport { destroy } from \"./destroy\";\r\nimport { render } from \"./render\";\r\nimport { mount } from \"./mount\";\r\nimport type { ReadFn } from \"./signal\";\r\nimport { effect } from \"./effect\";\r\n\r\ninterface ShowPropsInterface {\r\n when: ReadFn<boolean>;\r\n}\r\nexport async function Show(p: ShowPropsInterface, children: any) {\r\n // Stabiler Host-Knoten (NICHT neu erzeugen)\r\n const host = jsx(\"csr-show-host\", { style: { display: \"contents\" } });\r\n\r\n // Stabiles Content-VNode (NICHT neu erzeugen)\r\n const content = jsx(\r\n \"csr-show-content\",\r\n { style: { display: \"contents\" } },\r\n ...children\r\n );\r\n\r\n let hostEl: Element | null = null;\r\n let contentEl: Element | null = null;\r\n\r\n mount(async (parent) => {\r\n // Render ONE Host\r\n const { el: h } = await render(host, { parent });\r\n hostEl = h as Element;\r\n\r\n //init visible must be true.\r\n //let effect decide\r\n let visible = false;\r\n effect(p.when, async (b) => {\r\n visible = !visible;\r\n\r\n if (!visible) {\r\n // on \"hide\". Destroy the whole tree\r\n if (contentEl) {\r\n await destroy(contentEl);\r\n contentEl = null;\r\n }\r\n } else {\r\n // render the whole tree\r\n const { el: c } = await render(content, {\r\n //@ts-expect-error\r\n ...p.ctx,\r\n parent: hostEl!,\r\n });\r\n contentEl = c as Element;\r\n }\r\n });\r\n });\r\n\r\n // Show produce his own structure, an MUST return nothing\r\n return null;\r\n}\r\n","import type { UnmountCallback } from \"./mount\";\r\nimport { registerUnmount } from \"./mount\";\r\n\r\nexport type { UnmountCallback } from \"./mount\";\r\n\r\n// Call this inside components to register cleanup logic for the component.\r\n// The actual association with the component root DOM element\r\n// happens in endComponentMountSession().\r\nexport function unmount(cb: UnmountCallback): void {\r\n registerUnmount(cb);\r\n}\r\n","import { unmount } from \"./unmount\";\ntype UUID = string;\n\nexport type ReadFn<T> = ((\n cb?: (value: unknown) => Promise<void>\n) => Promise<T>) & {\n type: \"signal\";\n};\n\nexport function signal<T>(value: T) {\n const uuid = crypto.randomUUID();\n connector.addTopic(uuid);\n\n unmount(() => {\n connector.removeTopic(uuid);\n });\n\n const read: ReadFn<T> = async (cb?: (v: unknown) => Promise<void>) => {\n if (cb) {\n connector.registerClbk(uuid, cb);\n unmount(() => {\n connector.removeClbk(uuid, cb);\n });\n await cb(value);\n }\n return value;\n };\n read.type = \"signal\";\n\n const write = async (cb: (prev: T) => Promise<T> | T) => {\n //get new value\n const next: T = await cb(value);\n value = next;\n\n //update signals\n if (connector) {\n connector.update(uuid, next);\n }\n };\n\n return [read, write] as const;\n}\n\nexport interface ConnectorInterface {\n update: (uuid: UUID, value: unknown) => void;\n addTopic: (uuid: UUID) => void;\n removeTopic: (uuid: UUID) => void;\n registerClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n removeClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n getUuidByClbk: (cb: (value: unknown) => void) => UUID;\n}\n\nclass Connector implements ConnectorInterface {\n //listener is a list of uuids that have a set of callbacks\n //it is possible, that a uuid has NO listener at all. this is by\n //design. uuid will be remove by mount and unmount\n private topic = new Map<UUID, Set<(value: any) => void>>();\n\n //the clbk mapping is to find uuid by fn ref fast\n //we dont want to have search all the listeners. this is the reason for\n //uuidMapping. its just a helper for better performance\n private clbkMapping = new Map<(value: any) => void, UUID>();\n\n public addTopic(uuid: UUID) {\n this.topic.set(uuid, new Set());\n }\n\n public removeTopic(uuid: UUID) {\n this.topic.delete(uuid);\n }\n\n public registerClbk<T>(uuid: string, cb: (value: T) => void) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n\n this.clbkMapping.set(cb, uuid);\n listeners.add(cb);\n }\n\n public removeClbk<T>(uuid: UUID, cb: (value: T) => void) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n listeners.delete(cb);\n }\n\n public update<T>(uuid: UUID, value: T) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n for (const listener of listeners) {\n listener(value);\n }\n }\n public getUuidByClbk(fn: (value: unknown) => void) {\n const uuid = this.clbkMapping.get(fn);\n if (!uuid) {\n throw new Error(\"Connector: clbkMapping has no uuid for fn \" + fn);\n }\n return uuid;\n }\n}\nexport const connector = new Connector();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["mountStack: MountCallback[][]","unmountStack: UnmountCallback[][]","childCtx: RenderCtx","hostEl: Element | null","contentEl: Element | null","read: ReadFn<T>","next: T"],"sources":["../core/mount.ts","../core/destroy.ts","../core/effect.ts","../core/fragment.ts","../core/jsx.ts","../core/render.ts","../core/show.tsx","../core/unmount.ts","../core/signal.ts"],"sourcesContent":["export type MountCallback = (el: Element) => void | Promise<void>;\r\nexport type UnmountCallback = () => void | Promise<void>;\r\n\r\n// Stack of mount/unmount callback queues per component render\r\nconst mountStack: MountCallback[][] = [];\r\nconst unmountStack: UnmountCallback[][] = [];\r\n\r\n// Called by the renderer before a component function is executed.\r\n// Initializes a new mount/unmount session for that component.\r\nexport function beginComponentMountSession(): void {\r\n mountStack.push([]);\r\n unmountStack.push([]);\r\n}\r\n\r\n// Called by the renderer once the component's DOM root element is known.\r\n// - Executes all registered mount callbacks\r\n// - Attaches all unmount callbacks to the root element\r\nexport function endComponentMountSession(el: Element): void {\r\n const mounts = mountStack.pop();\r\n const unmounts = unmountStack.pop();\r\n\r\n if (!mounts || !unmounts) return;\r\n\r\n // Execute mount callbacks (fire-and-forget)\r\n for (const cb of mounts) {\r\n try {\r\n const r = cb(el);\r\n if (r instanceof Promise) {\r\n r.catch(console.error);\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n // Store unmount callbacks on the element (DOM-first lifecycle)\r\n if (unmounts.length > 0) {\r\n const store = (el as any).__unmountCbs as UnmountCallback[] | undefined;\r\n if (store && Array.isArray(store)) {\r\n store.push(...unmounts);\r\n } else {\r\n (el as any).__unmountCbs = [...unmounts];\r\n }\r\n }\r\n}\r\n\r\n//Used inside components to register an on-mount callback.\r\nexport function mount(cb: MountCallback): void {\r\n const queue = mountStack[mountStack.length - 1];\r\n if (!queue) {\r\n throw new Error(\"mount(cb) was called outside of a component.\");\r\n }\r\n queue.push(cb);\r\n}\r\n\r\n// Used internally to register cleanup logic for the current component session.\r\nexport function registerUnmount(cb: UnmountCallback): void {\r\n const queue = unmountStack[unmountStack.length - 1];\r\n if (!queue) {\r\n throw new Error(\"unmount(cb) was called outside of a component.\");\r\n }\r\n queue.push(cb);\r\n}\r\n\r\n// Used by the destroy() path:\r\n// Executes all unmount callbacks registered on the element (LIFO order).\r\nexport async function runUnmountsForElement(el: Element): Promise<void> {\r\n const list = (el as any).__unmountCbs as UnmountCallback[] | undefined;\r\n if (!list || list.length === 0) return;\r\n\r\n for (let i = list.length - 1; i >= 0; i--) {\r\n const fn = list[i];\r\n if (!fn) continue;\r\n try {\r\n const r = fn();\r\n if (r instanceof Promise) {\r\n await r;\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n (el as any).__unmountCbs = undefined;\r\n}\r\n","import { runUnmountsForElement } from \"./mount\";\r\n\r\nexport async function destroy(root: Element): Promise<void> {\r\n const children = Array.from(root.childNodes);\r\n\r\n for (const child of children) {\r\n await destroyChild(child);\r\n }\r\n\r\n await runUnmountsForElement(root);\r\n\r\n if (root.parentNode) {\r\n root.parentNode.removeChild(root);\r\n } else {\r\n root.remove(); // Element hat remove()\r\n }\r\n}\r\n\r\nasync function destroyChild(node: Node): Promise<void> {\r\n if (node instanceof Element) {\r\n const kids = Array.from(node.childNodes);\r\n\r\n for (const k of kids) {\r\n await destroyChild(k);\r\n }\r\n\r\n await runUnmountsForElement(node);\r\n\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n } else {\r\n node.remove();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Text/Comment etc.\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n}\r\n","import type { ReadFn } from \"./signal\";\n\nexport async function effect<T>(\n readFn: ReadFn<T>,\n fn: (value: T) => Promise<unknown> | unknown\n): Promise<void> {\n //call, run fn AND register (register == provide clbk)\n await readFn(async (v) => {\n await fn(v as T);\n });\n}\n","export function fragment(p: null, ...childs: any) {\n return childs;\n}\n","import type { RenderCtx } from \"./render\";\r\nimport type { ReadFn } from \"./signal\";\r\n\r\ntype EventHandler<E extends Event = Event> = (event: E) => void;\r\n\r\ninterface DOMEvents {\r\n onClick?: EventHandler<MouseEvent>;\r\n onDblClick?: EventHandler<MouseEvent>;\r\n onMouseDown?: EventHandler<MouseEvent>;\r\n onMouseUp?: EventHandler<MouseEvent>;\r\n onMouseMove?: EventHandler<MouseEvent>;\r\n onMouseEnter?: EventHandler<MouseEvent>;\r\n onMouseLeave?: EventHandler<MouseEvent>;\r\n\r\n onKeyDown?: EventHandler<KeyboardEvent>;\r\n onKeyUp?: EventHandler<KeyboardEvent>;\r\n onInput?: EventHandler<InputEvent>;\r\n onChange?: EventHandler<Event>;\r\n\r\n onFocus?: EventHandler<FocusEvent>;\r\n onBlur?: EventHandler<FocusEvent>;\r\n}\r\n\r\ninterface StyleProps {\r\n [key: string]: string | number | ReadFn<string | number>;\r\n}\r\n\r\ntype MaybeSignal<T> = T | ReadFn<T>;\r\n\r\ninterface HTMLAttributes extends DOMEvents {\r\n id?: string;\r\n class?: string;\r\n className?: string;\r\n title?: string;\r\n\r\n style?: StyleProps;\r\n\r\n value?: MaybeSignal<string | number>;\r\n checked?: MaybeSignal<boolean>;\r\n disabled?: MaybeSignal<boolean>;\r\n\r\n children?: any;\r\n}\r\n\r\ninterface SVGAttributes extends DOMEvents {\r\n id?: string;\r\n class?: string;\r\n\r\n style?: StyleProps;\r\n\r\n viewBox?: MaybeSignal<string>;\r\n fill?: MaybeSignal<string>;\r\n stroke?: MaybeSignal<string>;\r\n strokeWidth?: MaybeSignal<number>;\r\n\r\n d?: MaybeSignal<string>;\r\n cx?: MaybeSignal<string | number>;\r\n cy?: MaybeSignal<string | number>;\r\n r?: MaybeSignal<string | number>;\r\n\r\n x?: MaybeSignal<string | number>;\r\n y?: MaybeSignal<string | number>;\r\n width?: MaybeSignal<string | number>;\r\n height?: MaybeSignal<string | number>;\r\n\r\n children?: any;\r\n}\r\n\r\ndeclare global {\r\n namespace JSX {\r\n type Element = JsxNode | Promise<JsxNode> | null | Promise<null>;\r\n interface ElementType {\r\n (props: any, ...children: any[]): any;\r\n }\r\n\r\n interface IntrinsicElements {\r\n // HTML\r\n div: HTMLAttributes;\r\n li: HTMLAttributes;\r\n ul: HTMLAttributes;\r\n h1: HTMLAttributes;\r\n h2: HTMLAttributes;\r\n h3: HTMLAttributes;\r\n h4: HTMLAttributes;\r\n h5: HTMLAttributes;\r\n h6: HTMLAttributes;\r\n span: HTMLAttributes;\r\n p: HTMLAttributes;\r\n button: HTMLAttributes;\r\n input: HTMLAttributes & {\r\n type?: string;\r\n placeholder?: string;\r\n };\r\n textarea: HTMLAttributes;\r\n form: HTMLAttributes;\r\n label: HTMLAttributes;\r\n\r\n // SVG\r\n svg: SVGAttributes;\r\n path: SVGAttributes;\r\n circle: SVGAttributes;\r\n rect: SVGAttributes;\r\n g: SVGAttributes;\r\n line: SVGAttributes;\r\n polyline: SVGAttributes;\r\n polygon: SVGAttributes;\r\n text: SVGAttributes;\r\n tspan: SVGAttributes;\r\n }\r\n }\r\n}\r\n\r\nexport type JsxChild = JsxNode | JsxText | JsxSignal;\r\n\r\nexport interface JsxText {\r\n kind: \"text\";\r\n value: string;\r\n}\r\n\r\nexport interface JsxSignal {\r\n kind: \"signal\";\r\n value: any;\r\n}\r\n\r\nexport interface JsxNode {\r\n kind: \"host\" | \"component\" | \"signal\";\r\n tag: string | ComponentFn;\r\n props: any;\r\n children: JsxChild[];\r\n}\r\n\r\nexport interface PropsInterface {\r\n ctx?: RenderCtx;\r\n}\r\n\r\nexport type ComponentFn = (\r\n props: PropsInterface,\r\n children: JsxChild[]\r\n) => JsxNode | null;\r\n\r\n// 1) JSX sammelt nur Struktur\r\nexport function jsx(\r\n tag: string | ComponentFn,\r\n props: any,\r\n ...rawChildren: any[]\r\n): JsxNode {\r\n const children = rawChildren.flatMap(normalizeChild);\r\n\r\n return {\r\n kind: typeof tag === \"string\" ? \"host\" : \"component\",\r\n tag,\r\n props,\r\n children,\r\n };\r\n}\r\n\r\nfunction normalizeChild(input: any): JsxChild | JsxChild[] {\r\n if (input == null || input === false || input === true) return [];\r\n\r\n if (typeof input === \"function\" && input?.type === \"signal\") {\r\n return { kind: \"signal\", value: input };\r\n }\r\n\r\n if (typeof input === \"string\" || typeof input === \"number\") {\r\n return { kind: \"text\", value: String(input) };\r\n }\r\n\r\n if (Array.isArray(input)) {\r\n return input.flatMap(normalizeChild);\r\n }\r\n\r\n return input;\r\n}\r\n","import type { ComponentFn, JsxNode, JsxChild, JsxText, JsxSignal } from \"./jsx\";\r\nimport { beginComponentMountSession, endComponentMountSession } from \"./mount\";\r\n\r\nexport interface RenderCtx {\r\n parent: Node & ParentNode;\r\n [k: string]: any;\r\n}\r\n\r\nexport interface RenderResult {\r\n el: Node;\r\n}\r\n\r\nexport async function render(\r\n node: JsxChild | Promise<JsxChild> | null | Promise<null>,\r\n ctx: RenderCtx\r\n): Promise<RenderResult> {\r\n node = await node;\r\n\r\n //nothing\r\n if (node == null) {\r\n return { el: ctx.parent };\r\n }\r\n\r\n //fragement recursive\r\n if (Array.isArray(node)) {\r\n for (const item of node) {\r\n return await render(item, ctx);\r\n }\r\n }\r\n\r\n // TEXT NODE\r\n if (node.kind === \"text\") {\r\n const el = renderText(node as JsxText, ctx);\r\n return { el };\r\n }\r\n\r\n //SIGNAL\r\n if (node.kind === \"signal\") {\r\n const el = await renderSignal(node as JsxSignal, ctx);\r\n return { el };\r\n }\r\n\r\n // COMPONENT NODE\r\n if (node.kind === \"component\") {\r\n const fn = node.tag as ComponentFn;\r\n\r\n // Mount/Unmount-Session für diese Component\r\n beginComponentMountSession();\r\n\r\n // Component-Funktion ausführen\r\n const resolved = await fn({ ...node.props, ctx }, node.children);\r\n\r\n // gerenderten Output rendern\r\n const result = await render(resolved, ctx);\r\n\r\n // Mounts ausführen und Unmounts am Root-Element registrieren\r\n if (result.el instanceof Element) {\r\n endComponentMountSession(result.el);\r\n } else {\r\n console.warn(\r\n \"Component-Root ist kein Element. Mount/Unmount werden ignoriert.\"\r\n );\r\n }\r\n\r\n ctx.self = result.el;\r\n return result;\r\n }\r\n\r\n // HOST NODE\r\n\r\n const el = await renderHost(node as JsxNode, ctx);\r\n\r\n const childCtx: RenderCtx = {\r\n ...ctx,\r\n parent: el,\r\n self: ctx.self,\r\n };\r\n\r\n for (const child of (node as JsxNode).children) {\r\n await render(child, childCtx);\r\n }\r\n\r\n return { el };\r\n}\r\n\r\n// HOST Renderer\r\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\r\n\r\nconst SVG_TAGS = new Set([\r\n \"svg\",\r\n \"path\",\r\n \"circle\",\r\n \"rect\",\r\n \"line\",\r\n \"polyline\",\r\n \"polygon\",\r\n \"g\",\r\n \"defs\",\r\n \"linearGradient\",\r\n \"radialGradient\",\r\n \"stop\",\r\n \"mask\",\r\n \"clipPath\",\r\n \"pattern\",\r\n \"text\",\r\n \"tspan\",\r\n \"use\",\r\n \"symbol\",\r\n \"view\",\r\n \"ellipse\",\r\n \"foreignObject\",\r\n]);\r\n\r\nasync function renderHost(node: JsxNode, ctx: RenderCtx): Promise<Element> {\r\n if (typeof node.tag !== \"string\") {\r\n throw new Error(\"Host renderer erwartet string-Tag.\");\r\n }\r\n\r\n const tag = node.tag;\r\n const isSvg = SVG_TAGS.has(tag);\r\n\r\n const el = isSvg\r\n ? document.createElementNS(SVG_NS, tag)\r\n : document.createElement(tag);\r\n\r\n const props = node.props || {};\r\n\r\n for (const [key, value] of Object.entries(props)) {\r\n if (key === \"ctx\" || key === \"children\") continue;\r\n\r\n // EVENTS\r\n if (key.startsWith(\"on\") && typeof value === \"function\") {\r\n const evt = key.slice(2).toLowerCase();\r\n el.addEventListener(evt, value as EventListener);\r\n continue;\r\n }\r\n\r\n // STYLE (allow Signals)\r\n if (key === \"style\" && value && typeof value === \"object\") {\r\n for (const [k, v] of Object.entries(value as Record<string, any>)) {\r\n if (typeof v === \"function\" && v.type === \"signal\") {\r\n const initial = await v();\r\n el.style.setProperty(k, String(initial));\r\n\r\n await v(async (nv: any) => {\r\n el.style.setProperty(k, String(nv));\r\n });\r\n } else {\r\n el.style.setProperty(k, String(v));\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // SIGNAL PROPS (HTML + SVG)\r\n //@ts-ignore\r\n if (typeof value === \"function\" && value.type === \"signal\") {\r\n const initial = await value();\r\n\r\n if (isSvg) {\r\n el.setAttribute(key, String(initial));\r\n\r\n await value(async (nv: any) => {\r\n el.setAttribute(key, String(nv));\r\n });\r\n } else {\r\n // @ts-ignore\r\n el[key] = initial;\r\n\r\n await value(async (nv: any) => {\r\n // @ts-ignore\r\n el[key] = nv;\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n // NORMAL PROPS\r\n if (isSvg) {\r\n el.setAttribute(key, String(value));\r\n } else if (key in el) {\r\n // @ts-ignore\r\n el[key] = value;\r\n } else {\r\n el.setAttribute(key, String(value));\r\n }\r\n }\r\n\r\n ctx.parent.appendChild(el);\r\n return el;\r\n}\r\n\r\n// TEXT Renderer\r\nfunction renderText(node: JsxText, ctx: RenderCtx): Text {\r\n const t = document.createTextNode(node.value);\r\n ctx.parent.appendChild(t);\r\n return t;\r\n}\r\n\r\n// SIGNAL Renderer\r\nasync function renderSignal(node: JsxSignal, ctx: RenderCtx): Promise<Text> {\r\n const el = document.createTextNode(\"\");\r\n ctx.parent.appendChild(el);\r\n\r\n await node.value(async (value: any) => {\r\n if (el instanceof Text) {\r\n el.nodeValue = String(value);\r\n } else {\r\n throw \"svg not implemented with number and string\";\r\n }\r\n });\r\n\r\n return el;\r\n}\r\n","import { jsx } from \"./jsx\";\r\nimport { destroy } from \"./destroy\";\r\nimport { render } from \"./render\";\r\nimport { mount } from \"./mount\";\r\nimport type { ReadFn } from \"./signal\";\r\nimport { effect } from \"./effect\";\r\n\r\ninterface ShowPropsInterface {\r\n when: ReadFn<boolean>;\r\n}\r\nexport async function Show(p: ShowPropsInterface, children: any) {\r\n // Stabiler Host-Knoten (NICHT neu erzeugen)\r\n const host = jsx(\"csr-show-host\", { style: { display: \"contents\" } });\r\n\r\n // Stabiles Content-VNode (NICHT neu erzeugen)\r\n const content = jsx(\r\n \"csr-show-content\",\r\n { style: { display: \"contents\" } },\r\n ...children\r\n );\r\n\r\n let hostEl: Element | null = null;\r\n let contentEl: Element | null = null;\r\n\r\n mount(async (parent) => {\r\n // Render ONE Host\r\n const { el: h } = await render(host, { parent });\r\n hostEl = h as Element;\r\n\r\n //init visible must be true.\r\n //let effect decide\r\n let visible = false;\r\n effect(p.when, async (b) => {\r\n visible = !visible;\r\n\r\n if (!visible) {\r\n // on \"hide\". Destroy the whole tree\r\n if (contentEl) {\r\n await destroy(contentEl);\r\n contentEl = null;\r\n }\r\n } else {\r\n // render the whole tree\r\n const { el: c } = await render(content, {\r\n //@ts-expect-error\r\n ...p.ctx,\r\n parent: hostEl!,\r\n });\r\n contentEl = c as Element;\r\n }\r\n });\r\n });\r\n\r\n // Show produce his own structure, an MUST return nothing\r\n return null;\r\n}\r\n","import type { UnmountCallback } from \"./mount\";\r\nimport { registerUnmount } from \"./mount\";\r\n\r\nexport type { UnmountCallback } from \"./mount\";\r\n\r\n// Call this inside components to register cleanup logic for the component.\r\n// The actual association with the component root DOM element\r\n// happens in endComponentMountSession().\r\nexport function unmount(cb: UnmountCallback): void {\r\n registerUnmount(cb);\r\n}\r\n","import { unmount } from \"./unmount\";\ntype UUID = string;\n\nexport type ReadFn<T> = ((\n cb?: (value: unknown) => Promise<void>\n) => Promise<T>) & {\n type: \"signal\";\n};\n\nexport function signal<T>(value: T) {\n const uuid = crypto.randomUUID();\n connector.addTopic(uuid);\n\n unmount(() => {\n connector.removeTopic(uuid);\n });\n\n const read: ReadFn<T> = async (cb?: (v: unknown) => Promise<void>) => {\n if (cb) {\n connector.registerClbk(uuid, cb);\n unmount(() => {\n connector.removeClbk(uuid, cb);\n });\n await cb(value);\n }\n return value;\n };\n read.type = \"signal\";\n\n const write = async (cb: (prev: T) => Promise<T> | T) => {\n //get new value\n const next: T = await cb(value);\n value = next;\n\n //update signals\n if (connector) {\n connector.update(uuid, next);\n }\n };\n\n return [read, write] as const;\n}\n\nexport interface ConnectorInterface {\n update: (uuid: UUID, value: unknown) => void;\n addTopic: (uuid: UUID) => void;\n removeTopic: (uuid: UUID) => void;\n registerClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n removeClbk: (uuid: UUID, cb: (value: unknown) => void) => void;\n getUuidByClbk: (cb: (value: unknown) => void) => UUID;\n}\n\nclass Connector implements ConnectorInterface {\n //listener is a list of uuids that have a set of callbacks\n //it is possible, that a uuid has NO listener at all. this is by\n //design. uuid will be remove by mount and unmount\n private topic = new Map<UUID, Set<(value: any) => void>>();\n\n //the clbk mapping is to find uuid by fn ref fast\n //we dont want to have search all the listeners. this is the reason for\n //uuidMapping. its just a helper for better performance\n private clbkMapping = new Map<(value: any) => void, UUID>();\n\n public addTopic(uuid: UUID) {\n this.topic.set(uuid, new Set());\n }\n\n public removeTopic(uuid: UUID) {\n this.topic.delete(uuid);\n }\n\n public registerClbk<T>(uuid: string, cb: (value: T) => void) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n\n this.clbkMapping.set(cb, uuid);\n listeners.add(cb);\n }\n\n public removeClbk<T>(uuid: UUID, cb: (value: T) => void) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n listeners.delete(cb);\n }\n\n public update<T>(uuid: UUID, value: T) {\n const listeners = this.topic.get(uuid);\n if (!listeners) return;\n for (const listener of listeners) {\n listener(value);\n }\n }\n public getUuidByClbk(fn: (value: unknown) => void) {\n const uuid = this.clbkMapping.get(fn);\n if (!uuid) {\n throw new Error(\"Connector: clbkMapping has no uuid for fn \" + fn);\n }\n return uuid;\n }\n}\nexport const connector = new Connector();\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@papack/csr",
|
|
3
3
|
"description": "Async UI Dom runtime",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.2",
|
|
5
5
|
"author": "Matthias Steiner",
|
|
6
6
|
"repository": "github:papack/csr",
|
|
7
7
|
"homepage": "https://github.com/papack/csr",
|
|
@@ -23,4 +23,4 @@
|
|
|
23
23
|
"@types/bun": "latest",
|
|
24
24
|
"tsdown": "^0.16.8"
|
|
25
25
|
}
|
|
26
|
-
}
|
|
26
|
+
}
|