prop-for-that 0.7.7 → 0.7.8
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 +19 -0
- package/README.md +2 -2
- package/dist/auto.cjs +1 -1
- package/dist/auto.js +1 -1
- package/dist/chunk-3QHCKCTX.cjs +1 -0
- package/dist/chunk-5VXDAWUI.js +1 -0
- package/dist/chunk-EXPE3C6O.js +2 -0
- package/dist/chunk-KSKAQMWJ.cjs +2 -0
- package/dist/head.cjs +1 -1
- package/dist/head.global.js +2 -1
- package/dist/head.js +1 -1
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.d.cts +31 -1
- package/dist/plugins.d.ts +31 -1
- package/dist/plugins.js +1 -1
- package/dist/ua-3MLUBLSV.cjs +1 -0
- package/dist/ua-3RC4SBYB.js +1 -0
- package/llms.txt +6 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,25 @@ backwards-compatible change (semver's `1.0.0`+ rules kick in at v1).
|
|
|
8
8
|
Only the published library (`dist/`) is versioned here; the demo and docs site
|
|
9
9
|
are repo-only and not part of the npm package.
|
|
10
10
|
|
|
11
|
+
## [0.7.8]
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **`ua` plugin** (global) + **`head` constants** — low-entropy device & browser
|
|
15
|
+
identity JS can read but CSS can't, written **once** as `--const-ua-*`:
|
|
16
|
+
`--const-ua-platform` (`macos` / `windows` / `linux` / `android` / `ios` /
|
|
17
|
+
`chromeos` / `unknown`), `--const-ua-browser` (`chrome` / `edge` / `firefox` /
|
|
18
|
+
`safari` / `opera` / `samsung` / `unknown`), `--const-ua-engine` (`blink` /
|
|
19
|
+
`gecko` / `webkit` / `unknown`), `--const-ua-version` (browser major, `0` if
|
|
20
|
+
unknown), `--const-ua-mobile` (`1` / `0`). Branch on the client with no JS or
|
|
21
|
+
media query — `@container style(--const-ua-engine: webkit) { … }`. Prefers
|
|
22
|
+
structured UA Client Hints (`navigator.userAgentData`, Chromium) and falls back
|
|
23
|
+
to a best-effort `userAgent`-string sniff on Firefox / Safari. **Low-entropy
|
|
24
|
+
only** — no `getHighEntropyValues`, device model, full version, or architecture,
|
|
25
|
+
so it adds no fingerprinting surface beyond what request headers already expose.
|
|
26
|
+
The same five constants are also written **synchronously** by the `head` entry
|
|
27
|
+
(`import 'prop-for-that/head'`) for FOUC-safe, pre-paint branching. Typed mode
|
|
28
|
+
registers the strings as `<custom-ident>` and the numbers as `<integer>`.
|
|
29
|
+
|
|
11
30
|
## [0.7.7]
|
|
12
31
|
|
|
13
32
|
### Added
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ Bind any element with `data-props-for="key …"` and read its `--live-*` propert
|
|
|
52
52
|
|
|
53
53
|
**Core** (built in): viewport, element size, visibility, and `<input type="range">` values.
|
|
54
54
|
|
|
55
|
-
**Plugins** (opt-in): pointer position, battery, network, online status, page focus & visibility, navigation type, page meta tags, FPS, clock, scroll velocity, device orientation / motion, geolocation, CPU pressure, soft-keyboard geometry, media playback, form & field state, select & color-picker values, text-truncation (ellipsis) detection, and dominant + accent colors extracted from images and video — 20+ in all.
|
|
55
|
+
**Plugins** (opt-in): pointer position, battery, network, online status, page focus & visibility, navigation type, page meta tags, low-entropy user-agent (OS / browser / engine / version / mobile), FPS, clock, scroll velocity, device orientation / motion, geolocation, CPU pressure, soft-keyboard geometry, media playback, form & field state, select & color-picker values, text-truncation (ellipsis) detection, and dominant + accent colors extracted from images and video — 20+ in all.
|
|
56
56
|
|
|
57
57
|
→ Every source, every property, and live demos are in the **[docs](https://prop-for-that.netlify.app/docsite/reference/plugins/)**.
|
|
58
58
|
|
|
@@ -62,7 +62,7 @@ Bind any element with `data-props-for="key …"` and read its `--live-*` propert
|
|
|
62
62
|
| --- | --- |
|
|
63
63
|
| `prop-for-that/auto` | Zero-config & declarative: binds every `data-props-for` element — globals included, via `<html data-props-for="…">` — loading plugin sources on demand, kept in sync with the DOM. Use as `<script type="module">`. |
|
|
64
64
|
| `prop-for-that` | Imperative API — `propsFor()`, `register()`, `configure()` — for explicit control and teardown. |
|
|
65
|
-
| `prop-for-that/head` | Synchronous, FOUC-safe constants (scrollbar width & overlay preference, DPR, core count, device memory) before first paint. |
|
|
65
|
+
| `prop-for-that/head` | Synchronous, FOUC-safe constants (scrollbar width & overlay preference, DPR, core count, device memory, low-entropy user-agent) before first paint. |
|
|
66
66
|
| `prop-for-that/plugins` | The opt-in plugin catalog. |
|
|
67
67
|
|
|
68
68
|
> `auto` sees the **light DOM only** (not shadow roots — bind those with `propsFor(el, …)`), and lazy-loads plugin chunks, so from a CDN use one that serves the `dist` files verbatim (unpkg / jsDelivr), not a rewriting CDN.
|
package/dist/auto.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkOVCZMPYV_cjs=require('./chunk-OVCZMPYV.cjs');require('./chunk-PQVNJZUW.cjs'),require('./chunk-HHINWX7L.cjs'),require('./chunk-EYDIF3NM.cjs'),require('./chunk-65MXZJBD.cjs'),require('./chunk-7L35N3N3.cjs'),require('./chunk-QHHF5SEL.cjs');var u={"scroll-velocity":()=>import('./scroll-velocity-DGZNNO73.cjs').then(t=>t.scrollVelocity),online:()=>import('./online-KTMCBCXT.cjs').then(t=>t.online),"page-focused":()=>import('./page-focused-3WLSZDV4.cjs').then(t=>t.pageFocused),"page-visible":()=>import('./page-visible-6PMX575B.cjs').then(t=>t.pageVisible),"nav-type":()=>import('./nav-type-MFJJDDPZ.cjs').then(t=>t.navType),meta:()=>import('./meta-U2EHV4AM.cjs').then(t=>t.meta),network:()=>import('./network-DPAAEK2S.cjs').then(t=>t.network),battery:()=>import('./battery-DQQ2NOGC.cjs').then(t=>t.battery),clock:()=>import('./clock-EVSBOOMJ.cjs').then(t=>t.clock),fps:()=>import('./fps-Q3ITXSJO.cjs').then(t=>t.fps),"visual-viewport":()=>import('./visual-viewport-MKUHWUQT.cjs').then(t=>t.visualViewport),keyboard:()=>import('./keyboard-6ZGB2LAD.cjs').then(t=>t.keyboard),pointer:()=>import('./pointer-DJSMZGSV.cjs').then(t=>t.pointer),"pointer-local":()=>import('./pointer-local-6JKSOJZV.cjs').then(t=>t.pointerLocal),media:()=>import('./media-XS6ADFFY.cjs').then(t=>t.media),field:()=>import('./field-4MBM2R7N.cjs').then(t=>t.field),"field-state":()=>import('./field-state-NXSK6ZZW.cjs').then(t=>t.fieldState),"form-state":()=>import('./form-state-FJZINKN7.cjs').then(t=>t.formState),select:()=>import('./select-LMRGCCLB.cjs').then(t=>t.select),"color-input":()=>import('./color-input-SYYBVLZM.cjs').then(t=>t.colorInput),orientation:()=>import('./orientation-JD23MYZR.cjs').then(t=>t.orientation),motion:()=>import('./motion-GMUGWJN3.cjs').then(t=>t.motion),geo:()=>import('./geo-CMG7QJ6S.cjs').then(t=>t.geo),"cpu-pressure":()=>import('./cpu-pressure-FXZDL5IE.cjs').then(t=>t.cpuPressure),img:()=>import('./img-6F5QAPW3.cjs').then(t=>t.img),"img-color":()=>import('./img-color-MBEU42DF.cjs').then(t=>t.imgColor),"video-color":()=>import('./video-color-B37Z5OBY.cjs').then(t=>t.videoColor),truncated:()=>import('./truncated-RUY3JNAX.cjs').then(t=>t.truncated)};var n=new WeakMap,l=new Map;function v(t){return (t.dataset.propsFor??"").split(/\s+/).filter(Boolean)}function E(t){if(chunkOVCZMPYV_cjs.c(t))return null;let e=u[t];if(!e)return null;let o=l.get(t);return o||(o=e().then(r=>{chunkOVCZMPYV_cjs.a(r);}).catch(r=>{l.delete(t),console.error(`[prop-for-that] failed to load plugin "${t}"`,r);}),l.set(t,o)),o}function b(t,e){let o=E(e);if(!o){chunkOVCZMPYV_cjs.e(t,[e]);return}o.then(()=>{chunkOVCZMPYV_cjs.c(e)&&(n.get(t)??[]).includes(e)&&chunkOVCZMPYV_cjs.e(t,[e]);});}function
|
|
1
|
+
'use strict';var chunkOVCZMPYV_cjs=require('./chunk-OVCZMPYV.cjs');require('./chunk-PQVNJZUW.cjs'),require('./chunk-HHINWX7L.cjs'),require('./chunk-EYDIF3NM.cjs'),require('./chunk-65MXZJBD.cjs'),require('./chunk-7L35N3N3.cjs'),require('./chunk-QHHF5SEL.cjs');var u={"scroll-velocity":()=>import('./scroll-velocity-DGZNNO73.cjs').then(t=>t.scrollVelocity),online:()=>import('./online-KTMCBCXT.cjs').then(t=>t.online),"page-focused":()=>import('./page-focused-3WLSZDV4.cjs').then(t=>t.pageFocused),"page-visible":()=>import('./page-visible-6PMX575B.cjs').then(t=>t.pageVisible),"nav-type":()=>import('./nav-type-MFJJDDPZ.cjs').then(t=>t.navType),meta:()=>import('./meta-U2EHV4AM.cjs').then(t=>t.meta),network:()=>import('./network-DPAAEK2S.cjs').then(t=>t.network),battery:()=>import('./battery-DQQ2NOGC.cjs').then(t=>t.battery),clock:()=>import('./clock-EVSBOOMJ.cjs').then(t=>t.clock),fps:()=>import('./fps-Q3ITXSJO.cjs').then(t=>t.fps),"visual-viewport":()=>import('./visual-viewport-MKUHWUQT.cjs').then(t=>t.visualViewport),keyboard:()=>import('./keyboard-6ZGB2LAD.cjs').then(t=>t.keyboard),pointer:()=>import('./pointer-DJSMZGSV.cjs').then(t=>t.pointer),"pointer-local":()=>import('./pointer-local-6JKSOJZV.cjs').then(t=>t.pointerLocal),media:()=>import('./media-XS6ADFFY.cjs').then(t=>t.media),field:()=>import('./field-4MBM2R7N.cjs').then(t=>t.field),"field-state":()=>import('./field-state-NXSK6ZZW.cjs').then(t=>t.fieldState),"form-state":()=>import('./form-state-FJZINKN7.cjs').then(t=>t.formState),select:()=>import('./select-LMRGCCLB.cjs').then(t=>t.select),"color-input":()=>import('./color-input-SYYBVLZM.cjs').then(t=>t.colorInput),orientation:()=>import('./orientation-JD23MYZR.cjs').then(t=>t.orientation),motion:()=>import('./motion-GMUGWJN3.cjs').then(t=>t.motion),geo:()=>import('./geo-CMG7QJ6S.cjs').then(t=>t.geo),"cpu-pressure":()=>import('./cpu-pressure-FXZDL5IE.cjs').then(t=>t.cpuPressure),img:()=>import('./img-6F5QAPW3.cjs').then(t=>t.img),"img-color":()=>import('./img-color-MBEU42DF.cjs').then(t=>t.imgColor),"video-color":()=>import('./video-color-B37Z5OBY.cjs').then(t=>t.videoColor),truncated:()=>import('./truncated-RUY3JNAX.cjs').then(t=>t.truncated),ua:()=>import('./ua-3MLUBLSV.cjs').then(t=>t.ua)};var n=new WeakMap,l=new Map;function v(t){return (t.dataset.propsFor??"").split(/\s+/).filter(Boolean)}function E(t){if(chunkOVCZMPYV_cjs.c(t))return null;let e=u[t];if(!e)return null;let o=l.get(t);return o||(o=e().then(r=>{chunkOVCZMPYV_cjs.a(r);}).catch(r=>{l.delete(t),console.error(`[prop-for-that] failed to load plugin "${t}"`,r);}),l.set(t,o)),o}function b(t,e){let o=E(e);if(!o){chunkOVCZMPYV_cjs.e(t,[e]);return}o.then(()=>{chunkOVCZMPYV_cjs.c(e)&&(n.get(t)??[]).includes(e)&&chunkOVCZMPYV_cjs.e(t,[e]);});}function p(t){let e=v(t),o=n.get(t)??[],r=o.filter(i=>!e.includes(i)),g=e.filter(i=>!o.includes(i));r.length&&chunkOVCZMPYV_cjs.f(t,r),e.length?n.set(t,e):n.delete(t);for(let i of g)b(t,i);}function f(t){let e=n.get(t);e&&(chunkOVCZMPYV_cjs.f(t,e),n.delete(t));}function y(t){t instanceof HTMLElement&&(t.hasAttribute("data-props-for")&&p(t),t.querySelectorAll("[data-props-for]").forEach(p));}function L(t){t instanceof HTMLElement&&(f(t),t.querySelectorAll("[data-props-for]").forEach(f));}function h(){document.documentElement.hasAttribute("data-props-typed")&&chunkOVCZMPYV_cjs.d({typed:true}),document.querySelectorAll("[data-props-for]").forEach(p),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLElement){p(e.target);continue}e.removedNodes.forEach(L),e.addedNodes.forEach(y);}}).observe(document.documentElement,{subtree:true,childList:true,attributes:true,attributeFilter:["data-props-for"]});}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",h,{once:true}):h());
|
package/dist/auto.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {d,f as f$1,e,c,a}from'./chunk-D24E2DBW.js';import'./chunk-V4OTPLOQ.js';import'./chunk-LTJ2VKVY.js';import'./chunk-KG3EF456.js';import'./chunk-T4N6AEOZ.js';import'./chunk-LWKH66VY.js';import'./chunk-EEMKKLRF.js';var u={"scroll-velocity":()=>import('./scroll-velocity-ZRXPNZG7.js').then(t=>t.scrollVelocity),online:()=>import('./online-MGYZDLCQ.js').then(t=>t.online),"page-focused":()=>import('./page-focused-LBKD6QXG.js').then(t=>t.pageFocused),"page-visible":()=>import('./page-visible-27YKTHKU.js').then(t=>t.pageVisible),"nav-type":()=>import('./nav-type-S4MHMDHS.js').then(t=>t.navType),meta:()=>import('./meta-VSAZR4JL.js').then(t=>t.meta),network:()=>import('./network-BHUTXTX7.js').then(t=>t.network),battery:()=>import('./battery-CDMJLP4C.js').then(t=>t.battery),clock:()=>import('./clock-LYF2IHGE.js').then(t=>t.clock),fps:()=>import('./fps-IGSZPFLV.js').then(t=>t.fps),"visual-viewport":()=>import('./visual-viewport-GNJTAHPT.js').then(t=>t.visualViewport),keyboard:()=>import('./keyboard-YJ7S6XPJ.js').then(t=>t.keyboard),pointer:()=>import('./pointer-3O7MGTQD.js').then(t=>t.pointer),"pointer-local":()=>import('./pointer-local-X5TVNEEJ.js').then(t=>t.pointerLocal),media:()=>import('./media-RDQ3WR22.js').then(t=>t.media),field:()=>import('./field-6USMKGKM.js').then(t=>t.field),"field-state":()=>import('./field-state-YLUDK3XS.js').then(t=>t.fieldState),"form-state":()=>import('./form-state-Q4SCA6TH.js').then(t=>t.formState),select:()=>import('./select-H3CFIVK3.js').then(t=>t.select),"color-input":()=>import('./color-input-STV57DGE.js').then(t=>t.colorInput),orientation:()=>import('./orientation-27ULVQVJ.js').then(t=>t.orientation),motion:()=>import('./motion-GHDWROM2.js').then(t=>t.motion),geo:()=>import('./geo-MXO5OMVO.js').then(t=>t.geo),"cpu-pressure":()=>import('./cpu-pressure-WCDHVDRP.js').then(t=>t.cpuPressure),img:()=>import('./img-PYBNG6OU.js').then(t=>t.img),"img-color":()=>import('./img-color-VW3XMATY.js').then(t=>t.imgColor),"video-color":()=>import('./video-color-ZMRKDZFO.js').then(t=>t.videoColor),truncated:()=>import('./truncated-MDPFWGSI.js').then(t=>t.truncated)};var n=new WeakMap,l=new Map;function v(t){return (t.dataset.propsFor??"").split(/\s+/).filter(Boolean)}function E(t){if(c(t))return null;let e=u[t];if(!e)return null;let o=l.get(t);return o||(o=e().then(r=>{a(r);}).catch(r=>{l.delete(t),console.error(`[prop-for-that] failed to load plugin "${t}"`,r);}),l.set(t,o)),o}function b(t,e$1){let o=E(e$1);if(!o){e(t,[e$1]);return}o.then(()=>{c(e$1)&&(n.get(t)??[]).includes(e$1)&&e(t,[e$1]);});}function
|
|
1
|
+
import {d,f as f$1,e,c,a}from'./chunk-D24E2DBW.js';import'./chunk-V4OTPLOQ.js';import'./chunk-LTJ2VKVY.js';import'./chunk-KG3EF456.js';import'./chunk-T4N6AEOZ.js';import'./chunk-LWKH66VY.js';import'./chunk-EEMKKLRF.js';var u={"scroll-velocity":()=>import('./scroll-velocity-ZRXPNZG7.js').then(t=>t.scrollVelocity),online:()=>import('./online-MGYZDLCQ.js').then(t=>t.online),"page-focused":()=>import('./page-focused-LBKD6QXG.js').then(t=>t.pageFocused),"page-visible":()=>import('./page-visible-27YKTHKU.js').then(t=>t.pageVisible),"nav-type":()=>import('./nav-type-S4MHMDHS.js').then(t=>t.navType),meta:()=>import('./meta-VSAZR4JL.js').then(t=>t.meta),network:()=>import('./network-BHUTXTX7.js').then(t=>t.network),battery:()=>import('./battery-CDMJLP4C.js').then(t=>t.battery),clock:()=>import('./clock-LYF2IHGE.js').then(t=>t.clock),fps:()=>import('./fps-IGSZPFLV.js').then(t=>t.fps),"visual-viewport":()=>import('./visual-viewport-GNJTAHPT.js').then(t=>t.visualViewport),keyboard:()=>import('./keyboard-YJ7S6XPJ.js').then(t=>t.keyboard),pointer:()=>import('./pointer-3O7MGTQD.js').then(t=>t.pointer),"pointer-local":()=>import('./pointer-local-X5TVNEEJ.js').then(t=>t.pointerLocal),media:()=>import('./media-RDQ3WR22.js').then(t=>t.media),field:()=>import('./field-6USMKGKM.js').then(t=>t.field),"field-state":()=>import('./field-state-YLUDK3XS.js').then(t=>t.fieldState),"form-state":()=>import('./form-state-Q4SCA6TH.js').then(t=>t.formState),select:()=>import('./select-H3CFIVK3.js').then(t=>t.select),"color-input":()=>import('./color-input-STV57DGE.js').then(t=>t.colorInput),orientation:()=>import('./orientation-27ULVQVJ.js').then(t=>t.orientation),motion:()=>import('./motion-GHDWROM2.js').then(t=>t.motion),geo:()=>import('./geo-MXO5OMVO.js').then(t=>t.geo),"cpu-pressure":()=>import('./cpu-pressure-WCDHVDRP.js').then(t=>t.cpuPressure),img:()=>import('./img-PYBNG6OU.js').then(t=>t.img),"img-color":()=>import('./img-color-VW3XMATY.js').then(t=>t.imgColor),"video-color":()=>import('./video-color-ZMRKDZFO.js').then(t=>t.videoColor),truncated:()=>import('./truncated-MDPFWGSI.js').then(t=>t.truncated),ua:()=>import('./ua-3RC4SBYB.js').then(t=>t.ua)};var n=new WeakMap,l=new Map;function v(t){return (t.dataset.propsFor??"").split(/\s+/).filter(Boolean)}function E(t){if(c(t))return null;let e=u[t];if(!e)return null;let o=l.get(t);return o||(o=e().then(r=>{a(r);}).catch(r=>{l.delete(t),console.error(`[prop-for-that] failed to load plugin "${t}"`,r);}),l.set(t,o)),o}function b(t,e$1){let o=E(e$1);if(!o){e(t,[e$1]);return}o.then(()=>{c(e$1)&&(n.get(t)??[]).includes(e$1)&&e(t,[e$1]);});}function p(t){let e=v(t),o=n.get(t)??[],r=o.filter(i=>!e.includes(i)),g=e.filter(i=>!o.includes(i));r.length&&f$1(t,r),e.length?n.set(t,e):n.delete(t);for(let i of g)b(t,i);}function f(t){let e=n.get(t);e&&(f$1(t,e),n.delete(t));}function y(t){t instanceof HTMLElement&&(t.hasAttribute("data-props-for")&&p(t),t.querySelectorAll("[data-props-for]").forEach(p));}function L(t){t instanceof HTMLElement&&(f(t),t.querySelectorAll("[data-props-for]").forEach(f));}function h(){document.documentElement.hasAttribute("data-props-typed")&&d({typed:true}),document.querySelectorAll("[data-props-for]").forEach(p),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLElement){p(e.target);continue}e.removedNodes.forEach(L),e.addedNodes.forEach(y);}}).observe(document.documentElement,{subtree:true,childList:true,attributes:true,attributeFilter:["data-props-for"]});}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",h,{once:true}):h());
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkKSKAQMWJ_cjs=require('./chunk-KSKAQMWJ.cjs');var u={key:"ua",scope:"global",props:{"ua-platform":{syntax:"<custom-ident>",initial:"unknown"},"ua-browser":{syntax:"<custom-ident>",initial:"unknown"},"ua-engine":{syntax:"<custom-ident>",initial:"unknown"},"ua-version":{syntax:"<integer>",initial:"0"},"ua-mobile":{syntax:"<integer>",initial:"0"}},start(n){let{platform:t,browser:i,engine:o,version:r,mobile:a}=chunkKSKAQMWJ_cjs.a();return n.write("ua-platform",t,"const"),n.write("ua-browser",i,"const"),n.write("ua-engine",o,"const"),n.write("ua-version",r,"const"),n.write("ua-mobile",a,"const"),()=>{}}};exports.a=u;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a}from'./chunk-EXPE3C6O.js';var u={key:"ua",scope:"global",props:{"ua-platform":{syntax:"<custom-ident>",initial:"unknown"},"ua-browser":{syntax:"<custom-ident>",initial:"unknown"},"ua-engine":{syntax:"<custom-ident>",initial:"unknown"},"ua-version":{syntax:"<integer>",initial:"0"},"ua-mobile":{syntax:"<integer>",initial:"0"}},start(n){let{platform:t,browser:i,engine:o,version:r,mobile:a$1}=a();return n.write("ua-platform",t,"const"),n.write("ua-browser",i,"const"),n.write("ua-engine",o,"const"),n.write("ua-version",r,"const"),n.write("ua-mobile",a$1,"const"),()=>{}}};export{u as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var d={platform:"unknown",browser:"unknown",engine:"unknown",version:0,mobile:0},c={android:"android","chrome-os":"chromeos","chromium-os":"chromeos",ios:"ios",linux:"linux",macos:"macos",windows:"windows"},u=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");function f(n){let r=n.toLowerCase();return r.includes("edge")||r.includes("edg")?"edge":r.includes("opera")||r.includes("opr")?"opera":r.includes("samsung")?"samsung":r.includes("firefox")?"firefox":r.includes("chrome")||r.includes("chromium")?"chrome":r.includes("safari")?"safari":"unknown"}function g(n){let r=n.brands;if(!r||!r.length)return null;let i=r.filter(o=>!/not.?a.?brand/i.test(o.brand)),e=i.find(o=>!/chromium/i.test(o.brand))??i[0];return e?{platform:c[u(n.platform??"")]??"unknown",browser:f(e.brand),engine:"blink",version:parseInt(e.version,10)||0,mobile:n.mobile?1:0}:null}var l=[{id:"edge",test:/Edg(?:iOS|A)?\//,ver:/Edg(?:iOS|A)?\/(\d+)/},{id:"opera",test:/OPR\/|OPiOS\/|Opera\//,ver:/(?:OPR|OPiOS|Opera)\/(\d+)/},{id:"samsung",test:/SamsungBrowser\//,ver:/SamsungBrowser\/(\d+)/},{id:"firefox",test:/Firefox\/|FxiOS\//,ver:/(?:Firefox|FxiOS)\/(\d+)/},{id:"chrome",test:/Chrome\/|CriOS\//,ver:/(?:Chrome|CriOS)\/(\d+)/},{id:"safari",test:/Safari\//,ver:/Version\/(\d+)/}];function m(n){let r=/Android/.test(n)?"android":/iPhone|iPad|iPod/.test(n)?"ios":/Macintosh|Mac OS X/.test(n)?"macos":/Windows/.test(n)?"windows":/CrOS/.test(n)?"chromeos":/Linux/.test(n)?"linux":"unknown",i=l.find(a=>a.test.test(n)),e=i?.id??"unknown",o=i&&parseInt(n.match(i.ver)?.[1]??"",10)||0,t=r==="ios"?"webkit":e==="firefox"?"gecko":e==="safari"?"webkit":e==="unknown"?"unknown":"blink",s=/Mobi|Android|iPhone|iPod/.test(n)?1:0;return {platform:r,browser:e,engine:t,version:o,mobile:s}}function b(){if(typeof navigator>"u")return d;let n=navigator.userAgentData;return (n?g(n):null)??m(navigator.userAgent||"")}
|
|
2
|
+
export{b as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var d={platform:"unknown",browser:"unknown",engine:"unknown",version:0,mobile:0},c={android:"android","chrome-os":"chromeos","chromium-os":"chromeos",ios:"ios",linux:"linux",macos:"macos",windows:"windows"},u=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");function f(n){let r=n.toLowerCase();return r.includes("edge")||r.includes("edg")?"edge":r.includes("opera")||r.includes("opr")?"opera":r.includes("samsung")?"samsung":r.includes("firefox")?"firefox":r.includes("chrome")||r.includes("chromium")?"chrome":r.includes("safari")?"safari":"unknown"}function g(n){let r=n.brands;if(!r||!r.length)return null;let i=r.filter(o=>!/not.?a.?brand/i.test(o.brand)),e=i.find(o=>!/chromium/i.test(o.brand))??i[0];return e?{platform:c[u(n.platform??"")]??"unknown",browser:f(e.brand),engine:"blink",version:parseInt(e.version,10)||0,mobile:n.mobile?1:0}:null}var l=[{id:"edge",test:/Edg(?:iOS|A)?\//,ver:/Edg(?:iOS|A)?\/(\d+)/},{id:"opera",test:/OPR\/|OPiOS\/|Opera\//,ver:/(?:OPR|OPiOS|Opera)\/(\d+)/},{id:"samsung",test:/SamsungBrowser\//,ver:/SamsungBrowser\/(\d+)/},{id:"firefox",test:/Firefox\/|FxiOS\//,ver:/(?:Firefox|FxiOS)\/(\d+)/},{id:"chrome",test:/Chrome\/|CriOS\//,ver:/(?:Chrome|CriOS)\/(\d+)/},{id:"safari",test:/Safari\//,ver:/Version\/(\d+)/}];function m(n){let r=/Android/.test(n)?"android":/iPhone|iPad|iPod/.test(n)?"ios":/Macintosh|Mac OS X/.test(n)?"macos":/Windows/.test(n)?"windows":/CrOS/.test(n)?"chromeos":/Linux/.test(n)?"linux":"unknown",i=l.find(a=>a.test.test(n)),e=i?.id??"unknown",o=i&&parseInt(n.match(i.ver)?.[1]??"",10)||0,t=r==="ios"?"webkit":e==="firefox"?"gecko":e==="safari"?"webkit":e==="unknown"?"unknown":"blink",s=/Mobi|Android|iPhone|iPod/.test(n)?1:0;return {platform:r,browser:e,engine:t,version:o,mobile:s}}function b(){if(typeof navigator>"u")return d;let n=navigator.userAgentData;return (n?g(n):null)??m(navigator.userAgent||"")}
|
|
2
|
+
exports.a=b;
|
package/dist/head.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunk7L35N3N3_cjs=require('./chunk-7L35N3N3.cjs');function c(){let
|
|
1
|
+
'use strict';var chunkKSKAQMWJ_cjs=require('./chunk-KSKAQMWJ.cjs'),chunk7L35N3N3_cjs=require('./chunk-7L35N3N3.cjs');function c(){let i=chunk7L35N3N3_cjs.a.root,o=(a,l)=>i.style.setProperty(chunk7L35N3N3_cjs.a.constPrefix+a,String(l)),e=document.createElement("div");e.style.cssText="position:absolute;top:-9999px;width:100px;height:100px;overflow:scroll;visibility:hidden;scrollbar-width:auto",(document.body??i).appendChild(e);let n=e.offsetWidth-e.clientWidth;o("scrollbar-w",n),o("scrollbar-overlay",n===0?1:0),e.style.scrollbarWidth="thin",o("scrollbar-thin-w",e.offsetWidth-e.clientWidth),e.remove(),o("dpr",window.devicePixelRatio||1),o("cores",navigator.hardwareConcurrency||0),o("mem",navigator.deviceMemory||0);let t=chunkKSKAQMWJ_cjs.a();o("ua-platform",t.platform),o("ua-browser",t.browser),o("ua-engine",t.engine),o("ua-version",t.version),o("ua-mobile",t.mobile);}typeof document<"u"&&c();
|
package/dist/head.global.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
(function(){'use strict';var
|
|
1
|
+
(function(){'use strict';var d={constPrefix:"--const-",root:typeof document<"u"?document.documentElement:void 0};var l={platform:"unknown",browser:"unknown",engine:"unknown",version:0,mobile:0},f={android:"android","chrome-os":"chromeos","chromium-os":"chromeos",ios:"ios",linux:"linux",macos:"macos",windows:"windows"},u=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");function m(n){let e=n.toLowerCase();return e.includes("edge")||e.includes("edg")?"edge":e.includes("opera")||e.includes("opr")?"opera":e.includes("samsung")?"samsung":e.includes("firefox")?"firefox":e.includes("chrome")||e.includes("chromium")?"chrome":e.includes("safari")?"safari":"unknown"}function g(n){let e=n.brands;if(!e||!e.length)return null;let r=e.filter(t=>!/not.?a.?brand/i.test(t.brand)),o=r.find(t=>!/chromium/i.test(t.brand))??r[0];return o?{platform:f[u(n.platform??"")]??"unknown",browser:m(o.brand),engine:"blink",version:parseInt(o.version,10)||0,mobile:n.mobile?1:0}:null}var b=[{id:"edge",test:/Edg(?:iOS|A)?\//,ver:/Edg(?:iOS|A)?\/(\d+)/},{id:"opera",test:/OPR\/|OPiOS\/|Opera\//,ver:/(?:OPR|OPiOS|Opera)\/(\d+)/},{id:"samsung",test:/SamsungBrowser\//,ver:/SamsungBrowser\/(\d+)/},{id:"firefox",test:/Firefox\/|FxiOS\//,ver:/(?:Firefox|FxiOS)\/(\d+)/},{id:"chrome",test:/Chrome\/|CriOS\//,ver:/(?:Chrome|CriOS)\/(\d+)/},{id:"safari",test:/Safari\//,ver:/Version\/(\d+)/}];function p(n){let e=/Android/.test(n)?"android":/iPhone|iPad|iPod/.test(n)?"ios":/Macintosh|Mac OS X/.test(n)?"macos":/Windows/.test(n)?"windows":/CrOS/.test(n)?"chromeos":/Linux/.test(n)?"linux":"unknown",r=b.find(a=>a.test.test(n)),o=r?.id??"unknown",t=r&&parseInt(n.match(r.ver)?.[1]??"",10)||0,i=e==="ios"?"webkit":o==="firefox"?"gecko":o==="safari"?"webkit":o==="unknown"?"unknown":"blink",s=/Mobi|Android|iPhone|iPod/.test(n)?1:0;return {platform:e,browser:o,engine:i,version:t,mobile:s}}function c(){if(typeof navigator>"u")return l;let n=navigator.userAgentData;return (n?g(n):null)??p(navigator.userAgent||"")}function w(){let n=d.root,e=(s,a)=>n.style.setProperty(d.constPrefix+s,String(a)),r=document.createElement("div");r.style.cssText="position:absolute;top:-9999px;width:100px;height:100px;overflow:scroll;visibility:hidden;scrollbar-width:auto",(document.body??n).appendChild(r);let t=r.offsetWidth-r.clientWidth;e("scrollbar-w",t),e("scrollbar-overlay",t===0?1:0),r.style.scrollbarWidth="thin",e("scrollbar-thin-w",r.offsetWidth-r.clientWidth),r.remove(),e("dpr",window.devicePixelRatio||1),e("cores",navigator.hardwareConcurrency||0),e("mem",navigator.deviceMemory||0);let i=c();e("ua-platform",i.platform),e("ua-browser",i.browser),e("ua-engine",i.engine),e("ua-version",i.version),e("ua-mobile",i.mobile);}typeof document<"u"&&w();
|
|
2
|
+
})();
|
package/dist/head.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-LWKH66VY.js';function c(){let
|
|
1
|
+
import {a as a$1}from'./chunk-EXPE3C6O.js';import {a}from'./chunk-LWKH66VY.js';function c(){let i=a.root,o=(a$1,l)=>i.style.setProperty(a.constPrefix+a$1,String(l)),e=document.createElement("div");e.style.cssText="position:absolute;top:-9999px;width:100px;height:100px;overflow:scroll;visibility:hidden;scrollbar-width:auto",(document.body??i).appendChild(e);let n=e.offsetWidth-e.clientWidth;o("scrollbar-w",n),o("scrollbar-overlay",n===0?1:0),e.style.scrollbarWidth="thin",o("scrollbar-thin-w",e.offsetWidth-e.clientWidth),e.remove(),o("dpr",window.devicePixelRatio||1),o("cores",navigator.hardwareConcurrency||0),o("mem",navigator.deviceMemory||0);let t=a$1();o("ua-platform",t.platform),o("ua-browser",t.browser),o("ua-engine",t.engine),o("ua-version",t.version),o("ua-mobile",t.mobile);}typeof document<"u"&&c();
|
package/dist/plugins.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkHTKGZP36_cjs=require('./chunk-HTKGZP36.cjs'),chunkG2BOTBBH_cjs=require('./chunk-G2BOTBBH.cjs'),chunkUALPUR2L_cjs=require('./chunk-UALPUR2L.cjs'),chunk2H5YFW6O_cjs=require('./chunk-2H5YFW6O.cjs'),chunk2YHGSLQQ_cjs=require('./chunk-2YHGSLQQ.cjs'),chunkFKBHTKZH_cjs=require('./chunk-FKBHTKZH.cjs'),chunkHYVT6V4Z_cjs=require('./chunk-HYVT6V4Z.cjs'),chunk37L73RJL_cjs=require('./chunk-37L73RJL.cjs'),chunk3W7CXUWN_cjs=require('./chunk-3W7CXUWN.cjs'),chunkSYKMPPTY_cjs=require('./chunk-SYKMPPTY.cjs'),chunk63C3RCO2_cjs=require('./chunk-63C3RCO2.cjs'),chunkFZYB3P7L_cjs=require('./chunk-FZYB3P7L.cjs'),chunkIIQP3BYA_cjs=require('./chunk-IIQP3BYA.cjs'),chunkQFJ6SZ2H_cjs=require('./chunk-QFJ6SZ2H.cjs');require('./chunk-L4SCOKPV.cjs');var chunkODPCQAKC_cjs=require('./chunk-ODPCQAKC.cjs'),chunk3REDV2FZ_cjs=require('./chunk-3REDV2FZ.cjs');require('./chunk-A6JDSQWH.cjs');var chunkMGZTR3X6_cjs=require('./chunk-MGZTR3X6.cjs'),chunkK2YWGXLP_cjs=require('./chunk-K2YWGXLP.cjs'),chunkRT47EE2L_cjs=require('./chunk-RT47EE2L.cjs'),chunk7CDVAP3H_cjs=require('./chunk-7CDVAP3H.cjs'),chunk6LTQ7ISE_cjs=require('./chunk-6LTQ7ISE.cjs'),chunk2OYRAOTM_cjs=require('./chunk-2OYRAOTM.cjs'),chunkXQOUJEVE_cjs=require('./chunk-XQOUJEVE.cjs'),chunkIPYBSM34_cjs=require('./chunk-IPYBSM34.cjs'),chunkOVCZMPYV_cjs=require('./chunk-OVCZMPYV.cjs');require('./chunk-PQVNJZUW.cjs'),require('./chunk-HHINWX7L.cjs');var chunkLP3QQ33O_cjs=require('./chunk-LP3QQ33O.cjs');require('./chunk-EYDIF3NM.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
|
|
1
|
+
'use strict';var chunk3QHCKCTX_cjs=require('./chunk-3QHCKCTX.cjs'),chunkHTKGZP36_cjs=require('./chunk-HTKGZP36.cjs'),chunkG2BOTBBH_cjs=require('./chunk-G2BOTBBH.cjs'),chunkUALPUR2L_cjs=require('./chunk-UALPUR2L.cjs'),chunk2H5YFW6O_cjs=require('./chunk-2H5YFW6O.cjs'),chunk2YHGSLQQ_cjs=require('./chunk-2YHGSLQQ.cjs'),chunkFKBHTKZH_cjs=require('./chunk-FKBHTKZH.cjs'),chunkHYVT6V4Z_cjs=require('./chunk-HYVT6V4Z.cjs'),chunk37L73RJL_cjs=require('./chunk-37L73RJL.cjs'),chunk3W7CXUWN_cjs=require('./chunk-3W7CXUWN.cjs'),chunkSYKMPPTY_cjs=require('./chunk-SYKMPPTY.cjs'),chunk63C3RCO2_cjs=require('./chunk-63C3RCO2.cjs'),chunkFZYB3P7L_cjs=require('./chunk-FZYB3P7L.cjs'),chunkIIQP3BYA_cjs=require('./chunk-IIQP3BYA.cjs'),chunkQFJ6SZ2H_cjs=require('./chunk-QFJ6SZ2H.cjs');require('./chunk-L4SCOKPV.cjs');var chunkODPCQAKC_cjs=require('./chunk-ODPCQAKC.cjs'),chunk3REDV2FZ_cjs=require('./chunk-3REDV2FZ.cjs');require('./chunk-A6JDSQWH.cjs');var chunkMGZTR3X6_cjs=require('./chunk-MGZTR3X6.cjs'),chunkK2YWGXLP_cjs=require('./chunk-K2YWGXLP.cjs'),chunkRT47EE2L_cjs=require('./chunk-RT47EE2L.cjs'),chunk7CDVAP3H_cjs=require('./chunk-7CDVAP3H.cjs'),chunk6LTQ7ISE_cjs=require('./chunk-6LTQ7ISE.cjs'),chunk2OYRAOTM_cjs=require('./chunk-2OYRAOTM.cjs'),chunkXQOUJEVE_cjs=require('./chunk-XQOUJEVE.cjs'),chunkIPYBSM34_cjs=require('./chunk-IPYBSM34.cjs'),chunkOVCZMPYV_cjs=require('./chunk-OVCZMPYV.cjs');require('./chunk-PQVNJZUW.cjs'),require('./chunk-HHINWX7L.cjs'),require('./chunk-KSKAQMWJ.cjs');var chunkLP3QQ33O_cjs=require('./chunk-LP3QQ33O.cjs');require('./chunk-EYDIF3NM.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 q=[chunkLP3QQ33O_cjs.a,chunkOVF4XN2H_cjs.a,chunkWIPJMLJJ_cjs.a,chunk3MK6Q7DX_cjs.a,chunkMGZTR3X6_cjs.a,chunkK2YWGXLP_cjs.a,chunkRT47EE2L_cjs.b,chunk7CDVAP3H_cjs.a,chunk6LTQ7ISE_cjs.a,chunk2OYRAOTM_cjs.a,chunkXQOUJEVE_cjs.a,chunkIPYBSM34_cjs.a,chunk3W7CXUWN_cjs.a,chunkSYKMPPTY_cjs.a,chunk63C3RCO2_cjs.a,chunkFZYB3P7L_cjs.a,chunkIIQP3BYA_cjs.a,chunkQFJ6SZ2H_cjs.a,chunkODPCQAKC_cjs.a,chunk3REDV2FZ_cjs.a,chunkHTKGZP36_cjs.a,chunkG2BOTBBH_cjs.a,chunkUALPUR2L_cjs.a,chunk2H5YFW6O_cjs.a,chunk2YHGSLQQ_cjs.a,chunkFKBHTKZH_cjs.a,chunkHYVT6V4Z_cjs.a,chunk37L73RJL_cjs.a,chunk3QHCKCTX_cjs.a];function no(...o){for(let j of o.length?o:q)chunkOVCZMPYV_cjs.a(j);}Object.defineProperty(exports,"ua",{enumerable:true,get:function(){return chunk3QHCKCTX_cjs.a}});Object.defineProperty(exports,"orientation",{enumerable:true,get:function(){return chunkHTKGZP36_cjs.a}});Object.defineProperty(exports,"motion",{enumerable:true,get:function(){return chunkG2BOTBBH_cjs.a}});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 chunk2YHGSLQQ_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,"truncated",{enumerable:true,get:function(){return chunk37L73RJL_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,"media",{enumerable:true,get:function(){return chunk63C3RCO2_cjs.a}});Object.defineProperty(exports,"field",{enumerable:true,get:function(){return chunkFZYB3P7L_cjs.a}});Object.defineProperty(exports,"fieldState",{enumerable:true,get:function(){return chunkIIQP3BYA_cjs.a}});Object.defineProperty(exports,"formState",{enumerable:true,get:function(){return chunkQFJ6SZ2H_cjs.a}});Object.defineProperty(exports,"select",{enumerable:true,get:function(){return chunkODPCQAKC_cjs.a}});Object.defineProperty(exports,"colorInput",{enumerable:true,get:function(){return chunk3REDV2FZ_cjs.a}});Object.defineProperty(exports,"navType",{enumerable:true,get:function(){return chunkMGZTR3X6_cjs.a}});Object.defineProperty(exports,"meta",{enumerable:true,get:function(){return chunkK2YWGXLP_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 chunk2OYRAOTM_cjs.a}});Object.defineProperty(exports,"visualViewport",{enumerable:true,get:function(){return chunkXQOUJEVE_cjs.a}});Object.defineProperty(exports,"keyboard",{enumerable:true,get:function(){return chunkIPYBSM34_cjs.a}});Object.defineProperty(exports,"scrollVelocity",{enumerable:true,get:function(){return chunkLP3QQ33O_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=q;exports.registerPlugins=no;
|
package/dist/plugins.d.cts
CHANGED
|
@@ -367,6 +367,36 @@ declare const videoColor: Source;
|
|
|
367
367
|
*/
|
|
368
368
|
declare const truncated: Source;
|
|
369
369
|
|
|
370
|
+
/**
|
|
371
|
+
* `--const-ua-*` — low-entropy device & browser identity JS can read but CSS
|
|
372
|
+
* can't, written **once** as strings/numbers on the `const` cadence:
|
|
373
|
+
*
|
|
374
|
+
* - `--const-ua-platform` — `macos` / `windows` / `linux` / `android` / `ios` /
|
|
375
|
+
* `chromeos` / `unknown`
|
|
376
|
+
* - `--const-ua-browser` — `chrome` / `edge` / `firefox` / `safari` / `opera` /
|
|
377
|
+
* `samsung` / `unknown`
|
|
378
|
+
* - `--const-ua-engine` — `blink` / `gecko` / `webkit` / `unknown`
|
|
379
|
+
* - `--const-ua-version` — the browser's major version (number, `0` if unknown)
|
|
380
|
+
* - `--const-ua-mobile` — `1` on a phone-class device, else `0`
|
|
381
|
+
*
|
|
382
|
+
* so CSS can branch on the client without JS or a media query —
|
|
383
|
+
* `@container style(--const-ua-engine: webkit) { … }`,
|
|
384
|
+
* `@container style(--const-ua-platform: ios) { … }` — or gate on the version
|
|
385
|
+
* with `calc(var(--const-ua-version))`.
|
|
386
|
+
*
|
|
387
|
+
* Prefers structured UA Client Hints (`navigator.userAgentData`, Chromium) and
|
|
388
|
+
* falls back to a minimal (best-effort) `userAgent`-string sniff on Firefox /
|
|
389
|
+
* Safari. **Low-entropy only** — no high-entropy hints, device model, or full
|
|
390
|
+
* version, so it adds no fingerprinting surface beyond the request headers.
|
|
391
|
+
*
|
|
392
|
+
* Typed (`configure({ typed: true })`) registers the strings as `<custom-ident>`
|
|
393
|
+
* and the numbers as `<integer>` so they survive `@property`. Rides the writer,
|
|
394
|
+
* so it lands the frame *after* bind; the same constants are available before
|
|
395
|
+
* first paint via the `head` entry (`import 'prop-for-that/head'`). Global source
|
|
396
|
+
* — bind once.
|
|
397
|
+
*/
|
|
398
|
+
declare const ua: Source;
|
|
399
|
+
|
|
370
400
|
/** Every plugin source, for `registerPlugins()` / bulk registration. */
|
|
371
401
|
declare const allPlugins: Source[];
|
|
372
402
|
/**
|
|
@@ -379,4 +409,4 @@ declare const allPlugins: Source[];
|
|
|
379
409
|
*/
|
|
380
410
|
declare function registerPlugins(...sources: Source[]): void;
|
|
381
411
|
|
|
382
|
-
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, keyboard, media, meta, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, truncated, videoColor, visualViewport };
|
|
412
|
+
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, keyboard, media, meta, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, truncated, ua, videoColor, visualViewport };
|
package/dist/plugins.d.ts
CHANGED
|
@@ -367,6 +367,36 @@ declare const videoColor: Source;
|
|
|
367
367
|
*/
|
|
368
368
|
declare const truncated: Source;
|
|
369
369
|
|
|
370
|
+
/**
|
|
371
|
+
* `--const-ua-*` — low-entropy device & browser identity JS can read but CSS
|
|
372
|
+
* can't, written **once** as strings/numbers on the `const` cadence:
|
|
373
|
+
*
|
|
374
|
+
* - `--const-ua-platform` — `macos` / `windows` / `linux` / `android` / `ios` /
|
|
375
|
+
* `chromeos` / `unknown`
|
|
376
|
+
* - `--const-ua-browser` — `chrome` / `edge` / `firefox` / `safari` / `opera` /
|
|
377
|
+
* `samsung` / `unknown`
|
|
378
|
+
* - `--const-ua-engine` — `blink` / `gecko` / `webkit` / `unknown`
|
|
379
|
+
* - `--const-ua-version` — the browser's major version (number, `0` if unknown)
|
|
380
|
+
* - `--const-ua-mobile` — `1` on a phone-class device, else `0`
|
|
381
|
+
*
|
|
382
|
+
* so CSS can branch on the client without JS or a media query —
|
|
383
|
+
* `@container style(--const-ua-engine: webkit) { … }`,
|
|
384
|
+
* `@container style(--const-ua-platform: ios) { … }` — or gate on the version
|
|
385
|
+
* with `calc(var(--const-ua-version))`.
|
|
386
|
+
*
|
|
387
|
+
* Prefers structured UA Client Hints (`navigator.userAgentData`, Chromium) and
|
|
388
|
+
* falls back to a minimal (best-effort) `userAgent`-string sniff on Firefox /
|
|
389
|
+
* Safari. **Low-entropy only** — no high-entropy hints, device model, or full
|
|
390
|
+
* version, so it adds no fingerprinting surface beyond the request headers.
|
|
391
|
+
*
|
|
392
|
+
* Typed (`configure({ typed: true })`) registers the strings as `<custom-ident>`
|
|
393
|
+
* and the numbers as `<integer>` so they survive `@property`. Rides the writer,
|
|
394
|
+
* so it lands the frame *after* bind; the same constants are available before
|
|
395
|
+
* first paint via the `head` entry (`import 'prop-for-that/head'`). Global source
|
|
396
|
+
* — bind once.
|
|
397
|
+
*/
|
|
398
|
+
declare const ua: Source;
|
|
399
|
+
|
|
370
400
|
/** Every plugin source, for `registerPlugins()` / bulk registration. */
|
|
371
401
|
declare const allPlugins: Source[];
|
|
372
402
|
/**
|
|
@@ -379,4 +409,4 @@ declare const allPlugins: Source[];
|
|
|
379
409
|
*/
|
|
380
410
|
declare function registerPlugins(...sources: Source[]): void;
|
|
381
411
|
|
|
382
|
-
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, keyboard, media, meta, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, truncated, videoColor, visualViewport };
|
|
412
|
+
export { allPlugins, battery, clock, colorInput, cpuPressure, field, fieldState, formState, fps, geo, img, imgColor, keyboard, media, meta, motion, navType, network, online, orientation, pageFocused, pageVisible, pointer, pointerLocal, registerPlugins, scrollVelocity, select, truncated, ua, videoColor, visualViewport };
|
package/dist/plugins.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$j}from'./chunk-TRMZLMNW.js';export{a as orientation}from'./chunk-TRMZLMNW.js';import {a as a$k}from'./chunk-SKEEFKDT.js';export{a as motion}from'./chunk-SKEEFKDT.js';import {a as a$l}from'./chunk-FOHEZJHF.js';export{a as geo}from'./chunk-FOHEZJHF.js';import {a as a$m}from'./chunk-5JZBLUQK.js';export{a as cpuPressure}from'./chunk-5JZBLUQK.js';import {a as a$n}from'./chunk-YARRV66T.js';export{a as img}from'./chunk-YARRV66T.js';import {a as a$o}from'./chunk-A7GWTDM7.js';export{a as imgColor}from'./chunk-A7GWTDM7.js';import {a as a$p}from'./chunk-ZQTU5EW7.js';export{a as videoColor}from'./chunk-ZQTU5EW7.js';import {a as a$q}from'./chunk-BS2XX4G3.js';export{a as truncated}from'./chunk-BS2XX4G3.js';import {a as a$b}from'./chunk-KAK6WZS7.js';export{a as pointer}from'./chunk-KAK6WZS7.js';import {a as a$c}from'./chunk-2E2JQAHI.js';export{a as pointerLocal}from'./chunk-2E2JQAHI.js';import {a as a$d}from'./chunk-UHGW7AXC.js';export{a as media}from'./chunk-UHGW7AXC.js';import {a as a$e}from'./chunk-COGNT6R5.js';export{a as field}from'./chunk-COGNT6R5.js';import {a as a$f}from'./chunk-BTKSOVH3.js';export{a as fieldState}from'./chunk-BTKSOVH3.js';import {a as a$g}from'./chunk-LBK3257B.js';export{a as formState}from'./chunk-LBK3257B.js';import'./chunk-QIUPJ6MF.js';import {a as a$h}from'./chunk-M65LNJXV.js';export{a as select}from'./chunk-M65LNJXV.js';import {a as a$i}from'./chunk-QTM2FDUV.js';export{a as colorInput}from'./chunk-QTM2FDUV.js';import'./chunk-A2ETARW3.js';import {a as a$4}from'./chunk-H7X35UB4.js';export{a as navType}from'./chunk-H7X35UB4.js';import {a as a$5}from'./chunk-TEPMM5DH.js';export{a as meta}from'./chunk-TEPMM5DH.js';import {b}from'./chunk-JB72QLD6.js';export{b as network}from'./chunk-JB72QLD6.js';import {a as a$6}from'./chunk-DQJQEWPS.js';export{a as battery}from'./chunk-DQJQEWPS.js';import {a as a$7}from'./chunk-7U544OAJ.js';export{a as clock}from'./chunk-7U544OAJ.js';import {a as a$8}from'./chunk-M7FMWTDF.js';export{a as fps}from'./chunk-M7FMWTDF.js';import {a as a$9}from'./chunk-F5H2O3AR.js';export{a as visualViewport}from'./chunk-F5H2O3AR.js';import {a as a$a}from'./chunk-IVUTABRM.js';export{a as keyboard}from'./chunk-IVUTABRM.js';import {a as a$
|
|
1
|
+
import {a as a$r}from'./chunk-5VXDAWUI.js';export{a as ua}from'./chunk-5VXDAWUI.js';import {a as a$j}from'./chunk-TRMZLMNW.js';export{a as orientation}from'./chunk-TRMZLMNW.js';import {a as a$k}from'./chunk-SKEEFKDT.js';export{a as motion}from'./chunk-SKEEFKDT.js';import {a as a$l}from'./chunk-FOHEZJHF.js';export{a as geo}from'./chunk-FOHEZJHF.js';import {a as a$m}from'./chunk-5JZBLUQK.js';export{a as cpuPressure}from'./chunk-5JZBLUQK.js';import {a as a$n}from'./chunk-YARRV66T.js';export{a as img}from'./chunk-YARRV66T.js';import {a as a$o}from'./chunk-A7GWTDM7.js';export{a as imgColor}from'./chunk-A7GWTDM7.js';import {a as a$p}from'./chunk-ZQTU5EW7.js';export{a as videoColor}from'./chunk-ZQTU5EW7.js';import {a as a$q}from'./chunk-BS2XX4G3.js';export{a as truncated}from'./chunk-BS2XX4G3.js';import {a as a$b}from'./chunk-KAK6WZS7.js';export{a as pointer}from'./chunk-KAK6WZS7.js';import {a as a$c}from'./chunk-2E2JQAHI.js';export{a as pointerLocal}from'./chunk-2E2JQAHI.js';import {a as a$d}from'./chunk-UHGW7AXC.js';export{a as media}from'./chunk-UHGW7AXC.js';import {a as a$e}from'./chunk-COGNT6R5.js';export{a as field}from'./chunk-COGNT6R5.js';import {a as a$f}from'./chunk-BTKSOVH3.js';export{a as fieldState}from'./chunk-BTKSOVH3.js';import {a as a$g}from'./chunk-LBK3257B.js';export{a as formState}from'./chunk-LBK3257B.js';import'./chunk-QIUPJ6MF.js';import {a as a$h}from'./chunk-M65LNJXV.js';export{a as select}from'./chunk-M65LNJXV.js';import {a as a$i}from'./chunk-QTM2FDUV.js';export{a as colorInput}from'./chunk-QTM2FDUV.js';import'./chunk-A2ETARW3.js';import {a as a$4}from'./chunk-H7X35UB4.js';export{a as navType}from'./chunk-H7X35UB4.js';import {a as a$5}from'./chunk-TEPMM5DH.js';export{a as meta}from'./chunk-TEPMM5DH.js';import {b}from'./chunk-JB72QLD6.js';export{b as network}from'./chunk-JB72QLD6.js';import {a as a$6}from'./chunk-DQJQEWPS.js';export{a as battery}from'./chunk-DQJQEWPS.js';import {a as a$7}from'./chunk-7U544OAJ.js';export{a as clock}from'./chunk-7U544OAJ.js';import {a as a$8}from'./chunk-M7FMWTDF.js';export{a as fps}from'./chunk-M7FMWTDF.js';import {a as a$9}from'./chunk-F5H2O3AR.js';export{a as visualViewport}from'./chunk-F5H2O3AR.js';import {a as a$a}from'./chunk-IVUTABRM.js';export{a as keyboard}from'./chunk-IVUTABRM.js';import {a as a$s}from'./chunk-D24E2DBW.js';import'./chunk-V4OTPLOQ.js';import'./chunk-LTJ2VKVY.js';import'./chunk-EXPE3C6O.js';import {a}from'./chunk-SV76E7NI.js';export{a as scrollVelocity}from'./chunk-SV76E7NI.js';import'./chunk-KG3EF456.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 q=[a,a$1,a$2,a$3,a$4,a$5,b,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,a$o,a$p,a$q,a$r];function no(...o){for(let j of o.length?o:q)a$s(j);}export{q as allPlugins,no as registerPlugins};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk3QHCKCTX_cjs=require('./chunk-3QHCKCTX.cjs');require('./chunk-KSKAQMWJ.cjs');Object.defineProperty(exports,"ua",{enumerable:true,get:function(){return chunk3QHCKCTX_cjs.a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as ua}from'./chunk-5VXDAWUI.js';import'./chunk-EXPE3C6O.js';
|
package/llms.txt
CHANGED
|
@@ -106,6 +106,11 @@ prefix; constants use `--const-`. Values are unitless numbers unless noted.
|
|
|
106
106
|
| `--const-dpr` | `devicePixelRatio` |
|
|
107
107
|
| `--const-cores` | `navigator.hardwareConcurrency` |
|
|
108
108
|
| `--const-mem` | `navigator.deviceMemory` in GiB (Chromium-only, coarse; `0` elsewhere) |
|
|
109
|
+
| `--const-ua-platform` | low-entropy OS: `macos` / `windows` / `linux` / `android` / `ios` / `chromeos` / `unknown` |
|
|
110
|
+
| `--const-ua-browser` | `chrome` / `edge` / `firefox` / `safari` / `opera` / `samsung` / `unknown` |
|
|
111
|
+
| `--const-ua-engine` | `blink` / `gecko` / `webkit` / `unknown` |
|
|
112
|
+
| `--const-ua-version` | browser major version (number, `0` if unknown) |
|
|
113
|
+
| `--const-ua-mobile` | `1` on a phone-class device, else `0` |
|
|
109
114
|
|
|
110
115
|
### Plugins (`prop-for-that/plugins`)
|
|
111
116
|
|
|
@@ -120,6 +125,7 @@ Import name is camelCase; the key for `propsFor`/`data-props-for` is the dashed
|
|
|
120
125
|
| `pageVisible` | `page-visible` | global | `--live-page-visible` (1/0 — tab foreground vs hidden/backgrounded; `document.visibilityState`. A visible tab can still be unfocused) |
|
|
121
126
|
| `navType` | `nav-type` | global | `--const-nav-type` (write-once string — how the user arrived: `navigate` / `reload` / `back_forward` / `prerender`, from `performance.getEntriesByType('navigation')[0].type`. Pairs with `@container style(--const-nav-type: reload)`) |
|
|
122
127
|
| `meta` | `meta` | global | every `<meta name\|property + content>` as a write-once `--const-meta-<slug>` (slug = lowercased name, non-alphanumerics → `-`): e.g. `--const-meta-theme-color`, `--const-meta-og-image`, `--const-meta-color-scheme`. First match wins; a `media`-conditional meta is skipped when it doesn't match, so the active `theme-color` variant lands. Read once at bind (const) |
|
|
128
|
+
| `ua` | `ua` | global | low-entropy device/browser identity, write-once: `--const-ua-platform` (macos/windows/linux/android/ios/chromeos/unknown), `--const-ua-browser` (chrome/edge/firefox/safari/opera/samsung/unknown), `--const-ua-engine` (blink/gecko/webkit/unknown), `--const-ua-version` (browser major, 0 if unknown), `--const-ua-mobile` (1/0). Prefers UA Client Hints (`navigator.userAgentData`, Chromium), falls back to a best-effort userAgent sniff (Firefox/Safari). Low-entropy only — no fingerprinting surface beyond request headers. Also written pre-paint by the `head` entry |
|
|
123
129
|
| `network` | `network` | global | `--live-net-downlink`, `--live-net-rtt`, `--live-net-save-data` (1/0), `--live-net-type` (slow-2g=1…4g=4, else 0) |
|
|
124
130
|
| `battery` | `battery` | global | `--live-battery-level` (0–1), `--live-battery-charging` (1/0) |
|
|
125
131
|
| `clock` | `clock` | global | `--live-now` (epoch seconds), `--live-hours`, `--live-minutes`, `--live-seconds` |
|