uhandlers
Version:
µhtml attributes handlers
2 lines (1 loc) • 1.17 kB
JavaScript
var uhtmlHandlers=function(t){"use strict";const{isArray:e}=Array;let n=!1;class r{constructor(t,e){n=!0,this._=(...n)=>t(...n,e)}}const o=t=>null==t?t:t.valueOf(),s=({dataset:t})=>e=>{for(const n in e){const r=e[n];null==r?delete t[n]:t[n]=r}};return t.Foreign=r,t.aria=t=>e=>{for(const n in e){const r="role"===n?n:`aria-${n}`,o=e[n];null==o?t.removeAttribute(r):t.setAttribute(r,o)}},t.attribute=(t,e)=>{let s,u=!0;const l=document.createAttributeNS(null,e);return i=>{const a=n&&i instanceof r?i._(t,e):o(i);s!==a&&(null==(s=a)?u||(t.removeAttributeNode(l),u=!0):(l.value=a,u&&(t.setAttributeNodeNS(l),u=!1)))}},t.boolean=(t,e,n)=>r=>{const s=!!o(r);n!==s&&((n=s)?t.setAttribute(e,""):t.removeAttribute(e))},t.data=s,t.event=(t,n)=>{let r,o,s=n.slice(2);return!(n in t)&&(o=n.toLowerCase())in t&&(s=o.slice(2)),n=>{const o=e(n)?n:[n,!1];r!==o[0]&&(r&&t.removeEventListener(s,r,o[1]),(r=o[0])&&t.addEventListener(s,r,o[1]))}},t.foreign=(t,e)=>new r(t,e),t.ref=t=>{let e;return n=>{e!==n&&(e=n,"function"==typeof n?n(t):n.current=t)}},t.setter=(t,e)=>"dataset"===e?s(t):n=>{t[e]=n},t.text=t=>{let e;return n=>{const r=o(n);e!=r&&(e=r,t.textContent=null==r?"":r)}},t}({});