prop-for-that 0.6.4 → 0.7.1
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/CHANGELOG.md +63 -0
- package/README.md +8 -6
- package/dist/auto.cjs +1 -1
- package/dist/auto.js +1 -1
- package/dist/battery-CDMJLP4C.js +1 -0
- package/dist/battery-DQQ2NOGC.cjs +1 -0
- package/dist/chunk-2C7ZUOOR.js +1 -0
- package/dist/chunk-2E2JQAHI.js +1 -0
- package/dist/chunk-2H5YFW6O.cjs +1 -0
- package/dist/chunk-2LAVIUIS.cjs +1 -0
- package/dist/chunk-3MK6Q7DX.cjs +1 -0
- package/dist/chunk-3W7CXUWN.cjs +1 -0
- package/dist/chunk-5JZBLUQK.js +1 -0
- package/dist/chunk-63C3RCO2.cjs +1 -0
- package/dist/chunk-65MXZJBD.cjs +1 -0
- package/dist/chunk-6FIY4G6K.cjs +1 -0
- package/dist/chunk-6LTQ7ISE.cjs +1 -0
- package/dist/chunk-7CDVAP3H.cjs +1 -0
- package/dist/chunk-7L35N3N3.cjs +1 -0
- package/dist/chunk-7U544OAJ.js +1 -0
- package/dist/chunk-A2ETARW3.js +1 -0
- package/dist/chunk-A6JDSQWH.cjs +1 -0
- package/dist/chunk-A7GWTDM7.js +1 -0
- package/dist/chunk-BH7EQDLL.cjs +1 -0
- package/dist/chunk-CGNMHQYQ.cjs +1 -0
- package/dist/chunk-CQQV55KU.cjs +1 -0
- package/dist/chunk-DQJQEWPS.js +1 -0
- package/dist/chunk-EEMKKLRF.js +1 -0
- package/dist/chunk-EOPF4ZLZ.cjs +1 -0
- package/dist/chunk-F5H2O3AR.js +1 -0
- package/dist/chunk-FKBHTKZH.cjs +1 -0
- package/dist/chunk-FOHEZJHF.js +1 -0
- package/dist/chunk-H7X35UB4.js +1 -0
- package/dist/chunk-HHINWX7L.cjs +1 -0
- package/dist/chunk-HKCTBVQT.js +1 -0
- package/dist/chunk-HYVT6V4Z.cjs +1 -0
- package/dist/chunk-IJDX3MYP.js +1 -0
- package/dist/chunk-IKOVFAJO.js +1 -0
- package/dist/chunk-JB72QLD6.js +1 -0
- package/dist/chunk-KAK6WZS7.js +1 -0
- package/dist/chunk-KMPRPVIO.js +1 -0
- package/dist/chunk-L4SCOKPV.cjs +1 -0
- package/dist/chunk-LF4OE7IL.js +1 -0
- package/dist/chunk-LTJ2VKVY.js +1 -0
- package/dist/chunk-LULEQHRM.cjs +1 -0
- package/dist/chunk-MDKLN42L.js +1 -0
- package/dist/chunk-MGZTR3X6.cjs +1 -0
- package/dist/chunk-MJJCQRTF.cjs +1 -0
- package/dist/chunk-OVF4XN2H.cjs +1 -0
- package/dist/chunk-QHHF5SEL.cjs +1 -0
- package/dist/chunk-QIUPJ6MF.js +1 -0
- package/dist/chunk-QRIZE6VL.js +1 -0
- package/dist/chunk-RI7ZNKJ4.js +1 -0
- package/dist/chunk-RT47EE2L.cjs +1 -0
- package/dist/chunk-S2QXIZB2.cjs +1 -0
- package/dist/chunk-SBF6XS5A.cjs +1 -0
- package/dist/chunk-SFO6H2DN.js +1 -0
- package/dist/chunk-SRQQTNRZ.js +1 -0
- package/dist/chunk-SYKMPPTY.cjs +1 -0
- package/dist/chunk-T4N6AEOZ.js +1 -0
- package/dist/chunk-UALPUR2L.cjs +1 -0
- package/dist/chunk-UHGW7AXC.js +1 -0
- package/dist/chunk-UQW7YOHI.js +1 -0
- package/dist/chunk-WIPJMLJJ.cjs +1 -0
- package/dist/chunk-WUGCASE4.js +1 -0
- package/dist/chunk-X5SADKXG.cjs +1 -0
- package/dist/chunk-XQOUJEVE.cjs +1 -0
- package/dist/chunk-Y7HUY6HR.js +1 -0
- package/dist/chunk-YXEERKSK.js +1 -0
- package/dist/chunk-YXQTZ7WB.cjs +1 -0
- package/dist/chunk-ZQTU5EW7.js +1 -0
- package/dist/clock-EVSBOOMJ.cjs +1 -0
- package/dist/clock-LYF2IHGE.js +1 -0
- package/dist/color-input-ISNND62O.cjs +1 -0
- package/dist/color-input-UT32SY4G.js +1 -0
- package/dist/cpu-pressure-FXZDL5IE.cjs +1 -0
- package/dist/cpu-pressure-WCDHVDRP.js +1 -0
- package/dist/field-MPAB2GPW.cjs +1 -0
- package/dist/field-N3X45MAG.js +1 -0
- package/dist/field-state-CW4AHAD4.js +1 -0
- package/dist/field-state-LUVDPYVB.cjs +1 -0
- package/dist/form-state-43U225CL.js +1 -0
- package/dist/form-state-OQCU5JIW.cjs +1 -0
- package/dist/fps-OLN52HAI.js +1 -0
- package/dist/fps-TZQLC5MI.cjs +1 -0
- package/dist/geo-CMG7QJ6S.cjs +1 -0
- package/dist/geo-MXO5OMVO.js +1 -0
- package/dist/head.cjs +1 -1
- package/dist/img-QU7AEFQR.cjs +1 -0
- package/dist/img-ZKCK5FYH.js +1 -0
- package/dist/img-color-MBEU42DF.cjs +1 -0
- package/dist/img-color-VW3XMATY.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/media-RDQ3WR22.js +1 -0
- package/dist/media-XS6ADFFY.cjs +1 -0
- package/dist/motion-BIOKXRRD.js +1 -0
- package/dist/motion-XN5OMPI3.cjs +1 -0
- package/dist/nav-type-MFJJDDPZ.cjs +1 -0
- package/dist/nav-type-S4MHMDHS.js +1 -0
- package/dist/network-BHUTXTX7.js +1 -0
- package/dist/network-DPAAEK2S.cjs +1 -0
- package/dist/online-KTMCBCXT.cjs +1 -0
- package/dist/online-MGYZDLCQ.js +1 -0
- package/dist/orientation-7UDEAKUV.cjs +1 -0
- package/dist/orientation-WJTK5VKX.js +1 -0
- package/dist/page-focused-3WLSZDV4.cjs +1 -0
- package/dist/page-focused-LBKD6QXG.js +1 -0
- package/dist/page-visible-27YKTHKU.js +1 -0
- package/dist/page-visible-6PMX575B.cjs +1 -0
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.d.cts +13 -2
- package/dist/plugins.d.ts +13 -2
- package/dist/plugins.js +1 -1
- package/dist/pointer-3O7MGTQD.js +1 -0
- package/dist/pointer-DJSMZGSV.cjs +1 -0
- package/dist/pointer-local-6JKSOJZV.cjs +1 -0
- package/dist/pointer-local-X5TVNEEJ.js +1 -0
- package/dist/scroll-velocity-3LOHC3FK.js +1 -0
- package/dist/scroll-velocity-FBORAQ7L.cjs +1 -0
- package/dist/select-EU62RW5T.js +1 -0
- package/dist/select-VOFG6POI.cjs +1 -0
- package/dist/{types-BYVnuPvd.d.cts → types-CudiAlDE.d.cts} +21 -1
- package/dist/{types-BYVnuPvd.d.ts → types-CudiAlDE.d.ts} +21 -1
- package/dist/video-color-B37Z5OBY.cjs +1 -0
- package/dist/video-color-ZMRKDZFO.js +1 -0
- package/dist/visual-viewport-GNJTAHPT.js +1 -0
- package/dist/visual-viewport-MKUHWUQT.cjs +1 -0
- package/llms.txt +13 -9
- package/package.json +1 -1
- package/dist/auto.global.js +0 -1
- package/dist/chunk-6DXNWAGS.js +0 -1
package/dist/head.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunk7L35N3N3_cjs=require('./chunk-7L35N3N3.cjs');function s(){let i=chunk7L35N3N3_cjs.a.root,e=(r,n)=>i.style.setProperty(chunk7L35N3N3_cjs.a.constPrefix+r,String(n)),t=document.createElement("div");t.style.cssText="position:absolute;top:-9999px;width:100px;height:100px;overflow:scroll;visibility:hidden",(document.body??i).appendChild(t),e("scrollbar-w",t.offsetWidth-t.clientWidth),t.style.scrollbarWidth="thin",e("scrollbar-thin-w",t.offsetWidth-t.clientWidth),t.remove(),e("dpr",window.devicePixelRatio||1),e("cores",navigator.hardwareConcurrency||0),e("mem",navigator.deviceMemory||0);}typeof document<"u"&&s();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk6FIY4G6K_cjs=require('./chunk-6FIY4G6K.cjs');require('./chunk-HHINWX7L.cjs');Object.defineProperty(exports,"img",{enumerable:true,get:function(){return chunk6FIY4G6K_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as img}from'./chunk-KMPRPVIO.js';import'./chunk-LTJ2VKVY.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkFKBHTKZH_cjs=require('./chunk-FKBHTKZH.cjs');require('./chunk-A6JDSQWH.cjs'),require('./chunk-HHINWX7L.cjs'),require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"imgColor",{enumerable:true,get:function(){return chunkFKBHTKZH_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as imgColor}from'./chunk-A7GWTDM7.js';import'./chunk-A2ETARW3.js';import'./chunk-LTJ2VKVY.js';import'./chunk-T4N6AEOZ.js';
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunk2LAVIUIS_cjs=require('./chunk-2LAVIUIS.cjs');require('./chunk-HHINWX7L.cjs');var chunkEOPF4ZLZ_cjs=require('./chunk-EOPF4ZLZ.cjs');require('./chunk-65MXZJBD.cjs'),require('./chunk-7L35N3N3.cjs'),require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"configure",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.d}});Object.defineProperty(exports,"isRegistered",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.c}});Object.defineProperty(exports,"propsFor",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.e}});Object.defineProperty(exports,"register",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.a}});Object.defineProperty(exports,"reset",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.g}});Object.defineProperty(exports,"unbind",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.f}});Object.defineProperty(exports,"unregister",{enumerable:true,get:function(){return chunk2LAVIUIS_cjs.b}});Object.defineProperty(exports,"pause",{enumerable:true,get:function(){return chunkEOPF4ZLZ_cjs.d}});Object.defineProperty(exports,"resume",{enumerable:true,get:function(){return chunkEOPF4ZLZ_cjs.e}});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { a as Config, D as Disposer, S as Source } from './types-
|
|
2
|
-
export { C as Cadence, P as PropSpec, b as SourceContext } from './types-
|
|
1
|
+
import { a as Config, D as Disposer, S as Source } from './types-CudiAlDE.cjs';
|
|
2
|
+
export { C as Cadence, P as PropSpec, b as SourceContext } from './types-CudiAlDE.cjs';
|
|
3
3
|
|
|
4
4
|
/** Freeze the loop: no sampling, no flushing, until `resume()`. Idempotent. */
|
|
5
5
|
declare function pause(): void;
|
|
6
6
|
/** Unfreeze the loop and pick up sampling / queued writes again. Idempotent. */
|
|
7
7
|
declare function resume(): void;
|
|
8
8
|
|
|
9
|
-
type CoreKey = 'viewport' | '
|
|
9
|
+
type CoreKey = 'viewport' | 'size' | 'visibility' | 'range';
|
|
10
10
|
/** Built-in keys autocomplete; any registered/plugin key (a string) is allowed. */
|
|
11
11
|
type SourceKey = CoreKey | (string & {});
|
|
12
12
|
/** Register a custom or plugin source so it can be used by key. */
|
|
13
13
|
declare function register(source: Source): void;
|
|
14
14
|
/** Remove a previously registered source key. */
|
|
15
15
|
declare function unregister(key: string): void;
|
|
16
|
+
/** Whether a source key is currently registered (core or added via `register`). */
|
|
17
|
+
declare function isRegistered(key: string): boolean;
|
|
16
18
|
/** Override prefixes or the global root target. Call before attaching sources. */
|
|
17
19
|
declare function configure(opts: Partial<Config>): void;
|
|
18
20
|
/**
|
|
@@ -34,4 +36,4 @@ declare function unbind(target: HTMLElement, keys?: string[]): void;
|
|
|
34
36
|
* and listeners they used). Useful for SPA route changes, HMR, and tests. */
|
|
35
37
|
declare function reset(): void;
|
|
36
38
|
|
|
37
|
-
export { Config, Disposer, Source, type SourceKey, configure, pause, propsFor, register, reset, resume, unbind, unregister };
|
|
39
|
+
export { Config, Disposer, Source, type SourceKey, configure, isRegistered, pause, propsFor, register, reset, resume, unbind, unregister };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { a as Config, D as Disposer, S as Source } from './types-
|
|
2
|
-
export { C as Cadence, P as PropSpec, b as SourceContext } from './types-
|
|
1
|
+
import { a as Config, D as Disposer, S as Source } from './types-CudiAlDE.js';
|
|
2
|
+
export { C as Cadence, P as PropSpec, b as SourceContext } from './types-CudiAlDE.js';
|
|
3
3
|
|
|
4
4
|
/** Freeze the loop: no sampling, no flushing, until `resume()`. Idempotent. */
|
|
5
5
|
declare function pause(): void;
|
|
6
6
|
/** Unfreeze the loop and pick up sampling / queued writes again. Idempotent. */
|
|
7
7
|
declare function resume(): void;
|
|
8
8
|
|
|
9
|
-
type CoreKey = 'viewport' | '
|
|
9
|
+
type CoreKey = 'viewport' | 'size' | 'visibility' | 'range';
|
|
10
10
|
/** Built-in keys autocomplete; any registered/plugin key (a string) is allowed. */
|
|
11
11
|
type SourceKey = CoreKey | (string & {});
|
|
12
12
|
/** Register a custom or plugin source so it can be used by key. */
|
|
13
13
|
declare function register(source: Source): void;
|
|
14
14
|
/** Remove a previously registered source key. */
|
|
15
15
|
declare function unregister(key: string): void;
|
|
16
|
+
/** Whether a source key is currently registered (core or added via `register`). */
|
|
17
|
+
declare function isRegistered(key: string): boolean;
|
|
16
18
|
/** Override prefixes or the global root target. Call before attaching sources. */
|
|
17
19
|
declare function configure(opts: Partial<Config>): void;
|
|
18
20
|
/**
|
|
@@ -34,4 +36,4 @@ declare function unbind(target: HTMLElement, keys?: string[]): void;
|
|
|
34
36
|
* and listeners they used). Useful for SPA route changes, HMR, and tests. */
|
|
35
37
|
declare function reset(): void;
|
|
36
38
|
|
|
37
|
-
export { Config, Disposer, Source, type SourceKey, configure, pause, propsFor, register, reset, resume, unbind, unregister };
|
|
39
|
+
export { Config, Disposer, Source, type SourceKey, configure, isRegistered, pause, propsFor, register, reset, resume, unbind, unregister };
|
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var PropForThat=(function(exports){'use strict';var
|
|
1
|
+
var PropForThat=(function(exports){'use strict';var c={livePrefix:"--live-",constPrefix:"--const-",root:typeof document<"u"?document.documentElement:void 0,typed:false};var L=new Set,R=null,u=0,C=false,d=false,D=0,M=()=>typeof requestAnimationFrame=="function";function k(e){if(u=0,d)return;let t=c.liveHz;if(M()&&t&&t>0&&e-D<1e3/t){u=requestAnimationFrame(k);return}if(D=e,C=true,L.size)for(let n of [...L])n(e);R?.(),C=false,L.size&&M()&&T();}function T(){u||C||d||(M()?u=requestAnimationFrame(k):k(0));}function I(){T();}function P(e){R=e;}function O(){d||(d=true,u&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(u),u=0);}function A(){d&&(d=false,T());}typeof document<"u"&&typeof document.addEventListener=="function"&&document.addEventListener("visibilitychange",()=>{document.hidden?O():A();});var l;function J(){if(l!==void 0||(l=null,typeof document>"u"||typeof CSSStyleSheet!="function"||!("adoptedStyleSheets"in document)))return l;try{let e=new CSSStyleSheet;e.replaceSync(":root{}"),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e],l=e.cssRules[0].style;}catch{l=null;}return l}function S(e){if(typeof document<"u"&&e===document.documentElement){let t=J();if(t)return t}return e.style}var H=class{pending=new Map;last=new WeakMap;set(t,n,o){let r=this.pending.get(t);if(r?.has(n)){r.set(n,o);return}this.last.get(t)?.get(n)!==o&&(r?r.set(n,o):this.pending.set(t,new Map([[n,o]])),I());}forget(t,n){this.last.get(t)?.delete(n),this.pending.get(t)?.delete(n);}flush=()=>{if(this.pending.size!==0){for(let[t,n]of this.pending){let o=this.last.get(t);o||this.last.set(t,o=new Map);let r=S(t);for(let[i,s]of n)o.get(i)!==s&&(r.setProperty(i,s),o.set(i,s));}this.pending.clear();}}},v=new H;P(v.flush);var h,y=new WeakMap,W=new WeakMap;function q(e,t){h||(h=new ResizeObserver(r=>{for(let i of r){W.set(i.target,i);let s=y.get(i.target);if(s)for(let f of [...s])f(i);}}));let n=y.get(e);n||(y.set(e,n=new Set),h.observe(e)),n.add(t);let o=W.get(e);return o&&t(o),()=>{let r=y.get(e);r&&(r.delete(t),r.size===0&&(y.delete(e),h.unobserve(e)));}}var w,g=new WeakMap,K=new WeakMap,Q=[0,.98,.99,.995,.999,1];function b(e,t){w||(w=new IntersectionObserver(r=>{for(let i of r){K.set(i.target,i);let s=g.get(i.target);if(s)for(let f of [...s])f(i);}},{threshold:Q}));let n=g.get(e);n||(g.set(e,n=new Set),w.observe(e)),n.add(t);let o=K.get(e);return o&&t(o),()=>{let r=g.get(e);r&&(r.delete(t),r.size===0&&(g.delete(e),w.unobserve(e)));}}var B=new Set;function N(e,t,n){if(B.has(e)||typeof CSS>"u"||typeof CSS.registerProperty!="function")return;B.add(e);let o=t?n?.[t]:void 0,r=t?c.defaults?.[t]:void 0;try{CSS.registerProperty({name:e,syntax:o?.syntax??"<number>",inherits:o?.inherits??!0,initialValue:r!=null?String(r):o?.initial??"0"});}catch{}}var z=new Map;function V(e,t){let n=z.get(e);if(!n){let o=new Set,r=i=>{for(let s of [...o])s(i);};n={handlers:o,dispatch:r},z.set(e,n),window.addEventListener(e,r,{passive:true});}return n.handlers.add(t),()=>{n.handlers.delete(t),n.handlers.size===0&&(window.removeEventListener(e,n.dispatch),z.delete(e));}}var $={key:"viewport",scope:"global",start(e){let t=()=>{e.write("vw",window.innerWidth),e.write("vh",window.innerHeight);};return t(),V("resize",t)}};function a(e){return Math.round(e*1e4)/1e4}var _={key:"size",scope:"element",start(e){return q(e.target,t=>{let n=t.borderBoxSize?.[0],o=n?n.inlineSize:t.contentRect.width,r=n?n.blockSize:t.contentRect.height;e.write("w",a(o)),e.write("h",a(r)),e.write("aspect",r>0?a(o/r):0);})}};var E=1;function X(e){let t=e.rootBounds;if(!t)return e.intersectionRatio>=1;let n=e.boundingClientRect;return n.top>=t.top-E&&n.right<=t.right+E&&n.bottom<=t.bottom+E&&n.left>=t.left-E}var j={key:"visibility",scope:"element",gate:false,start(e){let t=false;return e.write("visible",0),e.write("has-entered",0,"const"),b(e.target,n=>{let o=X(n);e.write("visible",o?1:0),o&&!t&&(t=true,e.write("has-entered",1,"const"));})}};function G(e,t){return e.matches(t)?e:e.querySelector(t)}var U={key:"range",scope:"element",start(e){let t=G(e.target,'input[type="range"], input[type="number"]');if(!t)return ()=>{};let n=()=>{let o=t.min===""?0:Number(t.min),r=t.max===""?100:Number(t.max),i=Number(t.value);e.write("value",i),e.write("value-pct",r>o?a((i-o)/(r-o)):0);};return n(),t.addEventListener("input",n,{passive:true}),()=>t.removeEventListener("input",n)}};var Y={viewport:$,size:_,visibility:j,range:U};var Z=()=>{},p=new Map,x={...Y};function qe(e){x[e.key]=e;}function Be(e){delete x[e];}function Ne(e){return e in x}function Ve(e){Object.assign(c,e);}function ee(e,t,n){return {target:e,config:c,write(o,r,i="live"){let s=(i==="const"?c.constPrefix:c.livePrefix)+o;t.add(s),c.typed&&N(s,o,n),v.set(e,s,String(r));}}}function te(e,t,n){if(!(e.scope==="element"&&e.gate!==false&&n!==c.root&&typeof IntersectionObserver<"u"))return e.start(t);let r=null,i=()=>{if(!r)try{r=e.start(t);}catch(m){console.error(`[prop-for-that] source "${e.key}" failed to start`,m);}},s=()=>{r?.(),r=null;},f=b(n,m=>{m.isIntersecting?i():s();});return ()=>{f(),s();}}function F(e,t,n){let o=n.get(t);if(!o)return;o.dispose();let r=S(e);for(let i of o.written)r.removeProperty(i),v.forget(e,i);n.delete(t);}function ne(e,t){let n=p.get(e);n||p.set(e,n=new Map);let o=[];for(let r of t){if(n.has(r))continue;let i=x[r];if(!i){console.warn(`[prop-for-that] unknown source "${r}"`);continue}let s=new Set,f;try{f=te(i,ee(e,s,i.props),e);}catch(m){console.error(`[prop-for-that] source "${r}" failed to start`,m);continue}n.set(r,{dispose:f,written:s}),o.push(r);}return ()=>{let r=p.get(e);if(r){for(let i of o)F(e,i,r);r.size===0&&p.delete(e);}}}function re(e){return e instanceof Element?[e]:typeof NodeList<"u"&&e instanceof NodeList||typeof HTMLCollection<"u"&&e instanceof HTMLCollection||Array.isArray(e)?Array.from(e).filter(t=>t instanceof Element):[]}function oe(e){return Array.isArray(e)&&(e.length===0||typeof e[0]=="string")}function $e(e,t){let n,o;if(t===void 0&&oe(e)?(n=c.root?[c.root]:[],o=e):(n=re(e),o=t??[]),!n.length||!o.length)return Z;let r=n.map(i=>ne(i,o));return ()=>{for(let i of r)i();}}function _e(e,t){let n=p.get(e);if(n){for(let o of t??[...n.keys()])F(e,o,n);n.size===0&&p.delete(e);}}function je(){for(let[e,t]of p)for(let n of [...t.keys()])F(e,n,t);p.clear();}exports.configure=Ve;exports.isRegistered=Ne;exports.pause=O;exports.propsFor=$e;exports.register=qe;exports.reset=je;exports.resume=A;exports.unbind=_e;exports.unregister=Be;return exports;})({});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{d as configure,c as isRegistered,e as propsFor,a as register,g as reset,f as unbind,b as unregister}from'./chunk-UQW7YOHI.js';import'./chunk-LTJ2VKVY.js';export{d as pause,e as resume}from'./chunk-LF4OE7IL.js';import'./chunk-T4N6AEOZ.js';import'./chunk-LWKH66VY.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as media}from'./chunk-UHGW7AXC.js';import'./chunk-LTJ2VKVY.js';import'./chunk-T4N6AEOZ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk63C3RCO2_cjs=require('./chunk-63C3RCO2.cjs');require('./chunk-HHINWX7L.cjs'),require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"media",{enumerable:true,get:function(){return chunk63C3RCO2_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as motion}from'./chunk-WUGCASE4.js';import'./chunk-T4N6AEOZ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkLULEQHRM_cjs=require('./chunk-LULEQHRM.cjs');require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"motion",{enumerable:true,get:function(){return chunkLULEQHRM_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkMGZTR3X6_cjs=require('./chunk-MGZTR3X6.cjs');Object.defineProperty(exports,"navType",{enumerable:true,get:function(){return chunkMGZTR3X6_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as navType}from'./chunk-H7X35UB4.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as netTypeToNumber,b as network}from'./chunk-JB72QLD6.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkRT47EE2L_cjs=require('./chunk-RT47EE2L.cjs');Object.defineProperty(exports,"netTypeToNumber",{enumerable:true,get:function(){return chunkRT47EE2L_cjs.a}});Object.defineProperty(exports,"network",{enumerable:true,get:function(){return chunkRT47EE2L_cjs.b}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkOVF4XN2H_cjs=require('./chunk-OVF4XN2H.cjs');require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"online",{enumerable:true,get:function(){return chunkOVF4XN2H_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as online}from'./chunk-MDKLN42L.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkMJJCQRTF_cjs=require('./chunk-MJJCQRTF.cjs');require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"orientation",{enumerable:true,get:function(){return chunkMJJCQRTF_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as orientation}from'./chunk-Y7HUY6HR.js';import'./chunk-T4N6AEOZ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkWIPJMLJJ_cjs=require('./chunk-WIPJMLJJ.cjs');require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"pageFocused",{enumerable:true,get:function(){return chunkWIPJMLJJ_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as pageFocused}from'./chunk-HKCTBVQT.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as pageVisible}from'./chunk-SFO6H2DN.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk3MK6Q7DX_cjs=require('./chunk-3MK6Q7DX.cjs');Object.defineProperty(exports,"pageVisible",{enumerable:true,get:function(){return chunk3MK6Q7DX_cjs.a}});
|
package/dist/plugins.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var _={};var k=new Set,T=0,D=false,U=false,Y=0,O=()=>typeof requestAnimationFrame=="function";function z(e){if(T=0,U);let t=_.liveHz;if(O()&&t&&t>0&&e-Y<1e3/t){T=requestAnimationFrame(z);return}if(Y=e,D=true,k.size)for(let r of [...k])r(e);D=false,k.size&&O()&&G();}function G(){T||D||U||(O()?T=requestAnimationFrame(z):z(0));}function C(e){return k.add(e),G(),()=>{k.delete(e);}}var x=new Map;function y(e,t){let r=x.get(e);if(!r){let o=new Set,n=i=>{for(let a of [...o])a(i);};r={handlers:o,dispatch:n},x.set(e,r),window.addEventListener(e,n,{passive:true});}return r.handlers.add(t),()=>{r.handlers.delete(t),r.handlers.size===0&&(window.removeEventListener(e,r.dispatch),x.delete(e));}}var X={key:"viewport",scope:"global",start(e){let t=()=>{e.write("vw",window.innerWidth),e.write("vh",window.innerHeight);};return t(),y("resize",t)}};function s(e){return Math.round(e*1e4)/1e4}var $={key:"pointer",scope:"global",start(e){return y("pointermove",r=>{let o=r;e.write("pointer-x",o.clientX),e.write("pointer-y",o.clientY),e.write("pointer-x-ratio",s(o.clientX/window.innerWidth)),e.write("pointer-y-ratio",s(o.clientY/window.innerHeight));})}};var F,V=new WeakMap;function j(e,t){return F||(F=new ResizeObserver(r=>{for(let o of r)V.get(o.target)?.(o);})),V.set(e,t),F.observe(e),()=>{F.unobserve(e),V.delete(e);}}var H,B=new WeakMap;function Q(e,t){return H||(H=new IntersectionObserver(r=>{for(let o of r)B.get(o.target)?.(o);},{threshold:[0,1]})),B.set(e,t),H.observe(e),()=>{H.unobserve(e),B.delete(e);}}var J={key:"size",scope:"element",start(e){return j(e.target,t=>{let r=t.borderBoxSize?.[0],o=r?r.inlineSize:t.contentRect.width,n=r?r.blockSize:t.contentRect.height;e.write("w",s(o)),e.write("h",s(n)),e.write("aspect",n>0?s(o/n):0);})}};var Z={key:"visibility",scope:"element",start(e){let t=false;return e.write("visible",0),e.write("has-entered",0,"const"),Q(e.target,r=>{let o=r.intersectionRatio>=1;e.write("visible",o?1:0),o&&!t&&(t=true,e.write("has-entered",1,"const"));})}};function v(e,t){return e.matches(t)?e:e.querySelector(t)}var ee={key:"range",scope:"element",start(e){let t=v(e.target,'input[type="range"], input[type="number"]');if(!t)return ()=>{};let r=()=>{let o=t.min===""?0:Number(t.min),n=t.max===""?100:Number(t.max),i=Number(t.value);e.write("value",i),e.write("value-pct",n>o?s((i-o)/(n-o)):0);};return r(),t.addEventListener("input",r,{passive:true}),()=>t.removeEventListener("input",r)}};var te={viewport:X,pointer:$,size:J,visibility:Z,range:ee};var Oe={...te};function re(e){Oe[e.key]=e;}var oe={key:"scroll-velocity",scope:"global",start(e){let t=window.scrollY,r=0,o=null,n=()=>{let c=window.scrollY,l=c-t;t=c,r=l||r*.8,Math.abs(r)<.01&&(r=0);let u=s(r);e.write("scroll-velocity",u),e.write("scroll-direction",Math.sign(u)),u===0&&o&&(o(),o=null);},i=()=>{o||(o=C(n));};e.write("scroll-velocity",0),e.write("scroll-direction",0);let a=y("scroll",i);return ()=>{a(),o?.();}}};var ne={key:"online",scope:"global",start(e){let t=()=>e.write("online",navigator.onLine?1:0);t();let r=y("online",t),o=y("offline",t);return ()=>{r(),o();}}};var ie={key:"page-focused",scope:"global",start(e){let t=()=>e.write("page-focused",document.hasFocus()?1:0);t();let r=y("focus",t),o=y("blur",t);return ()=>{r(),o();}}};var N=new Map;function se(e,t){let r=N.get(e);if(!r){let o=new Set,n=i=>{for(let a of [...o])a(i);};r={handlers:o,dispatch:n},N.set(e,r),document.addEventListener(e,n,{passive:true});}return r.handlers.add(t),()=>{r.handlers.delete(t),r.handlers.size===0&&(document.removeEventListener(e,r.dispatch),N.delete(e));}}var ae={key:"page-visible",scope:"global",start(e){let t=()=>e.write("page-visible",document.visibilityState==="visible"?1:0);return t(),se("visibilitychange",t)}};var ce={key:"nav-type",scope:"global",props:{"nav-type":{syntax:"<custom-ident>",initial:"navigate"}},start(e){let t=performance.getEntriesByType("navigation")[0];return e.write("nav-type",t?.type??"navigate","const"),()=>{}}};function ze(e){switch(e){case "slow-2g":return 1;case "2g":return 2;case "3g":return 3;case "4g":return 4;default:return 0}}var le={key:"network",scope:"global",start(e){let t=navigator.connection;if(!t)return ()=>{};let r=()=>{e.write("net-downlink",t.downlink??0),e.write("net-rtt",t.rtt??0),e.write("net-save-data",t.saveData?1:0),e.write("net-type",ze(t.effectiveType));};return r(),t.addEventListener("change",r),()=>t.removeEventListener("change",r)}};var ue={key:"battery",scope:"global",start(e){let t=navigator.getBattery;if(!t)return ()=>{};let r=false,o,n;return t.call(navigator).then(i=>{r||(o=i,n=()=>{e.write("battery-level",s(i.level)),e.write("battery-charging",i.charging?1:0);},n(),i.addEventListener("levelchange",n),i.addEventListener("chargingchange",n));}),()=>{r=true,o&&n&&(o.removeEventListener("levelchange",n),o.removeEventListener("chargingchange",n));}}};var pe={key:"clock",scope:"global",start(e){let t=0,r=()=>{let o=new Date;e.write("now",Math.floor(o.getTime()/1e3)),e.write("hours",o.getHours()),e.write("minutes",o.getMinutes()),e.write("seconds",o.getSeconds()),t=setTimeout(r,1e3-Date.now()%1e3);};return r(),()=>clearTimeout(t)}};var me={key:"fps",scope:"global",start(e){let t=performance.now(),r=60;return C(o=>{let n=o-t;t=o,!(n<=0)&&(r+=(1e3/n-r)*.1,e.write("fps",Math.round(r)));})}};var de={key:"visual-viewport",scope:"global",start(e){let t=window.visualViewport;if(!t)return ()=>{};let r=()=>{e.write("vvp-scale",s(t.scale)),e.write("vvp-offset-top",s(t.offsetTop)),e.write("vvp-height",s(t.height));};return r(),t.addEventListener("resize",r,{passive:true}),t.addEventListener("scroll",r,{passive:true}),()=>{t.removeEventListener("resize",r),t.removeEventListener("scroll",r);}}};var fe={key:"pointer-local",scope:"element",start(e){let t=e.target;return y("pointermove",o=>{let n=o,i=t.getBoundingClientRect(),a=i.width>0?(n.clientX-i.left)/i.width:0,c=i.height>0?(n.clientY-i.top)/i.height:0,l=a>=0&&a<=1&&c>=0&&c<=1;e.write("local-pointer-x-ratio",s(a)),e.write("local-pointer-y-ratio",s(c)),e.write("local-pointer-inside",l?1:0);})}};var ve={key:"media",scope:"element",start(e){let t=v(e.target,"video, audio");if(!t)return ()=>{};let r=()=>{let n=isFinite(t.duration)?t.duration:0;e.write("current-time",s(t.currentTime)),e.write("duration",s(n)),e.write("progress",n>0?s(t.currentTime/n):0),e.write("paused",t.paused?1:0),e.write("volume",s(t.volume));};r();let o=["timeupdate","loadedmetadata","play","pause","volumechange"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var xe=[["valueMissing","value-missing"],["typeMismatch","type-mismatch"],["patternMismatch","pattern-mismatch"],["tooLong","too-long"],["tooShort","too-short"],["rangeUnderflow","range-underflow"],["rangeOverflow","range-overflow"],["stepMismatch","step-mismatch"],["badInput","bad-input"],["customError","custom-error"]],ge={key:"field",scope:"element",start(e){let t=v(e.target,"input, textarea, select");if(!t)return ()=>{};let r=()=>{let n=t.value.length;e.write("length",n),e.write("empty",n===0?1:0),e.write("valid",t.validity.valid?1:0);for(let[a,c]of xe)e.write(c,t.validity[a]?1:0);let i=t.maxLength;i>=0&&(e.write("remaining",Math.max(0,i-n)),e.write("fill-pct",i>0?s(Math.min(1,n/i)):0));};r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var ye="input:not([type=hidden]):not([type=submit]):not([type=button]):not([type=reset]):not([type=image]), textarea, select",I=e=>e.matches(ye)?[e]:Array.from(e.querySelectorAll(ye));var we=e=>e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")?e.checked?"1":"0":e.value,Ve=e=>{if(e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio"))return e.defaultChecked?"1":"0";if(e instanceof HTMLSelectElement){let t=Array.from(e.options).find(r=>r.defaultSelected);return t?t.value:e.options[0]?.value??""}return e.defaultValue},he={key:"field-state",scope:"element",start(e){let t=I(e.target);if(!t.length)return ()=>{};let r=new Set(t),o=new WeakMap;for(let d of t)o.set(d,we(d));let n=new Set,i=new Set,a=new Set,c=false,l=()=>{let d=n.size>0,f=i.size>0;e.write("dirty",d?1:0),e.write("pristine",d?0:1),e.write("touched",f?1:0),e.write("untouched",f?0:1),e.write("changed",a.size>0?1:0),e.write("submitted",c?1:0);};l();let u=d=>{let f=d.target;r.has(f)&&(n.add(f),we(f)===o.get(f)?a.delete(f):a.add(f),l());},m=d=>{let f=d.target;r.has(f)&&(i.add(f),l());};e.target.addEventListener("input",u,{passive:true}),e.target.addEventListener("change",u,{passive:true}),e.target.addEventListener("focusout",m,{passive:true});let p=e.target instanceof HTMLFormElement?e.target:t[0]?.form,S=()=>{c=true,l();},L=()=>{n.clear(),i.clear(),c=false,a.clear();for(let d of t)Ve(d)!==o.get(d)&&a.add(d);l();};return p?.addEventListener("submit",S,{passive:true}),p?.addEventListener("reset",L,{passive:true}),()=>{e.target.removeEventListener("input",u),e.target.removeEventListener("change",u),e.target.removeEventListener("focusout",m),p?.removeEventListener("submit",S),p?.removeEventListener("reset",L);}}};var be={key:"form-state",scope:"element",start(e){let t=I(e.target);if(!t.length)return ()=>{};let r=()=>{let a=0,c=0,l=0,u=0;for(let m of t){if(!m.willValidate)continue;a++;let p=m.validity.valid;p&&c++,m.required&&(l++,p&&u++);}e.write("field-count",a),e.write("valid-count",c),e.write("invalid-count",a-c),e.write("all-valid",a===c?1:0),e.write("completion",l?s(u/l):1);};r(),e.target.addEventListener("input",r,{passive:true}),e.target.addEventListener("change",r,{passive:true});let o=false,n=e.target instanceof HTMLFormElement?e.target:t[0]?.form,i=()=>{requestAnimationFrame(()=>{o||r();});};return n?.addEventListener("reset",i,{passive:true}),()=>{o=true,e.target.removeEventListener("input",r),e.target.removeEventListener("change",r),n?.removeEventListener("reset",i);}}};var Ee={key:"select",scope:"element",start(e){let t=v(e.target,"select");if(!t)return ()=>{};let r=()=>{let n=t.options.length,i=t.selectedIndex,a=t.selectedOptions.length;e.write("index",i),e.write("option-count",n),e.write("index-pct",i>=0&&n>1?s(i/(n-1)):0),e.write("selected-count",a),e.write("selected-pct",n>0?s(a/n):0);let c=Number(t.value);t.value.trim()!==""&&Number.isFinite(c)&&e.write("value-num",c);};r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var b=({r:e,g:t,b:r})=>`#${(16777216|e<<16|t<<8|r).toString(16).slice(1)}`,w={syntax:"<color>",initial:"transparent"},Se=(e,t,r)=>(.2126*e+.7152*t+.0722*r)/255,Be=(e,t,r)=>{let o=Math.max(e,t,r)/255,n=Math.min(e,t,r)/255,i=o-n;return i===0?0:Math.min(1,i/(1-Math.abs(o+n-1)))};function Ne(e){let t=new Map,r=0,o=0,n=0,i=0;for(let a=0;a<e.length;a+=4){if(e[a+3]<128)continue;let c=e[a],l=e[a+1],u=e[a+2];r++,o+=c,n+=l,i+=u;let m=c>>4<<8|l>>4<<4|u>>4,p=t.get(m);p?(p.r+=c,p.g+=l,p.b+=u,p.n++):t.set(m,{r:c,g:l,b:u,n:1});}return {buckets:t,count:r,sumR:o,sumG:n,sumB:i}}var We=e=>{let t=Math.round(e.r/e.n),r=Math.round(e.g/e.n),o=Math.round(e.b/e.n);return {r:t,g:r,b:o,l:Se(t,r,o)}},qe=.04,Ke=.96,_e=.15;function R(e){let{buckets:t,count:r,sumR:o,sumG:n,sumB:i}=Ne(e);if(!r)return null;let a=0;for(let E of t.values())E.n>a&&(a=E.n);let c=null,l=0,u=null,m=-1/0,p=null,S=1/0,L=null,d=-1/0;for(let E of t.values()){let g=We(E);E.n>l&&(l=E.n,c=g);let q=Be(g.r,g.g,g.b);if(q>=_e){let Ae=1-Math.abs(g.l-.5)*2,K=3*q+1.5*Math.max(0,Ae)+E.n/a;K>m&&(m=K,u=g);}g.l>=qe&&g.l<S&&(S=g.l,p=g),g.l<=Ke&&g.l>d&&(d=g.l,L=g);}let f=Math.round(o/r),W=Math.round(n/r),A=Math.round(i/r),Pe={r:f,g:W,b:A,l:Se(f,W,A)},M=c;return {dominant:M,accent:u??M,dark:p??M,light:L??M,average:Pe,temp:(f-A)/255}}var h=16,Ye=()=>{if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(h,h);if(typeof document>"u")return null;let e=document.createElement("canvas");return e.width=e.height=h,e};function P(){let t=Ye()?.getContext("2d",{willReadFrequently:true});return t?r=>{t.drawImage(r,0,0,h,h);try{return t.getImageData(0,0,h,h).data}catch{return null}}:null}var Le={key:"color-input",scope:"element",props:{color:w},start(e){let t=v(e.target,'input[type="color"]');if(!t)return ()=>{};let r=()=>e.write("color",t.value);r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var ke={key:"orientation",scope:"global",start(e){if(typeof DeviceOrientationEvent>"u")return ()=>{};let t=r=>{e.write("orient-alpha",s(r.alpha??0)),e.write("orient-beta",s(r.beta??0)),e.write("orient-gamma",s(r.gamma??0));};return window.addEventListener("deviceorientation",t,{passive:true}),()=>window.removeEventListener("deviceorientation",t)}};var Me={key:"motion",scope:"global",start(e){if(typeof DeviceMotionEvent>"u")return ()=>{};let t=r=>{let o=r.accelerationIncludingGravity;e.write("accel-x",s(o?.x??0)),e.write("accel-y",s(o?.y??0)),e.write("accel-z",s(o?.z??0));};return window.addEventListener("devicemotion",t,{passive:true}),()=>window.removeEventListener("devicemotion",t)}};var Te={key:"geo",scope:"global",start(e){let t=navigator.geolocation;if(!t)return ()=>{};let r=false,o=t.watchPosition(n=>{r||(e.write("geo-lat",s(n.coords.latitude)),e.write("geo-lng",s(n.coords.longitude)),e.write("geo-accuracy",s(n.coords.accuracy)));});return ()=>{r=true,t.clearWatch(o);}}};var Ue={nominal:0,fair:1,serious:2,critical:3},Ce={key:"cpu-pressure",scope:"global",start(e){let t=globalThis.PressureObserver;if(!t)return ()=>{};e.write("cpu-pressure",0);let r;try{r=new t(o=>{let n=o[o.length-1];n&&e.write("cpu-pressure",Ue[n.state]??0);}),r.observe("cpu",{sampleInterval:1e3}).catch(()=>{});}catch{r=void 0;}return ()=>r?.disconnect()}};var Fe={key:"img",scope:"element",start(e){let t=v(e.target,"img");if(!t)return ()=>{};let r=()=>t.getAttribute("src")!==null||t.getAttribute("srcset")!==null,o=t.complete&&t.naturalWidth===0&&r(),n=()=>{e.write("natural-w",t.naturalWidth),e.write("natural-h",t.naturalHeight),e.write("loaded",t.complete&&t.naturalWidth>0?1:0),e.write("broken",o?1:0);},i=()=>{o=false,n();},a=()=>{o=true,n();};return n(),t.addEventListener("load",i,{passive:true}),t.addEventListener("error",a,{passive:true}),()=>{t.removeEventListener("load",i),t.removeEventListener("error",a);}}};async function Ge(e){let t=P();if(!t)return null;let r=e,o;if(typeof createImageBitmap=="function")try{o=await createImageBitmap(e,{resizeWidth:h,resizeHeight:h,resizeQuality:"low"}),r=o;}catch{}let n=t(r);return o?.close(),n}var He={key:"img-color",scope:"element",props:{img:w,"img-accent":w,"img-dark":w,"img-light":w,"img-avg":w,"img-temp":{syntax:"<number>",initial:"0"}},start(e){let t=v(e.target,"img");if(!t)return ()=>{};let r=false,o=async()=>{if(!t.complete||t.naturalWidth===0)return;let n=await Ge(t).catch(()=>null);if(r||!n)return;let i=R(n);i&&(e.write("img",b(i.dominant)),e.write("img-accent",b(i.accent)),e.write("img-dark",b(i.dark)),e.write("img-light",b(i.light)),e.write("img-avg",b(i.average)),e.write("img-temp",s(i.temp)));};return o(),t.addEventListener("load",o,{passive:true}),()=>{r=true,t.removeEventListener("load",o);}}};var Ie=250,Xe=2,Re={key:"video-color",scope:"element",props:{video:w,"video-accent":w},start(e){let t=v(e.target,"video");if(!t)return ()=>{};let r=P();if(!r)return ()=>{};let o=false,n=-1/0,i=u=>{if(u-n<Ie||t.readyState<Xe)return;let m=r(t);if(!m)return;let p=R(m);p&&(n=u,e.write("video",b(p.dominant)),e.write("video-accent",b(p.accent)));};i(0);let a=t.requestVideoFrameCallback?.bind(t);if(a){let u=a(function m(p){o||(i(p),u=a(m));});return ()=>{o=true,t.cancelVideoFrameCallback?.(u);}}let c=0,l=()=>i(c+=Ie);return t.addEventListener("timeupdate",l,{passive:true}),t.addEventListener("loadeddata",l,{passive:true}),()=>{o=true,t.removeEventListener("timeupdate",l),t.removeEventListener("loadeddata",l);}}};var $e=[oe,ne,ie,ae,ce,le,ue,pe,me,de,fe,ve,ge,he,be,Ee,Le,ke,Me,Te,Ce,Fe,He,Re];function Zr(...e){for(let t of e.length?e:$e)re(t);}exports.allPlugins=$e;exports.battery=ue;exports.clock=pe;exports.colorInput=Le;exports.cpuPressure=Ce;exports.field=ge;exports.fieldState=he;exports.formState=be;exports.fps=me;exports.geo=Te;exports.img=Fe;exports.imgColor=He;exports.media=ve;exports.motion=Me;exports.navType=ce;exports.network=le;exports.online=ne;exports.orientation=ke;exports.pageFocused=ie;exports.pageVisible=ae;exports.pointerLocal=fe;exports.registerPlugins=Zr;exports.scrollVelocity=oe;exports.select=Ee;exports.videoColor=Re;exports.visualViewport=de;
|
|
1
|
+
'use strict';var chunkUALPUR2L_cjs=require('./chunk-UALPUR2L.cjs'),chunk2H5YFW6O_cjs=require('./chunk-2H5YFW6O.cjs'),chunk6FIY4G6K_cjs=require('./chunk-6FIY4G6K.cjs'),chunkFKBHTKZH_cjs=require('./chunk-FKBHTKZH.cjs'),chunkHYVT6V4Z_cjs=require('./chunk-HYVT6V4Z.cjs'),chunk63C3RCO2_cjs=require('./chunk-63C3RCO2.cjs'),chunkYXQTZ7WB_cjs=require('./chunk-YXQTZ7WB.cjs'),chunkCGNMHQYQ_cjs=require('./chunk-CGNMHQYQ.cjs'),chunkCQQV55KU_cjs=require('./chunk-CQQV55KU.cjs');require('./chunk-L4SCOKPV.cjs');var chunkBH7EQDLL_cjs=require('./chunk-BH7EQDLL.cjs'),chunkX5SADKXG_cjs=require('./chunk-X5SADKXG.cjs');require('./chunk-A6JDSQWH.cjs');var chunkMJJCQRTF_cjs=require('./chunk-MJJCQRTF.cjs'),chunkLULEQHRM_cjs=require('./chunk-LULEQHRM.cjs'),chunkMGZTR3X6_cjs=require('./chunk-MGZTR3X6.cjs'),chunkRT47EE2L_cjs=require('./chunk-RT47EE2L.cjs'),chunk7CDVAP3H_cjs=require('./chunk-7CDVAP3H.cjs'),chunk6LTQ7ISE_cjs=require('./chunk-6LTQ7ISE.cjs'),chunkSBF6XS5A_cjs=require('./chunk-SBF6XS5A.cjs'),chunkXQOUJEVE_cjs=require('./chunk-XQOUJEVE.cjs'),chunk3W7CXUWN_cjs=require('./chunk-3W7CXUWN.cjs'),chunkSYKMPPTY_cjs=require('./chunk-SYKMPPTY.cjs'),chunk2LAVIUIS_cjs=require('./chunk-2LAVIUIS.cjs');require('./chunk-HHINWX7L.cjs');var chunkS2QXIZB2_cjs=require('./chunk-S2QXIZB2.cjs');require('./chunk-EOPF4ZLZ.cjs'),require('./chunk-65MXZJBD.cjs'),require('./chunk-7L35N3N3.cjs');var chunkOVF4XN2H_cjs=require('./chunk-OVF4XN2H.cjs'),chunkWIPJMLJJ_cjs=require('./chunk-WIPJMLJJ.cjs');require('./chunk-QHHF5SEL.cjs');var chunk3MK6Q7DX_cjs=require('./chunk-3MK6Q7DX.cjs');var I=[chunkS2QXIZB2_cjs.a,chunkOVF4XN2H_cjs.a,chunkWIPJMLJJ_cjs.a,chunk3MK6Q7DX_cjs.a,chunkMGZTR3X6_cjs.a,chunkRT47EE2L_cjs.b,chunk7CDVAP3H_cjs.a,chunk6LTQ7ISE_cjs.a,chunkSBF6XS5A_cjs.a,chunkXQOUJEVE_cjs.a,chunk3W7CXUWN_cjs.a,chunkSYKMPPTY_cjs.a,chunk63C3RCO2_cjs.a,chunkYXQTZ7WB_cjs.a,chunkCGNMHQYQ_cjs.a,chunkCQQV55KU_cjs.a,chunkBH7EQDLL_cjs.a,chunkX5SADKXG_cjs.a,chunkMJJCQRTF_cjs.a,chunkLULEQHRM_cjs.a,chunkUALPUR2L_cjs.a,chunk2H5YFW6O_cjs.a,chunk6FIY4G6K_cjs.a,chunkFKBHTKZH_cjs.a,chunkHYVT6V4Z_cjs.a];function ro(...o){for(let F of o.length?o:I)chunk2LAVIUIS_cjs.a(F);}Object.defineProperty(exports,"geo",{enumerable:true,get:function(){return chunkUALPUR2L_cjs.a}});Object.defineProperty(exports,"cpuPressure",{enumerable:true,get:function(){return chunk2H5YFW6O_cjs.a}});Object.defineProperty(exports,"img",{enumerable:true,get:function(){return chunk6FIY4G6K_cjs.a}});Object.defineProperty(exports,"imgColor",{enumerable:true,get:function(){return chunkFKBHTKZH_cjs.a}});Object.defineProperty(exports,"videoColor",{enumerable:true,get:function(){return chunkHYVT6V4Z_cjs.a}});Object.defineProperty(exports,"media",{enumerable:true,get:function(){return chunk63C3RCO2_cjs.a}});Object.defineProperty(exports,"field",{enumerable:true,get:function(){return chunkYXQTZ7WB_cjs.a}});Object.defineProperty(exports,"fieldState",{enumerable:true,get:function(){return chunkCGNMHQYQ_cjs.a}});Object.defineProperty(exports,"formState",{enumerable:true,get:function(){return chunkCQQV55KU_cjs.a}});Object.defineProperty(exports,"select",{enumerable:true,get:function(){return chunkBH7EQDLL_cjs.a}});Object.defineProperty(exports,"colorInput",{enumerable:true,get:function(){return chunkX5SADKXG_cjs.a}});Object.defineProperty(exports,"orientation",{enumerable:true,get:function(){return chunkMJJCQRTF_cjs.a}});Object.defineProperty(exports,"motion",{enumerable:true,get:function(){return chunkLULEQHRM_cjs.a}});Object.defineProperty(exports,"navType",{enumerable:true,get:function(){return chunkMGZTR3X6_cjs.a}});Object.defineProperty(exports,"network",{enumerable:true,get:function(){return chunkRT47EE2L_cjs.b}});Object.defineProperty(exports,"battery",{enumerable:true,get:function(){return chunk7CDVAP3H_cjs.a}});Object.defineProperty(exports,"clock",{enumerable:true,get:function(){return chunk6LTQ7ISE_cjs.a}});Object.defineProperty(exports,"fps",{enumerable:true,get:function(){return chunkSBF6XS5A_cjs.a}});Object.defineProperty(exports,"visualViewport",{enumerable:true,get:function(){return chunkXQOUJEVE_cjs.a}});Object.defineProperty(exports,"pointer",{enumerable:true,get:function(){return chunk3W7CXUWN_cjs.a}});Object.defineProperty(exports,"pointerLocal",{enumerable:true,get:function(){return chunkSYKMPPTY_cjs.a}});Object.defineProperty(exports,"scrollVelocity",{enumerable:true,get:function(){return chunkS2QXIZB2_cjs.a}});Object.defineProperty(exports,"online",{enumerable:true,get:function(){return chunkOVF4XN2H_cjs.a}});Object.defineProperty(exports,"pageFocused",{enumerable:true,get:function(){return chunkWIPJMLJJ_cjs.a}});Object.defineProperty(exports,"pageVisible",{enumerable:true,get:function(){return chunk3MK6Q7DX_cjs.a}});exports.allPlugins=I;exports.registerPlugins=ro;
|
package/dist/plugins.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as Source } from './types-
|
|
1
|
+
import { S as Source } from './types-CudiAlDE.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* `--live-scroll-velocity` (signed px/frame, decays toward 0 when idle),
|
|
@@ -84,6 +84,17 @@ declare const fps: Source;
|
|
|
84
84
|
*/
|
|
85
85
|
declare const visualViewport: Source;
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* `--live-pointer-x/y` (px) and `--live-pointer-x/y-ratio` (0–1 across viewport),
|
|
89
|
+
* written to `:root`.
|
|
90
|
+
*
|
|
91
|
+
* High-frequency (a write per `pointermove`), so it's an opt-in plugin rather
|
|
92
|
+
* than a core source: import it from `prop-for-that/plugins`, or — under `auto`
|
|
93
|
+
* — request it declaratively (`<html data-props-for="pointer">`) and it's
|
|
94
|
+
* loaded on demand.
|
|
95
|
+
*/
|
|
96
|
+
declare const pointer: Source;
|
|
97
|
+
|
|
87
98
|
/**
|
|
88
99
|
* `--live-local-pointer-x-ratio`, `--live-local-pointer-y-ratio` (0–1 within the
|
|
89
100
|
* element's box), `--live-local-pointer-inside` (0/1).
|
|
@@ -325,4 +336,4 @@ declare const allPlugins: Source[];
|
|
|
325
336
|
*/
|
|
326
337
|
declare function registerPlugins(...sources: Source[]): void;
|
|
327
338
|
|
|
328
|
-
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, media, motion, navType, network, online, orientation, pageFocused, pageVisible, pointerLocal, registerPlugins, scrollVelocity, select, videoColor, visualViewport };
|
|
339
|
+
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, media, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, videoColor, visualViewport };
|
package/dist/plugins.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as Source } from './types-
|
|
1
|
+
import { S as Source } from './types-CudiAlDE.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* `--live-scroll-velocity` (signed px/frame, decays toward 0 when idle),
|
|
@@ -84,6 +84,17 @@ declare const fps: Source;
|
|
|
84
84
|
*/
|
|
85
85
|
declare const visualViewport: Source;
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* `--live-pointer-x/y` (px) and `--live-pointer-x/y-ratio` (0–1 across viewport),
|
|
89
|
+
* written to `:root`.
|
|
90
|
+
*
|
|
91
|
+
* High-frequency (a write per `pointermove`), so it's an opt-in plugin rather
|
|
92
|
+
* than a core source: import it from `prop-for-that/plugins`, or — under `auto`
|
|
93
|
+
* — request it declaratively (`<html data-props-for="pointer">`) and it's
|
|
94
|
+
* loaded on demand.
|
|
95
|
+
*/
|
|
96
|
+
declare const pointer: Source;
|
|
97
|
+
|
|
87
98
|
/**
|
|
88
99
|
* `--live-local-pointer-x-ratio`, `--live-local-pointer-y-ratio` (0–1 within the
|
|
89
100
|
* element's box), `--live-local-pointer-inside` (0/1).
|
|
@@ -325,4 +336,4 @@ declare const allPlugins: Source[];
|
|
|
325
336
|
*/
|
|
326
337
|
declare function registerPlugins(...sources: Source[]): void;
|
|
327
338
|
|
|
328
|
-
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, media, motion, navType, network, online, orientation, pageFocused, pageVisible, pointerLocal, registerPlugins, scrollVelocity, select, videoColor, visualViewport };
|
|
339
|
+
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, media, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, videoColor, visualViewport };
|
package/dist/plugins.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {d,a,e,f,g}from'./chunk-6DXNWAGS.js';import'./chunk-LWKH66VY.js';var V={key:"scroll-velocity",scope:"global",start(e$1){let t=window.scrollY,r=0,o=null,n=()=>{let c=window.scrollY,l=c-t;t=c,r=l||r*.8,Math.abs(r)<.01&&(r=0);let u=e(r);e$1.write("scroll-velocity",u),e$1.write("scroll-direction",Math.sign(u)),u===0&&o&&(o(),o=null);},i=()=>{o||(o=a(n));};e$1.write("scroll-velocity",0),e$1.write("scroll-direction",0);let s=d("scroll",i);return ()=>{s(),o?.();}}};var D={key:"online",scope:"global",start(e){let t=()=>e.write("online",navigator.onLine?1:0);t();let r=d("online",t),o=d("offline",t);return ()=>{r(),o();}}};var B={key:"page-focused",scope:"global",start(e){let t=()=>e.write("page-focused",document.hasFocus()?1:0);t();let r=d("focus",t),o=d("blur",t);return ()=>{r(),o();}}};var P=new Map;function N(e,t){let r=P.get(e);if(!r){let o=new Set,n=i=>{for(let s of [...o])s(i);};r={handlers:o,dispatch:n},P.set(e,r),document.addEventListener(e,n,{passive:true});}return r.handlers.add(t),()=>{r.handlers.delete(t),r.handlers.size===0&&(document.removeEventListener(e,r.dispatch),P.delete(e));}}var z={key:"page-visible",scope:"global",start(e){let t=()=>e.write("page-visible",document.visibilityState==="visible"?1:0);return t(),N("visibilitychange",t)}};var W={key:"nav-type",scope:"global",props:{"nav-type":{syntax:"<custom-ident>",initial:"navigate"}},start(e){let t=performance.getEntriesByType("navigation")[0];return e.write("nav-type",t?.type??"navigate","const"),()=>{}}};function pe(e){switch(e){case "slow-2g":return 1;case "2g":return 2;case "3g":return 3;case "4g":return 4;default:return 0}}var q={key:"network",scope:"global",start(e){let t=navigator.connection;if(!t)return ()=>{};let r=()=>{e.write("net-downlink",t.downlink??0),e.write("net-rtt",t.rtt??0),e.write("net-save-data",t.saveData?1:0),e.write("net-type",pe(t.effectiveType));};return r(),t.addEventListener("change",r),()=>t.removeEventListener("change",r)}};var _={key:"battery",scope:"global",start(e$1){let t=navigator.getBattery;if(!t)return ()=>{};let r=false,o,n;return t.call(navigator).then(i=>{r||(o=i,n=()=>{e$1.write("battery-level",e(i.level)),e$1.write("battery-charging",i.charging?1:0);},n(),i.addEventListener("levelchange",n),i.addEventListener("chargingchange",n));}),()=>{r=true,o&&n&&(o.removeEventListener("levelchange",n),o.removeEventListener("chargingchange",n));}}};var U={key:"clock",scope:"global",start(e){let t=0,r=()=>{let o=new Date;e.write("now",Math.floor(o.getTime()/1e3)),e.write("hours",o.getHours()),e.write("minutes",o.getMinutes()),e.write("seconds",o.getSeconds()),t=setTimeout(r,1e3-Date.now()%1e3);};return r(),()=>clearTimeout(t)}};var Y={key:"fps",scope:"global",start(e){let t=performance.now(),r=60;return a(o=>{let n=o-t;t=o,!(n<=0)&&(r+=(1e3/n-r)*.1,e.write("fps",Math.round(r)));})}};var G={key:"visual-viewport",scope:"global",start(e$1){let t=window.visualViewport;if(!t)return ()=>{};let r=()=>{e$1.write("vvp-scale",e(t.scale)),e$1.write("vvp-offset-top",e(t.offsetTop)),e$1.write("vvp-height",e(t.height));};return r(),t.addEventListener("resize",r,{passive:true}),t.addEventListener("scroll",r,{passive:true}),()=>{t.removeEventListener("resize",r),t.removeEventListener("scroll",r);}}};var K={key:"pointer-local",scope:"element",start(e$1){let t=e$1.target;return d("pointermove",o=>{let n=o,i=t.getBoundingClientRect(),s=i.width>0?(n.clientX-i.left)/i.width:0,c=i.height>0?(n.clientY-i.top)/i.height:0,l=s>=0&&s<=1&&c>=0&&c<=1;e$1.write("local-pointer-x-ratio",e(s)),e$1.write("local-pointer-y-ratio",e(c)),e$1.write("local-pointer-inside",l?1:0);})}};var Q={key:"media",scope:"element",start(e$1){let t=f(e$1.target,"video, audio");if(!t)return ()=>{};let r=()=>{let n=isFinite(t.duration)?t.duration:0;e$1.write("current-time",e(t.currentTime)),e$1.write("duration",e(n)),e$1.write("progress",n>0?e(t.currentTime/n):0),e$1.write("paused",t.paused?1:0),e$1.write("volume",e(t.volume));};r();let o=["timeupdate","loadedmetadata","play","pause","volumechange"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var de=[["valueMissing","value-missing"],["typeMismatch","type-mismatch"],["patternMismatch","pattern-mismatch"],["tooLong","too-long"],["tooShort","too-short"],["rangeUnderflow","range-underflow"],["rangeOverflow","range-overflow"],["stepMismatch","step-mismatch"],["badInput","bad-input"],["customError","custom-error"]],X={key:"field",scope:"element",start(e$1){let t=f(e$1.target,"input, textarea, select");if(!t)return ()=>{};let r=()=>{let n=t.value.length;e$1.write("length",n),e$1.write("empty",n===0?1:0),e$1.write("valid",t.validity.valid?1:0);for(let[s,c]of de)e$1.write(c,t.validity[s]?1:0);let i=t.maxLength;i>=0&&(e$1.write("remaining",Math.max(0,i-n)),e$1.write("fill-pct",i>0?e(Math.min(1,n/i)):0));};r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var $="input:not([type=hidden]):not([type=submit]):not([type=button]):not([type=reset]):not([type=image]), textarea, select",T=e=>e.matches($)?[e]:Array.from(e.querySelectorAll($));var j=e=>e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")?e.checked?"1":"0":e.value,fe=e=>{if(e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio"))return e.defaultChecked?"1":"0";if(e instanceof HTMLSelectElement){let t=Array.from(e.options).find(r=>r.defaultSelected);return t?t.value:e.options[0]?.value??""}return e.defaultValue},J={key:"field-state",scope:"element",start(e){let t=T(e.target);if(!t.length)return ()=>{};let r=new Set(t),o=new WeakMap;for(let d of t)o.set(d,j(d));let n=new Set,i=new Set,s=new Set,c=false,l=()=>{let d=n.size>0,f=i.size>0;e.write("dirty",d?1:0),e.write("pristine",d?0:1),e.write("touched",f?1:0),e.write("untouched",f?0:1),e.write("changed",s.size>0?1:0),e.write("submitted",c?1:0);};l();let u=d=>{let f=d.target;r.has(f)&&(n.add(f),j(f)===o.get(f)?s.delete(f):s.add(f),l());},p=d=>{let f=d.target;r.has(f)&&(i.add(f),l());};e.target.addEventListener("input",u,{passive:true}),e.target.addEventListener("change",u,{passive:true}),e.target.addEventListener("focusout",p,{passive:true});let m=e.target instanceof HTMLFormElement?e.target:t[0]?.form,S=()=>{c=true,l();},L=()=>{n.clear(),i.clear(),c=false,s.clear();for(let d of t)fe(d)!==o.get(d)&&s.add(d);l();};return m?.addEventListener("submit",S,{passive:true}),m?.addEventListener("reset",L,{passive:true}),()=>{e.target.removeEventListener("input",u),e.target.removeEventListener("change",u),e.target.removeEventListener("focusout",p),m?.removeEventListener("submit",S),m?.removeEventListener("reset",L);}}};var Z={key:"form-state",scope:"element",start(e$1){let t=T(e$1.target);if(!t.length)return ()=>{};let r=()=>{let s=0,c=0,l=0,u=0;for(let p of t){if(!p.willValidate)continue;s++;let m=p.validity.valid;m&&c++,p.required&&(l++,m&&u++);}e$1.write("field-count",s),e$1.write("valid-count",c),e$1.write("invalid-count",s-c),e$1.write("all-valid",s===c?1:0),e$1.write("completion",l?e(u/l):1);};r(),e$1.target.addEventListener("input",r,{passive:true}),e$1.target.addEventListener("change",r,{passive:true});let o=false,n=e$1.target instanceof HTMLFormElement?e$1.target:t[0]?.form,i=()=>{requestAnimationFrame(()=>{o||r();});};return n?.addEventListener("reset",i,{passive:true}),()=>{o=true,e$1.target.removeEventListener("input",r),e$1.target.removeEventListener("change",r),n?.removeEventListener("reset",i);}}};var x={key:"select",scope:"element",start(e$1){let t=f(e$1.target,"select");if(!t)return ()=>{};let r=()=>{let n=t.options.length,i=t.selectedIndex,s=t.selectedOptions.length;e$1.write("index",i),e$1.write("option-count",n),e$1.write("index-pct",i>=0&&n>1?e(i/(n-1)):0),e$1.write("selected-count",s),e$1.write("selected-pct",n>0?e(s/n):0);let c=Number(t.value);t.value.trim()!==""&&Number.isFinite(c)&&e$1.write("value-num",c);};r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var E=({r:e,g:t,b:r})=>`#${(16777216|e<<16|t<<8|r).toString(16).slice(1)}`,y={syntax:"<color>",initial:"transparent"},ee=(e,t,r)=>(.2126*e+.7152*t+.0722*r)/255,ve=(e,t,r)=>{let o=Math.max(e,t,r)/255,n=Math.min(e,t,r)/255,i=o-n;return i===0?0:Math.min(1,i/(1-Math.abs(o+n-1)))};function ge(e){let t=new Map,r=0,o=0,n=0,i=0;for(let s=0;s<e.length;s+=4){if(e[s+3]<128)continue;let c=e[s],l=e[s+1],u=e[s+2];r++,o+=c,n+=l,i+=u;let p=c>>4<<8|l>>4<<4|u>>4,m=t.get(p);m?(m.r+=c,m.g+=l,m.b+=u,m.n++):t.set(p,{r:c,g:l,b:u,n:1});}return {buckets:t,count:r,sumR:o,sumG:n,sumB:i}}var ye=e=>{let t=Math.round(e.r/e.n),r=Math.round(e.g/e.n),o=Math.round(e.b/e.n);return {r:t,g:r,b:o,l:ee(t,r,o)}},we=.04,he=.96,Ee=.15;function I(e){let{buckets:t,count:r,sumR:o,sumG:n,sumB:i}=ge(e);if(!r)return null;let s=0;for(let b of t.values())b.n>s&&(s=b.n);let c=null,l=0,u=null,p=-1/0,m=null,S=1/0,L=null,d=-1/0;for(let b of t.values()){let v=ye(b);b.n>l&&(l=b.n,c=v);let R=ve(v.r,v.g,v.b);if(R>=Ee){let me=1-Math.abs(v.l-.5)*2,A=3*R+1.5*Math.max(0,me)+b.n/s;A>p&&(p=A,u=v);}v.l>=we&&v.l<S&&(S=v.l,m=v),v.l<=he&&v.l>d&&(d=v.l,L=v);}let f=Math.round(o/r),H=Math.round(n/r),F=Math.round(i/r),ue={r:f,g:H,b:F,l:ee(f,H,F)},k=c;return {dominant:k,accent:u??k,dark:m??k,light:L??k,average:ue,temp:(f-F)/255}}var h=16,be=()=>{if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(h,h);if(typeof document>"u")return null;let e=document.createElement("canvas");return e.width=e.height=h,e};function C(){let t=be()?.getContext("2d",{willReadFrequently:true});return t?r=>{t.drawImage(r,0,0,h,h);try{return t.getImageData(0,0,h,h).data}catch{return null}}:null}var te={key:"color-input",scope:"element",props:{color:y},start(e){let t=f(e.target,'input[type="color"]');if(!t)return ()=>{};let r=()=>e.write("color",t.value);r();let o=["input","change"];for(let n of o)t.addEventListener(n,r,{passive:true});return ()=>{for(let n of o)t.removeEventListener(n,r);}}};var re={key:"orientation",scope:"global",start(e$1){if(typeof DeviceOrientationEvent>"u")return ()=>{};let t=r=>{e$1.write("orient-alpha",e(r.alpha??0)),e$1.write("orient-beta",e(r.beta??0)),e$1.write("orient-gamma",e(r.gamma??0));};return window.addEventListener("deviceorientation",t,{passive:true}),()=>window.removeEventListener("deviceorientation",t)}};var oe={key:"motion",scope:"global",start(e$1){if(typeof DeviceMotionEvent>"u")return ()=>{};let t=r=>{let o=r.accelerationIncludingGravity;e$1.write("accel-x",e(o?.x??0)),e$1.write("accel-y",e(o?.y??0)),e$1.write("accel-z",e(o?.z??0));};return window.addEventListener("devicemotion",t,{passive:true}),()=>window.removeEventListener("devicemotion",t)}};var ne={key:"geo",scope:"global",start(e$1){let t=navigator.geolocation;if(!t)return ()=>{};let r=false,o=t.watchPosition(n=>{r||(e$1.write("geo-lat",e(n.coords.latitude)),e$1.write("geo-lng",e(n.coords.longitude)),e$1.write("geo-accuracy",e(n.coords.accuracy)));});return ()=>{r=true,t.clearWatch(o);}}};var Se={nominal:0,fair:1,serious:2,critical:3},ie={key:"cpu-pressure",scope:"global",start(e){let t=globalThis.PressureObserver;if(!t)return ()=>{};e.write("cpu-pressure",0);let r;try{r=new t(o=>{let n=o[o.length-1];n&&e.write("cpu-pressure",Se[n.state]??0);}),r.observe("cpu",{sampleInterval:1e3}).catch(()=>{});}catch{r=void 0;}return ()=>r?.disconnect()}};var se={key:"img",scope:"element",start(e){let t=f(e.target,"img");if(!t)return ()=>{};let r=()=>t.getAttribute("src")!==null||t.getAttribute("srcset")!==null,o=t.complete&&t.naturalWidth===0&&r(),n=()=>{e.write("natural-w",t.naturalWidth),e.write("natural-h",t.naturalHeight),e.write("loaded",t.complete&&t.naturalWidth>0?1:0),e.write("broken",o?1:0);},i=()=>{o=false,n();},s=()=>{o=true,n();};return n(),t.addEventListener("load",i,{passive:true}),t.addEventListener("error",s,{passive:true}),()=>{t.removeEventListener("load",i),t.removeEventListener("error",s);}}};async function Le(e){let t=C();if(!t)return null;let r=e,o;if(typeof createImageBitmap=="function")try{o=await createImageBitmap(e,{resizeWidth:h,resizeHeight:h,resizeQuality:"low"}),r=o;}catch{}let n=t(r);return o?.close(),n}var ae={key:"img-color",scope:"element",props:{img:y,"img-accent":y,"img-dark":y,"img-light":y,"img-avg":y,"img-temp":{syntax:"<number>",initial:"0"}},start(e$1){let t=f(e$1.target,"img");if(!t)return ()=>{};let r=false,o=async()=>{if(!t.complete||t.naturalWidth===0)return;let n=await Le(t).catch(()=>null);if(r||!n)return;let i=I(n);i&&(e$1.write("img",E(i.dominant)),e$1.write("img-accent",E(i.accent)),e$1.write("img-dark",E(i.dark)),e$1.write("img-light",E(i.light)),e$1.write("img-avg",E(i.average)),e$1.write("img-temp",e(i.temp)));};return o(),t.addEventListener("load",o,{passive:true}),()=>{r=true,t.removeEventListener("load",o);}}};var ce=250,ke=2,le={key:"video-color",scope:"element",props:{video:y,"video-accent":y},start(e){let t=f(e.target,"video");if(!t)return ()=>{};let r=C();if(!r)return ()=>{};let o=false,n=-1/0,i=u=>{if(u-n<ce||t.readyState<ke)return;let p=r(t);if(!p)return;let m=I(p);m&&(n=u,e.write("video",E(m.dominant)),e.write("video-accent",E(m.accent)));};i(0);let s=t.requestVideoFrameCallback?.bind(t);if(s){let u=s(function p(m){o||(i(m),u=s(p));});return ()=>{o=true,t.cancelVideoFrameCallback?.(u);}}let c=0,l=()=>i(c+=ce);return t.addEventListener("timeupdate",l,{passive:true}),t.addEventListener("loadeddata",l,{passive:true}),()=>{o=true,t.removeEventListener("timeupdate",l),t.removeEventListener("loadeddata",l);}}};var Me=[V,D,B,z,W,q,_,U,Y,G,K,Q,X,J,Z,x,te,re,oe,ne,ie,se,ae,le];function tr(...e){for(let t of e.length?e:Me)g(t);}export{Me as allPlugins,_ as battery,U as clock,te as colorInput,ie as cpuPressure,X as field,J as fieldState,Z as formState,Y as fps,ne as geo,se as img,ae as imgColor,Q as media,oe as motion,W as navType,q as network,D as online,re as orientation,B as pageFocused,z as pageVisible,K as pointerLocal,tr as registerPlugins,V as scrollVelocity,x as select,le as videoColor,G as visualViewport};
|
|
1
|
+
import {a as a$j}from'./chunk-FOHEZJHF.js';export{a as geo}from'./chunk-FOHEZJHF.js';import {a as a$k}from'./chunk-5JZBLUQK.js';export{a as cpuPressure}from'./chunk-5JZBLUQK.js';import {a as a$l}from'./chunk-KMPRPVIO.js';export{a as img}from'./chunk-KMPRPVIO.js';import {a as a$m}from'./chunk-A7GWTDM7.js';export{a as imgColor}from'./chunk-A7GWTDM7.js';import {a as a$n}from'./chunk-ZQTU5EW7.js';export{a as videoColor}from'./chunk-ZQTU5EW7.js';import {a as a$b}from'./chunk-UHGW7AXC.js';export{a as media}from'./chunk-UHGW7AXC.js';import {a as a$c}from'./chunk-2C7ZUOOR.js';export{a as field}from'./chunk-2C7ZUOOR.js';import {a as a$d}from'./chunk-YXEERKSK.js';export{a as fieldState}from'./chunk-YXEERKSK.js';import {a as a$e}from'./chunk-SRQQTNRZ.js';export{a as formState}from'./chunk-SRQQTNRZ.js';import'./chunk-QIUPJ6MF.js';import {a as a$f}from'./chunk-IJDX3MYP.js';export{a as select}from'./chunk-IJDX3MYP.js';import {a as a$g}from'./chunk-QRIZE6VL.js';export{a as colorInput}from'./chunk-QRIZE6VL.js';import'./chunk-A2ETARW3.js';import {a as a$h}from'./chunk-Y7HUY6HR.js';export{a as orientation}from'./chunk-Y7HUY6HR.js';import {a as a$i}from'./chunk-WUGCASE4.js';export{a as motion}from'./chunk-WUGCASE4.js';import {a as a$4}from'./chunk-H7X35UB4.js';export{a as navType}from'./chunk-H7X35UB4.js';import {b}from'./chunk-JB72QLD6.js';export{b as network}from'./chunk-JB72QLD6.js';import {a as a$5}from'./chunk-DQJQEWPS.js';export{a as battery}from'./chunk-DQJQEWPS.js';import {a as a$6}from'./chunk-7U544OAJ.js';export{a as clock}from'./chunk-7U544OAJ.js';import {a as a$7}from'./chunk-IKOVFAJO.js';export{a as fps}from'./chunk-IKOVFAJO.js';import {a as a$8}from'./chunk-F5H2O3AR.js';export{a as visualViewport}from'./chunk-F5H2O3AR.js';import {a as a$9}from'./chunk-KAK6WZS7.js';export{a as pointer}from'./chunk-KAK6WZS7.js';import {a as a$a}from'./chunk-2E2JQAHI.js';export{a as pointerLocal}from'./chunk-2E2JQAHI.js';import {a as a$o}from'./chunk-UQW7YOHI.js';import'./chunk-LTJ2VKVY.js';import {a}from'./chunk-RI7ZNKJ4.js';export{a as scrollVelocity}from'./chunk-RI7ZNKJ4.js';import'./chunk-LF4OE7IL.js';import'./chunk-T4N6AEOZ.js';import'./chunk-LWKH66VY.js';import {a as a$1}from'./chunk-MDKLN42L.js';export{a as online}from'./chunk-MDKLN42L.js';import {a as a$2}from'./chunk-HKCTBVQT.js';export{a as pageFocused}from'./chunk-HKCTBVQT.js';import'./chunk-EEMKKLRF.js';import {a as a$3}from'./chunk-SFO6H2DN.js';export{a as pageVisible}from'./chunk-SFO6H2DN.js';var I=[a,a$1,a$2,a$3,a$4,b,a$5,a$6,a$7,a$8,a$9,a$a,a$b,a$c,a$d,a$e,a$f,a$g,a$h,a$i,a$j,a$k,a$l,a$m,a$n];function ro(...o){for(let F of o.length?o:I)a$o(F);}export{I as allPlugins,ro as registerPlugins};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as pointer}from'./chunk-KAK6WZS7.js';import'./chunk-T4N6AEOZ.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk3W7CXUWN_cjs=require('./chunk-3W7CXUWN.cjs');require('./chunk-65MXZJBD.cjs'),require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"pointer",{enumerable:true,get:function(){return chunk3W7CXUWN_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkSYKMPPTY_cjs=require('./chunk-SYKMPPTY.cjs');require('./chunk-65MXZJBD.cjs'),require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"pointerLocal",{enumerable:true,get:function(){return chunkSYKMPPTY_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as pointerLocal}from'./chunk-2E2JQAHI.js';import'./chunk-T4N6AEOZ.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as scrollVelocity}from'./chunk-RI7ZNKJ4.js';import'./chunk-LF4OE7IL.js';import'./chunk-T4N6AEOZ.js';import'./chunk-LWKH66VY.js';import'./chunk-EEMKKLRF.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkS2QXIZB2_cjs=require('./chunk-S2QXIZB2.cjs');require('./chunk-EOPF4ZLZ.cjs'),require('./chunk-65MXZJBD.cjs'),require('./chunk-7L35N3N3.cjs'),require('./chunk-QHHF5SEL.cjs');Object.defineProperty(exports,"scrollVelocity",{enumerable:true,get:function(){return chunkS2QXIZB2_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as select}from'./chunk-IJDX3MYP.js';import'./chunk-LTJ2VKVY.js';import'./chunk-T4N6AEOZ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkBH7EQDLL_cjs=require('./chunk-BH7EQDLL.cjs');require('./chunk-HHINWX7L.cjs'),require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"select",{enumerable:true,get:function(){return chunkBH7EQDLL_cjs.a}});
|
|
@@ -57,7 +57,27 @@ interface Source {
|
|
|
57
57
|
scope: Scope;
|
|
58
58
|
/** Optional `@property` typings per local name, applied when `typed` is on. */
|
|
59
59
|
props?: Record<string, PropSpec>;
|
|
60
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Viewport-visibility gating for element-scoped sources. When a binding's
|
|
62
|
+
* target is outside the viewport the binding layer stops the source's work
|
|
63
|
+
* (listeners/observers/timers) and freezes its last-written values, resuming
|
|
64
|
+
* on re-entry — so nothing is computed for elements the user can't see.
|
|
65
|
+
*
|
|
66
|
+
* Defaults to `true` for `scope: 'element'`. Set `false` to opt out — used by
|
|
67
|
+
* `visibility`, which must keep observing to *report* visibility. Global
|
|
68
|
+
* sources (and bindings on `:root`) are never gated.
|
|
69
|
+
*/
|
|
70
|
+
gate?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Attach listeners/observers, seed initial values, return a disposer.
|
|
73
|
+
*
|
|
74
|
+
* For gated `element` sources this is **re-invoked on every viewport re-entry**
|
|
75
|
+
* (and the disposer on every exit), so it must be cheap and idempotent, and it
|
|
76
|
+
* must seed current values every time — a source that only attaches listeners
|
|
77
|
+
* without seeding will show stale (frozen) values after each off-screen→on-screen
|
|
78
|
+
* cycle. If `start` does expensive work (canvas sampling, decoding, large
|
|
79
|
+
* allocation), memoize it or set `gate: false` and pause internally.
|
|
80
|
+
*/
|
|
61
81
|
start(ctx: SourceContext): Disposer;
|
|
62
82
|
}
|
|
63
83
|
|
|
@@ -57,7 +57,27 @@ interface Source {
|
|
|
57
57
|
scope: Scope;
|
|
58
58
|
/** Optional `@property` typings per local name, applied when `typed` is on. */
|
|
59
59
|
props?: Record<string, PropSpec>;
|
|
60
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Viewport-visibility gating for element-scoped sources. When a binding's
|
|
62
|
+
* target is outside the viewport the binding layer stops the source's work
|
|
63
|
+
* (listeners/observers/timers) and freezes its last-written values, resuming
|
|
64
|
+
* on re-entry — so nothing is computed for elements the user can't see.
|
|
65
|
+
*
|
|
66
|
+
* Defaults to `true` for `scope: 'element'`. Set `false` to opt out — used by
|
|
67
|
+
* `visibility`, which must keep observing to *report* visibility. Global
|
|
68
|
+
* sources (and bindings on `:root`) are never gated.
|
|
69
|
+
*/
|
|
70
|
+
gate?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Attach listeners/observers, seed initial values, return a disposer.
|
|
73
|
+
*
|
|
74
|
+
* For gated `element` sources this is **re-invoked on every viewport re-entry**
|
|
75
|
+
* (and the disposer on every exit), so it must be cheap and idempotent, and it
|
|
76
|
+
* must seed current values every time — a source that only attaches listeners
|
|
77
|
+
* without seeding will show stale (frozen) values after each off-screen→on-screen
|
|
78
|
+
* cycle. If `start` does expensive work (canvas sampling, decoding, large
|
|
79
|
+
* allocation), memoize it or set `gate: false` and pause internally.
|
|
80
|
+
*/
|
|
61
81
|
start(ctx: SourceContext): Disposer;
|
|
62
82
|
}
|
|
63
83
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkHYVT6V4Z_cjs=require('./chunk-HYVT6V4Z.cjs');require('./chunk-A6JDSQWH.cjs'),require('./chunk-HHINWX7L.cjs');Object.defineProperty(exports,"videoColor",{enumerable:true,get:function(){return chunkHYVT6V4Z_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as videoColor}from'./chunk-ZQTU5EW7.js';import'./chunk-A2ETARW3.js';import'./chunk-LTJ2VKVY.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as visualViewport}from'./chunk-F5H2O3AR.js';import'./chunk-T4N6AEOZ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkXQOUJEVE_cjs=require('./chunk-XQOUJEVE.cjs');require('./chunk-65MXZJBD.cjs');Object.defineProperty(exports,"visualViewport",{enumerable:true,get:function(){return chunkXQOUJEVE_cjs.a}});
|
package/llms.txt
CHANGED
|
@@ -13,7 +13,7 @@ when a value actually changed. Zero runtime dependencies, tree-shakeable, TypeSc
|
|
|
13
13
|
## Entry points
|
|
14
14
|
|
|
15
15
|
- `prop-for-that`: the core API (`configure`, `register`, `unregister`, `propsFor`, `unbind`, `reset`).
|
|
16
|
-
- `prop-for-that/auto`: side-effecting
|
|
16
|
+
- `prop-for-that/auto`: side-effecting and fully declarative. Attaches **nothing** by default — it scans the DOM for `[data-props-for="key1 key2"]` and binds exactly those sources (globals included, declared on `<html data-props-for="viewport pointer">` → writes to `:root`), watching the DOM with a `MutationObserver`. Plugin sources are **loaded on demand**: the first time a key needs one, its chunk is dynamically imported and registered, then the binding attaches (no `registerPlugins()`, no separate plugins import). Because it lazy-loads via dynamic `import()`, use it as a module — `<script type="module" src=".../auto.js">` (a classic CDN drop-in `auto.global.js` no longer exists). If the root `<html>` has the boolean attribute `data-props-typed`, it calls `configure({ typed: true })` first (markup equivalent; read once on load; global, no per-key subset). Two limits: it only sees the **light DOM** (a `MutationObserver` doesn't cross shadow roots, so `data-props-for` inside a web component's shadow root is never auto-bound — bind those imperatively with `propsFor(el, [...])`); and on-demand plugin chunks resolve only on CDNs that serve the `dist` tree verbatim (unpkg / jsDelivr file paths), not rewriting/bundling CDNs (esm.sh, `?module`, jsDelivr `+esm`).
|
|
17
17
|
- `prop-for-that/head`: side-effecting. Synchronously writes FOUC-safe constants before first paint. Inline it in `<head>`.
|
|
18
18
|
- `prop-for-that/plugins`: opt-in plugin sources, plus `registerPlugins` and `allPlugins`.
|
|
19
19
|
|
|
@@ -36,11 +36,12 @@ npm i prop-for-that
|
|
|
36
36
|
## API
|
|
37
37
|
|
|
38
38
|
```ts
|
|
39
|
-
import { configure, register, unregister, propsFor, unbind, reset, pause, resume } from 'prop-for-that'
|
|
39
|
+
import { configure, register, unregister, isRegistered, propsFor, unbind, reset, pause, resume } from 'prop-for-that'
|
|
40
40
|
|
|
41
41
|
configure(opts: Partial<Config>): void // call once, before any propsFor()
|
|
42
42
|
register(source: Source): void // add a custom/plugin source by key
|
|
43
43
|
unregister(key: SourceKey): void // remove a source from the registry
|
|
44
|
+
isRegistered(key: SourceKey): boolean // whether a source key is currently registered
|
|
44
45
|
propsFor(keys: string[]): Disposer // global: attach sources to config.root (:root)
|
|
45
46
|
propsFor(target: Element | NodeList | Element[], keys: string[]): Disposer // per element(s)
|
|
46
47
|
unbind(target: HTMLElement, keys?: string[]): void // detach some/all
|
|
@@ -59,6 +60,7 @@ interface Config { livePrefix: string; constPrefix: string; root: HTMLElement; t
|
|
|
59
60
|
interface Source {
|
|
60
61
|
key: SourceKey
|
|
61
62
|
scope: 'global' | 'element'
|
|
63
|
+
gate?: boolean // element sources are viewport-gated by default; set false to opt out
|
|
62
64
|
start(ctx: SourceContext): Disposer
|
|
63
65
|
}
|
|
64
66
|
interface SourceContext {
|
|
@@ -90,7 +92,6 @@ prefix; constants use `--const-`. Values are unitless numbers unless noted.
|
|
|
90
92
|
| key | scope | properties |
|
|
91
93
|
| --- | --- | --- |
|
|
92
94
|
| `viewport` | global | `--live-vw`, `--live-vh` |
|
|
93
|
-
| `pointer` | global | `--live-pointer-x`, `--live-pointer-y`, `--live-pointer-x-ratio` (0–1), `--live-pointer-y-ratio` (0–1) |
|
|
94
95
|
| `size` | element | `--live-w`, `--live-h`, `--live-aspect` (w/h) |
|
|
95
96
|
| `visibility` | element | `--live-visible` (1/0, whole element in viewport), `--const-has-entered` (1/0, latches once entirely in viewport, never resets) |
|
|
96
97
|
| `range` | element | `--live-value`, `--live-value-pct` (0–1). Bind the `<input>` or a container holding one. |
|
|
@@ -111,6 +112,7 @@ Import name is camelCase; the key for `propsFor`/`data-props-for` is the dashed
|
|
|
111
112
|
|
|
112
113
|
| import | key | scope | properties |
|
|
113
114
|
| --- | --- | --- | --- |
|
|
115
|
+
| `pointer` | `pointer` | global | `--live-pointer-x`, `--live-pointer-y`, `--live-pointer-x-ratio` (0–1), `--live-pointer-y-ratio` (0–1). High-frequency (writes per `pointermove`), so opt-in rather than core. |
|
|
114
116
|
| `scrollVelocity` | `scroll-velocity` | global | `--live-scroll-velocity` (signed px/frame), `--live-scroll-direction` (1/-1/0) |
|
|
115
117
|
| `online` | `online` | global | `--live-online` (1/0) |
|
|
116
118
|
| `pageFocused` | `page-focused` | global | `--live-page-focused` (1/0 — tab frontmost and window focused; `0` when switched away) |
|
|
@@ -150,17 +152,18 @@ Imperative:
|
|
|
150
152
|
|
|
151
153
|
```js
|
|
152
154
|
import { propsFor } from 'prop-for-that'
|
|
153
|
-
propsFor(['
|
|
155
|
+
propsFor(['viewport']) // core global → :root
|
|
154
156
|
propsFor(el, ['size', 'visibility']) // writes element vars to el
|
|
155
157
|
```
|
|
156
158
|
|
|
157
|
-
A plugin:
|
|
159
|
+
A plugin (pointer is one now — register before use; `auto` does this for you):
|
|
158
160
|
|
|
159
161
|
```js
|
|
160
162
|
import { register, propsFor } from 'prop-for-that'
|
|
161
|
-
import { battery } from 'prop-for-that/plugins'
|
|
162
|
-
register(
|
|
163
|
-
propsFor(['
|
|
163
|
+
import { pointer, battery } from 'prop-for-that/plugins'
|
|
164
|
+
register(pointer)
|
|
165
|
+
propsFor(['pointer']) // writes pointer vars to :root
|
|
166
|
+
register(battery); propsFor(['battery'])
|
|
164
167
|
```
|
|
165
168
|
|
|
166
169
|
Container-bound range (so siblings can read the value):
|
|
@@ -193,7 +196,8 @@ Discrete reaction with a style query:
|
|
|
193
196
|
- **Typed properties are opt-in.** `configure({ typed: true })` (before attaching) registers each written `--live-*` with `@property` so it interpolates (consumers add `transition`/`@keyframes`) and resolves to `0` before a value arrives. With the `auto` entry, `<html data-props-typed>` is the markup equivalent (boolean, read once on load; typing is global per `@property` name, so no per-key subset). It is a one-way door (no unregister), uses `inherits: true`, is feature-detected, and skips names already registered. Sources can declare per-property `props: { name: { syntax, initial, inherits } }` (default `<number>` / `0` / inherited); consumers can set initials with `configure({ typed: true, defaults: { 'pointer-x-ratio': 0.5 } })` (keyed by local name).
|
|
194
197
|
- **Permission-gated plugins** (`orientation`, `motion`, `geo`) and unsupported APIs feature-detect and no-op; registering them is always safe. On iOS some need a user-gesture permission grant before values arrive. `cpuPressure` is Chromium-only and needs a secure context + the `compute-pressure` Permissions Policy; it seeds `--live-cpu-pressure: 0` where supported, writes nothing where not.
|
|
195
198
|
- **Global writes land in an adopted stylesheet, not `<html>` inline style.** Root `--live-*` go into one constructable, adopted `:root {}` rule (element-scoped writes stay inline; the `head` entry still writes `--const-*` inline for first paint). Keeps the DevTools Styles panel usable under per-frame churn; `var()`/`calc()` consumption is identical (still inherits). Reading `documentElement.style` directly won't show them — read computed style. Falls back to inline where constructable stylesheets are unsupported.
|
|
196
|
-
- **
|
|
199
|
+
- **Element sources pause off screen.** Under both the imperative API and `auto`, an `element`-scoped source runs only while its element intersects the viewport (via the shared `IntersectionObserver`); off screen its work (listeners/observers/timers) is torn down and its last-written values freeze in place, resuming + re-seeding on re-entry. `global` sources and `:root` bindings are never gated. Opt a source out with `gate: false` (as `visibility` does, since it must keep observing to *report* visibility).
|
|
200
|
+
- **Freeze or throttle the loop.** The whole loop also freezes automatically while the tab is hidden (`document.hidden`). `pause()` / `resume()` stop and restart sampling+flushing (values hold steady; bindings stay attached). `configure({ liveHz: 30 })` caps the rate to reduce mutations/recalc, throttling samplers (`fps`, `scroll-velocity`) too.
|
|
197
201
|
|
|
198
202
|
## Links
|
|
199
203
|
|