tagu-tagu 2.1.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var S=class{node2Data=new WeakMap;addCallbacks(t,n){if(!n)return;this.node2DescendantCallbacks.has(t)||this.node2DescendantCallbacks.set(t,{});let o=this.node2DescendantCallbacks.get(t);w(o,n);let i=this.node2Data.get(t);k(o,i)}setDataRecord(t,n){n&&this.node2Data.set(t,n)}resolveCallbacks(t,n){let o=(a,d)=>{if(k(d,this.node2Data.get(a)),!!Object.keys(d).length){if(!a.parentElement){this.node2DescendantCallbacks.has(a)||this.node2DescendantCallbacks.set(a,{});let m=this.node2DescendantCallbacks.get(a);m&&w(m,d);return}o(a.parentElement,d)}},i=this.node2DescendantCallbacks.get(n);i&&o(t,i)}node2DescendantCallbacks=new WeakMap};function k(e,t){for(let n in t)if(n in e){for(let o of e[n])o(t[n]);delete e[n]}}var s=new S;function H(e,t){s.setDataRecord(e,t)}function $(e){if(!e)return;let t={};for(let n in e){let o=e[n];t[n]=[o]}if(Object.keys(t).length)return t}function w(e,t){for(let n in t)e[n]||(e[n]=[]),e[n].push(...t[n])}function z(e,t){if(!e)return;let n=s.node2Data.get(e);return n&&t in n?n[t]:z(e.parentElement,t)}function b(e,t){s.addCallbacks(e,$(t))}function A(e,t=n=>n){return new T(e,t)}var T=class{constructor(t,n){this.key=t;this.map=n}};var c=class{next=null;firstNode=null};var p=class{#e;constructor(t){this.#e=t}get=()=>this.#e;set(t){this.#e=t,this.#n("change")}#n(t){this.#t.dispatchEvent(new Event(t))}#t=new EventTarget;on(t,n){this.#t.addEventListener(t,n)}};function ie(e){return new p(e)}function R(e,t){let n=new p(t()),o=()=>{n.set(t())};for(let i of e)i.on("change",o);return n}function D(e,t){let n=j(t);K(n);for(let o of n)O(e,o)}function O(e,t){t instanceof c?t.run(e):(s.resolveCallbacks(e,t),e.appendChild(t))}function j(e){return e.map(t=>{if(typeof t=="string"||t instanceof p){let n=document.createTextNode("");return y(t,o=>{n.textContent=o}),n}return t})}function K(e){for(let t=0;t<e.length;t++){let n=e[t];n instanceof c&&(n.next=e[t+1]??null)}}function B(e){let t=e.next;return t===null?null:t instanceof Node?t:t.firstNode?t.firstNode:B(t)}function g(e){let t=B(e);return t?.parentElement?t:null}function y(e,t){if(typeof e=="string")t(e);else{let n=()=>{t(e.get())};n(),e.on("change",n)}}function x(e,t,n){t instanceof T?b(e,{[t.key]:o=>{let a=o instanceof p?R([o],()=>t.map(o.get())):t.map(o);y(a,n)}}):y(t,n)}function V(e,t){t!==void 0&&x(e,t,n=>{e.innerHTML=n})}function F(e,t){t!==void 0&&x(e,t,n=>{e.textContent=n})}function q(e,t){let n=e.style;if(n instanceof CSSStyleDeclaration)for(let o in t){let i=t[o];x(e,i,a=>n.setProperty(o,a))}}function P(e,t){for(let n in t){let o=t[n];x(e,o,i=>{i?e.setAttribute(n,i):e.removeAttribute(n)})}}function G(e,t){for(let n in t){let o=t[n];x(e,o,i=>{e[n]=i})}}function U(e,t){for(let n in t){let o=e.querySelector(n);o&&C(o,t[n])}}function W(e,t){for(let n in t){let o=e.querySelectorAll(n);for(let i of o)C(i,t[n])}}function Q(e,t){for(let n in t){let i=t[n];i&&(typeof i=="function"?e.addEventListener(n,i):i instanceof T?b(e,{[i.key]:a=>{let d=i.map(a);e.addEventListener(n,d)}}):e.addEventListener(n,i.listener,i.options))}}function C(e,t){e&&(typeof t=="string"||t instanceof p?F(e,t):Array.isArray(t)?D(e,t):typeof t=="function"?t(e):(V(e,t.html),F(e,t.text),P(e,t.attr),G(e,t.prop),q(e,t.css),U(e,t.$),W(e,t.$$),Q(e,t.on),H(e,t.data)))}function v(e,...t){let n=typeof e=="string"?document.querySelector(e):e;for(let o of t)C(n,o);return n}function xe(e,...t){let n=document.createElementNS("http://www.w3.org/2000/svg",e);return v(n,...t)}function r(e,...t){let n=document.createElement(e);return v(n,...t),n}function ye(e,...t){let n=L({html:e}).children[0];return v(n,...t)}function Se(...e){return r("h1",...e)}function be(...e){return r("h2",...e)}function Ce(...e){return r("h3",...e)}function Le(...e){return r("h4",...e)}function Me(...e){return r("h5",...e)}function Ne(...e){return r("h6",...e)}function Ie(...e){return r("p",...e)}function ke(...e){return r("section",...e)}function we(...e){return r("button",...e)}function He(...e){return r("span",...e)}function ze(e){function t(n,o){return`${n} {${Object.keys(o).map(i=>`${i}: ${o[i]};`).join("")}}`}return r("style",[Object.keys(e).map(n=>t(n,e[n])).join("")])}function L(...e){return r("div",...e)}function Re(...e){return L({css:{display:"flex"}},...e)}function De(...e){return r("input",...e)}function Be(...e){return r("textarea",...e)}function Fe(...e){return r("select",...e)}function $e(...e){return r("option",...e)}function Ae(...e){return r("br",...e)}function Oe(...e){return r("tr",...e)}function je(...e){return r("td",...e)}function Ke(...e){return r("b",...e)}function Ve(...e){return r("label",...e)}function qe(...e){return r("a",...e)}function Pe(...e){return r("blockquote",...e)}function Ge(...e){return r("li",...e)}function Ue(...e){return r("ol",...e)}function We(...e){return r("ul",...e)}function Qe(...e){return r("audio",...e)}function Je(...e){return r("video",...e)}function Xe(...e){return r("img",...e)}function Ye(...e){return r("canvas",...e)}function Ze(...e){return r("iframe",...e)}function _e(...e){return r("form",...e)}function et(...e){return r("table",...e)}function tt(...e){return r("tbody",...e)}function nt(...e){return r("hr",...e)}function J(e,t){return new M(e,t)}var M=class extends c{constructor(n,o){super();this.list=n;this.map=o}run(n){let o=new Map,i=new Map,a=()=>{let d=[];for(let l of this.list.get())o.has(l)||d.push(l);let m=[],f=new Set(this.list.get());for(let l of i.keys()){let u=i.get(l);u&&!f.has(u)&&m.push(l)}for(let l of d){let u=this.map(l),h=typeof u=="string"?document.createTextNode(u):u;s.resolveCallbacks(n,h),i.set(h,l),o.set(l,h)}for(let l of m){l.parentNode?.removeChild(l);let u=i.get(l);i.delete(l),u&&o.delete(u)}for(let l of[...i.keys()])l.parentElement?.removeChild(l);let E=g(this);for(let l of this.list.get())n.insertBefore(o.get(l),E);this.firstNode=o.get(this.list.get()[0])??null};a(),this.list.on("change",()=>{a()})}};function X(e,t,n){return new N(e,t,n)}var N=class extends c{#e;#n;#t;constructor(t,n,o){super(),this.#e=t,this.#n=n,this.#t=o}run(t){let n,o,i=()=>{let a=g(this);this.#e.get()?(n||(n=this.#n()),s.resolveCallbacks(t,n),this.firstNode=n,o?.remove(),t.insertBefore(n,a)):(o||(o=this.#t?.()),o&&s.resolveCallbacks(t,o),this.firstNode=o??null,n?.remove(),o&&t.insertBefore(o,a))};i(),this.#e.on("change",i)}};function Y(e,t,n){return new I(e,t,n)}var I=class extends c{#e;#n;#t;constructor(t,n,o){super(),this.#e=t,this.#n=n,this.#t=o}run(t){let n=new Map,o=new Map;for(let f of this.#n)o.set(f.case,f);let i,a,d=f=>{let E=o.get(f);if(E){if(!n.has(f)){let l=E.show();n.set(f,l)}return n.get(f)}return this.#t&&!a&&(a=this.#t()),a},m=()=>{let f=this.#e.get(),E=g(this),l=d(f);l&&s.resolveCallbacks(t,l),i?.remove(),l&&t.insertBefore(l,E),i=l};m(),this.#e.on("change",m)}};export{c as ControlFlow,Re as FlexDiv,J as For,R as FromStates,r as Html,X as If,v as Modify,p as State,xe as Svg,Y as Switch,ye as Tag,qe as a,y as applyStringOrState,Qe as audio,Ke as b,Pe as blockquote,Ae as br,we as button,Ye as canvas,L as div,z as findData,_e as form,Se as h1,be as h2,Ce as h3,Le as h4,Me as h5,Ne as h6,nt as hr,Ze as iframe,Xe as img,De as input,Ve as label,Ge as li,Ue as ol,$e as option,Ie as p,ke as section,Fe as select,He as span,ze as style,et as table,tt as tbody,je as td,Be as textarea,Oe as tr,We as ul,A as useBinding,ie as useState,Je as video};
1
+ var S=class{node2Data=new WeakMap;addCallbacks(t,n){if(!n)return;this.node2DescendantCallbacks.has(t)||this.node2DescendantCallbacks.set(t,{});let o=this.node2DescendantCallbacks.get(t);H(o,n);let i=this.node2Data.get(t);k(o,i)}setDataRecord(t,n){n&&this.node2Data.set(t,n)}resolveCallbacks(t,n){let o=(l,d)=>{if(k(d,this.node2Data.get(l)),!!Object.keys(d).length){if(!l.parentElement){this.node2DescendantCallbacks.has(l)||this.node2DescendantCallbacks.set(l,{});let m=this.node2DescendantCallbacks.get(l);m&&H(m,d);return}o(l.parentElement,d)}},i=this.node2DescendantCallbacks.get(n);i&&o(t,i)}node2DescendantCallbacks=new WeakMap};function k(e,t){for(let n in t)if(n in e){for(let o of e[n])o(t[n]);delete e[n]}}var s=new S;function D(e,t){s.setDataRecord(e,t)}function $(e){if(!e)return;let t={};for(let n in e){let o=e[n];t[n]=[o]}if(Object.keys(t).length)return t}function H(e,t){for(let n in t)e[n]||(e[n]=[]),e[n].push(...t[n])}function b(e,t){if(!e)return;let n=s.node2Data.get(e);return n&&t in n?n[t]:b(e.parentElement,t)}function C(e,t){if(typeof t=="string")return A(e,t);s.addCallbacks(e,$(t))}function A(e,t){return new Promise(n=>{let o=b(e,t);o!==void 0?n(o):s.addCallbacks(e,{[t]:[n]})})}function P(e,t=n=>n){return new T(e,t)}var T=class{constructor(t,n){this.key=t;this.map=n}};var c=class{next=null;firstNode=null};var p=class{#e;constructor(t){this.#e=t}get=()=>this.#e;set(t){this.#e=t,this.#n("change")}#n(t){this.#t.dispatchEvent(new Event(t))}#t=new EventTarget;on(t,n){this.#t.addEventListener(t,n)}};function R(e,t){return typeof t=="function"?O(e,t):new p(e)}function O(e,t){let n=new p(t()),o=()=>{n.set(t())};for(let i of e)i.on("change",o);return n}function z(e,t){let n=V(t);q(n);for(let o of n)j(e,o)}function j(e,t){t instanceof c?t.run(e):(s.resolveCallbacks(e,t),e.appendChild(t))}function V(e){return e.map(t=>{if(typeof t=="string"||t instanceof p){let n=document.createTextNode("");return y(t,o=>{n.textContent=o}),n}return t})}function q(e){for(let t=0;t<e.length;t++){let n=e[t];n instanceof c&&(n.next=e[t+1]??null)}}function B(e){let t=e.next;return t===null?null:t instanceof Node?t:t.firstNode?t.firstNode:B(t)}function g(e){let t=B(e);return t?.parentElement?t:null}function y(e,t){if(typeof e=="string")t(e);else{let n=()=>{t(e.get())};n(),e.on("change",n)}}function x(e,t,n){t instanceof T?C(e,{[t.key]:o=>{let l=o instanceof p?R([o],()=>t.map(o.get())):t.map(o);y(l,n)}}):y(t,n)}function K(e,t){t!==void 0&&x(e,t,n=>{e.innerHTML=n})}function F(e,t){t!==void 0&&x(e,t,n=>{e.textContent=n})}function G(e,t){let n=e.style;if(n instanceof CSSStyleDeclaration)for(let o in t){let i=t[o];x(e,i,l=>n.setProperty(o,l))}}function U(e,t){for(let n in t){let o=t[n];x(e,o,i=>{i?e.setAttribute(n,i):e.removeAttribute(n)})}}function W(e,t){for(let n in t){let o=t[n];x(e,o,i=>{e[n]=i})}}function Q(e,t){for(let n in t){let o=e.querySelector(n);o&&L(o,t[n])}}function _(e,t){for(let n in t){let o=e.querySelectorAll(n);for(let i of o)L(i,t[n])}}function J(e,t){for(let n in t){let i=t[n];i&&(typeof i=="function"?e.addEventListener(n,i):i instanceof T?C(e,{[i.key]:l=>{let d=i.map(l);e.addEventListener(n,d)}}):e.addEventListener(n,i.listener,i.options))}}function L(e,t){e&&(typeof t=="string"||t instanceof p?F(e,t):Array.isArray(t)?z(e,t):typeof t=="function"?t(e):(K(e,t.html),F(e,t.text),U(e,t.attr),W(e,t.prop),G(e,t.css),Q(e,t.$),_(e,t.$$),J(e,t.on),D(e,t.data)))}function v(e,...t){let n=typeof e=="string"?document.querySelector(e):e;for(let o of t)L(n,o);return n}function ye(e,...t){let n=document.createElementNS("http://www.w3.org/2000/svg",e);return v(n,...t)}function r(e,...t){let n=document.createElement(e);return v(n,...t),n}function ve(e,...t){let n=N({html:e}).children[0];return v(n,...t)}function be(...e){return r("h1",...e)}function Ce(...e){return r("h2",...e)}function Le(...e){return r("h3",...e)}function Ne(...e){return r("h4",...e)}function we(...e){return r("h5",...e)}function Me(...e){return r("h6",...e)}function Ie(...e){return r("p",...e)}function ke(...e){return r("section",...e)}function He(...e){return r("button",...e)}function De(...e){return r("span",...e)}function Re(e){function t(n,o){return`${n} {${Object.keys(o).map(i=>`${i}: ${o[i]};`).join("")}}`}return r("style",[Object.keys(e).map(n=>t(n,e[n])).join("")])}function N(...e){return r("div",...e)}function ze(...e){return N({css:{display:"flex"}},...e)}function Be(...e){return r("input",...e)}function Fe(...e){return r("textarea",...e)}function $e(...e){return r("select",...e)}function Ae(...e){return r("option",...e)}function Pe(...e){return r("br",...e)}function Oe(...e){return r("tr",...e)}function je(...e){return r("td",...e)}function Ve(...e){return r("b",...e)}function qe(...e){return r("label",...e)}function Ke(...e){return r("a",...e)}function Ge(...e){return r("blockquote",...e)}function Ue(...e){return r("li",...e)}function We(...e){return r("ol",...e)}function Qe(...e){return r("ul",...e)}function _e(...e){return r("audio",...e)}function Je(...e){return r("video",...e)}function Xe(...e){return r("img",...e)}function Ye(...e){return r("canvas",...e)}function Ze(...e){return r("iframe",...e)}function et(...e){return r("form",...e)}function tt(...e){return r("table",...e)}function nt(...e){return r("tbody",...e)}function ot(...e){return r("hr",...e)}function X(e,t){return new w(e,t)}var w=class extends c{constructor(n,o){super();this.list=n;this.map=o}run(n){let o=new Map,i=new Map,l=()=>{let d=[];for(let a of this.list.get())o.has(a)||d.push(a);let m=[],f=new Set(this.list.get());for(let a of i.keys()){let u=i.get(a);u&&!f.has(u)&&m.push(a)}for(let a of d){let u=this.map(a),h=typeof u=="string"?document.createTextNode(u):u;s.resolveCallbacks(n,h),i.set(h,a),o.set(a,h)}for(let a of m){a.parentNode?.removeChild(a);let u=i.get(a);i.delete(a),u&&o.delete(u)}for(let a of[...i.keys()])a.parentElement?.removeChild(a);let E=g(this);for(let a of this.list.get())n.insertBefore(o.get(a),E);this.firstNode=o.get(this.list.get()[0])??null};l(),this.list.on("change",()=>{l()})}};function Y(e,t,n){return new M(e,t,n)}var M=class extends c{#e;#n;#t;constructor(t,n,o){super(),this.#e=t,this.#n=n,this.#t=o}run(t){let n,o,i=()=>{let l=g(this);this.#e.get()?(n||(n=this.#n()),s.resolveCallbacks(t,n),this.firstNode=n,o?.remove(),t.insertBefore(n,l)):(o||(o=this.#t?.()),o&&s.resolveCallbacks(t,o),this.firstNode=o??null,n?.remove(),o&&t.insertBefore(o,l))};i(),this.#e.on("change",i)}};function Z(e,t,n){return new I(e,t,n)}var I=class extends c{#e;#n;#t;constructor(t,n,o){super(),this.#e=t,this.#n=n,this.#t=o}run(t){let n=new Map,o=new Map;for(let f of this.#n)o.set(f.case,f);let i,l,d=f=>{let E=o.get(f);if(E){if(!n.has(f)){let a=E.show();n.set(f,a)}return n.get(f)}return this.#t&&!l&&(l=this.#t()),l},m=()=>{let f=this.#e.get(),E=g(this),a=d(f);a&&s.resolveCallbacks(t,a),i?.remove(),a&&t.insertBefore(a,E),i=a};m(),this.#e.on("change",m)}};export{c as ControlFlow,ze as FlexDiv,X as For,r as Html,Y as If,v as Modify,p as State,ye as Svg,Z as Switch,ve as Tag,Ke as a,y as applyStringOrState,_e as audio,Ve as b,Ge as blockquote,Pe as br,He as button,Ye as canvas,N as div,b as findData,et as form,be as h1,Ce as h2,Le as h3,Ne as h4,we as h5,Me as h6,ot as hr,Ze as iframe,Xe as img,Be as input,qe as label,Ue as li,We as ol,Ae as option,Ie as p,ke as section,$e as select,De as span,Re as style,tt as table,nt as tbody,je as td,Fe as textarea,Oe as tr,Qe as ul,P as useBinding,R as useState,Je as video};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tagu-tagu",
3
- "version": "2.1.1",
3
+ "version": "3.1.0",
4
4
  "description": "A lightweight helper for vanilla `HTMLElement`, with reactivity.",
5
5
  "keywords": [
6
6
  "vanilla",
package/src/Modify.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type DataRecord, initializeData, waitForData } from "./data/data";
2
2
  import { Binding } from "./data/useBinding";
3
3
  import { type ChildType, initializeChildBlock } from "./initializeChildBlock";
4
- import { FromStates, State } from "./State";
4
+ import { State, useState } from "./State";
5
5
 
6
6
  type EventListenerType<
7
7
  TEventType2Event,
@@ -70,7 +70,7 @@ function applyStringOrStateOrBinding(
70
70
  [value.key]: (data: any) => {
71
71
  const isState = data instanceof State;
72
72
  const stringOrState = isState
73
- ? FromStates([data], () => value.map(data.get()))
73
+ ? useState([data], () => value.map(data.get()))
74
74
  : value.map(data);
75
75
 
76
76
  applyStringOrState(stringOrState, initialize);
package/src/State.ts CHANGED
@@ -22,11 +22,17 @@ export class State<T = any> {
22
22
 
23
23
  type StateEventType = "change";
24
24
 
25
- export function useState<T>(value: T) {
26
- return new State<T>(value);
25
+ export function useState<T>(states: State[], map: () => T): State<T>;
26
+ export function useState<T>(value: T): State<T>;
27
+ export function useState<T>(value: any, map?: any) {
28
+ if (typeof map === "function") {
29
+ return fromStates(value, map);
30
+ } else {
31
+ return new State<T>(value);
32
+ }
27
33
  }
28
34
 
29
- export function FromStates<T>(states: State[], createValue: () => T) {
35
+ function fromStates<T>(states: State[], createValue: () => T) {
30
36
  const result = new State<T>(createValue());
31
37
  const update = () => {
32
38
  result.set(createValue());
package/src/data/data.ts CHANGED
@@ -125,9 +125,23 @@ export function findData(node: Node | null, key: string) {
125
125
  return findData(node.parentElement, key);
126
126
  }
127
127
 
128
+ export function waitForData<T = any>(node: Node, key: string): Promise<T>;
128
129
  export function waitForData(
129
130
  node: Node,
130
131
  callbackRecord: Record<string, (data: any) => void>,
131
- ) {
132
- nodeData.addCallbacks(node, extractCallbackRecord(callbackRecord));
132
+ ): void;
133
+ export function waitForData(node: Node, callbacksOrKey: any) {
134
+ if (typeof callbacksOrKey === "string") {
135
+ return waitForData_Promise(node, callbacksOrKey);
136
+ }
137
+
138
+ nodeData.addCallbacks(node, extractCallbackRecord(callbacksOrKey));
139
+ }
140
+
141
+ function waitForData_Promise<T = any>(node: Node, key: string): Promise<T> {
142
+ return new Promise<any>((resolve) => {
143
+ const found = findData(node, key);
144
+ if (found !== undefined) resolve(found);
145
+ else nodeData.addCallbacks(node, { [key]: [resolve] });
146
+ });
133
147
  }