@toclocoinc/lattice-grid 1.74.0 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +44 -6
- package/docs/CHART-CODES.md +8 -0
- package/docs/api/adapters.html +1 -1
- package/docs/api/ai.html +1 -1
- package/docs/api/alarms.html +1 -1
- package/docs/api/charts.html +28 -2
- package/docs/api/data-router.html +1 -1
- package/docs/api/deckgl.html +2 -2
- package/docs/api/gantt.html +1 -1
- package/docs/api/geometry.html +1 -1
- package/docs/api/grid.html +2 -2
- package/docs/api/index.html +2 -2
- package/docs/api/kanban.html +1 -1
- package/docs/api/kpi.html +1 -1
- package/docs/api/layout.html +1 -1
- package/docs/api/list.html +1 -1
- package/docs/api/mock-socket.html +1 -1
- package/docs/api/tabs.html +1 -1
- package/docs/api/types.html +13 -1
- package/docs/api-detail.html +13 -4
- package/docs/warnings.json +36 -3
- package/lattice-grid.d.ts +37 -2
- package/lattice-grid.esm.min.js +3 -3
- package/lattice-grid.min.cjs +3 -3
- package/lattice-grid.min.js +3 -3
- package/modules/ai.d.ts +1 -1
- package/modules/ai.esm.min.js +2 -2
- package/modules/ai.min.cjs +2 -2
- package/modules/ai.min.js +2 -2
- package/modules/alarms.d.ts +1 -1
- package/modules/alarms.esm.min.js +2 -2
- package/modules/alarms.min.cjs +2 -2
- package/modules/alarms.min.js +2 -2
- package/modules/angular.d.ts +1 -1
- package/modules/angular.esm.min.js +2 -2
- package/modules/angular.min.cjs +2 -2
- package/modules/angular.min.js +2 -2
- package/modules/chart-alluvial.d.ts +1 -1
- package/modules/chart-alluvial.esm.min.js +1 -1
- package/modules/chart-alluvial.min.cjs +1 -1
- package/modules/chart-alluvial.min.js +1 -1
- package/modules/chart-arc.d.ts +1 -1
- package/modules/chart-arc.esm.min.js +1 -1
- package/modules/chart-arc.min.cjs +1 -1
- package/modules/chart-arc.min.js +1 -1
- package/modules/chart-bubblemap.d.ts +1 -1
- package/modules/chart-bubblemap.esm.min.js +1 -1
- package/modules/chart-bubblemap.min.cjs +1 -1
- package/modules/chart-bubblemap.min.js +1 -1
- package/modules/chart-bump.d.ts +1 -1
- package/modules/chart-bump.esm.min.js +1 -1
- package/modules/chart-bump.min.cjs +1 -1
- package/modules/chart-bump.min.js +1 -1
- package/modules/chart-calendar.d.ts +1 -1
- package/modules/chart-calendar.esm.min.js +2 -2
- package/modules/chart-calendar.esm.min.js.map +1 -1
- package/modules/chart-calendar.min.cjs +2 -2
- package/modules/chart-calendar.min.js +2 -2
- package/modules/chart-calendar.min.js.map +1 -1
- package/modules/chart-choropleth.d.ts +1 -1
- package/modules/chart-choropleth.esm.min.js +2 -2
- package/modules/chart-choropleth.esm.min.js.map +1 -1
- package/modules/chart-choropleth.min.cjs +2 -2
- package/modules/chart-choropleth.min.js +2 -2
- package/modules/chart-choropleth.min.js.map +1 -1
- package/modules/chart-decomposition.d.ts +1 -1
- package/modules/chart-decomposition.esm.min.js +1 -1
- package/modules/chart-decomposition.min.cjs +1 -1
- package/modules/chart-decomposition.min.js +1 -1
- package/modules/chart-diverging.d.ts +1 -1
- package/modules/chart-diverging.esm.min.js +1 -1
- package/modules/chart-diverging.min.cjs +1 -1
- package/modules/chart-diverging.min.js +1 -1
- package/modules/chart-dumbbell.d.ts +1 -1
- package/modules/chart-dumbbell.esm.min.js +1 -1
- package/modules/chart-dumbbell.min.cjs +1 -1
- package/modules/chart-dumbbell.min.js +1 -1
- package/modules/chart-fan.d.ts +1 -1
- package/modules/chart-fan.esm.min.js +1 -1
- package/modules/chart-fan.min.cjs +1 -1
- package/modules/chart-fan.min.js +1 -1
- package/modules/chart-hexbin.d.ts +1 -1
- package/modules/chart-hexbin.esm.min.js +2 -2
- package/modules/chart-hexbin.esm.min.js.map +1 -1
- package/modules/chart-hexbin.min.cjs +2 -2
- package/modules/chart-hexbin.min.js +2 -2
- package/modules/chart-hexbin.min.js.map +1 -1
- package/modules/chart-hexmap.d.ts +1 -1
- package/modules/chart-hexmap.esm.min.js +2 -2
- package/modules/chart-hexmap.esm.min.js.map +1 -1
- package/modules/chart-hexmap.min.cjs +2 -2
- package/modules/chart-hexmap.min.js +2 -2
- package/modules/chart-hexmap.min.js.map +1 -1
- package/modules/chart-icicle.d.ts +1 -1
- package/modules/chart-icicle.esm.min.js +1 -1
- package/modules/chart-icicle.min.cjs +1 -1
- package/modules/chart-icicle.min.js +1 -1
- package/modules/chart-markermap.d.ts +1 -1
- package/modules/chart-markermap.esm.min.js +1 -1
- package/modules/chart-markermap.min.cjs +1 -1
- package/modules/chart-markermap.min.js +1 -1
- package/modules/chart-parallel.d.ts +1 -1
- package/modules/chart-parallel.esm.min.js +1 -1
- package/modules/chart-parallel.min.cjs +1 -1
- package/modules/chart-parallel.min.js +1 -1
- package/modules/chart-ridgeline.d.ts +1 -1
- package/modules/chart-ridgeline.esm.min.js +1 -1
- package/modules/chart-ridgeline.min.cjs +1 -1
- package/modules/chart-ridgeline.min.js +1 -1
- package/modules/chart-roc.d.ts +1 -1
- package/modules/chart-roc.esm.min.js +1 -1
- package/modules/chart-roc.min.cjs +1 -1
- package/modules/chart-roc.min.js +1 -1
- package/modules/chart-slope.d.ts +1 -1
- package/modules/chart-slope.esm.min.js +1 -1
- package/modules/chart-slope.min.cjs +1 -1
- package/modules/chart-slope.min.js +1 -1
- package/modules/chart-splom.d.ts +1 -1
- package/modules/chart-splom.esm.min.js +1 -1
- package/modules/chart-splom.min.cjs +1 -1
- package/modules/chart-splom.min.js +1 -1
- package/modules/chart-waffle.d.ts +1 -1
- package/modules/chart-waffle.esm.min.js +1 -1
- package/modules/chart-waffle.min.cjs +1 -1
- package/modules/chart-waffle.min.js +1 -1
- package/modules/charts.d.ts +1 -1
- package/modules/charts.esm.min.js +185 -178
- package/modules/charts.esm.min.js.map +2 -2
- package/modules/charts.min.cjs +185 -178
- package/modules/charts.min.js +185 -178
- package/modules/charts.min.js.map +2 -2
- package/modules/data-router.d.ts +1 -1
- package/modules/data-router.esm.min.js +2 -2
- package/modules/data-router.min.cjs +2 -2
- package/modules/data-router.min.js +2 -2
- package/modules/deckgl.d.ts +9 -3
- package/modules/deckgl.esm.min.js +18 -11
- package/modules/deckgl.esm.min.js.map +2 -2
- package/modules/deckgl.min.cjs +18 -11
- package/modules/deckgl.min.js +18 -11
- package/modules/deckgl.min.js.map +2 -2
- package/modules/devtools.d.ts +1 -1
- package/modules/devtools.esm.min.js +1 -1
- package/modules/devtools.min.cjs +1 -1
- package/modules/devtools.min.js +1 -1
- package/modules/dhtmlx-compat.d.ts +1 -1
- package/modules/dhtmlx-compat.esm.min.js +2 -2
- package/modules/dhtmlx-compat.min.cjs +2 -2
- package/modules/dhtmlx-compat.min.js +2 -2
- package/modules/gantt.d.ts +1 -1
- package/modules/gantt.esm.min.js +2 -2
- package/modules/gantt.min.cjs +2 -2
- package/modules/gantt.min.js +2 -2
- package/modules/geo-europe-nuts.d.ts +1 -1
- package/modules/geo-europe-nuts.esm.min.js +1 -1
- package/modules/geo-europe-nuts.min.cjs +1 -1
- package/modules/geo-europe-nuts.min.js +1 -1
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-uk.min.cjs +1 -1
- package/modules/geo-uk.min.js +1 -1
- package/modules/geo-us-states.d.ts +1 -1
- package/modules/geo-us-states.esm.min.js +1 -1
- package/modules/geo-us-states.min.cjs +1 -1
- package/modules/geo-us-states.min.js +1 -1
- package/modules/geo-world-110m.d.ts +1 -1
- package/modules/geo-world-110m.esm.min.js +1 -1
- package/modules/geo-world-110m.min.cjs +1 -1
- package/modules/geo-world-110m.min.js +1 -1
- package/modules/geo-world-50m.d.ts +1 -1
- package/modules/geo-world-50m.esm.min.js +1 -1
- package/modules/geo-world-50m.min.cjs +1 -1
- package/modules/geo-world-50m.min.js +1 -1
- package/modules/geometry.d.ts +1 -1
- package/modules/geometry.esm.min.js +2 -2
- package/modules/geometry.min.cjs +2 -2
- package/modules/geometry.min.js +2 -2
- package/modules/htmx.d.ts +1 -1
- package/modules/htmx.esm.min.js +3 -3
- package/modules/htmx.min.cjs +3 -3
- package/modules/htmx.min.js +3 -3
- package/modules/kanban.d.ts +1 -1
- package/modules/kanban.esm.min.js +2 -2
- package/modules/kanban.min.cjs +2 -2
- package/modules/kanban.min.js +2 -2
- package/modules/kpi.d.ts +1 -1
- package/modules/kpi.esm.min.js +2 -2
- package/modules/kpi.min.cjs +2 -2
- package/modules/kpi.min.js +2 -2
- package/modules/layout.d.ts +1 -1
- package/modules/layout.esm.min.js +2 -2
- package/modules/layout.min.cjs +2 -2
- package/modules/layout.min.js +2 -2
- package/modules/list.d.ts +1 -1
- package/modules/list.esm.min.js +2 -2
- package/modules/list.min.cjs +2 -2
- package/modules/list.min.js +2 -2
- package/modules/mock-socket.d.ts +1 -1
- package/modules/mock-socket.esm.min.js +1 -1
- package/modules/mock-socket.min.cjs +1 -1
- package/modules/mock-socket.min.js +1 -1
- package/modules/react.d.ts +1 -1
- package/modules/react.esm.min.js +2 -2
- package/modules/react.min.cjs +2 -2
- package/modules/react.min.js +2 -2
- package/modules/svelte.d.ts +1 -1
- package/modules/svelte.esm.min.js +2 -2
- package/modules/svelte.min.cjs +2 -2
- package/modules/svelte.min.js +2 -2
- package/modules/tabs.d.ts +1 -1
- package/modules/tabs.esm.min.js +2 -2
- package/modules/tabs.min.cjs +2 -2
- package/modules/tabs.min.js +2 -2
- package/modules/vue.d.ts +1 -1
- package/modules/vue.esm.min.js +2 -2
- package/modules/vue.min.cjs +2 -2
- package/modules/vue.min.js +2 -2
- package/modules/webcomponent.d.ts +1 -1
- package/modules/webcomponent.esm.min.js +3 -3
- package/modules/webcomponent.min.cjs +3 -3
- package/modules/webcomponent.min.js +3 -3
- package/package.json +1 -1
package/modules/kpi.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.75.0, kpi module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(Tt){"use strict";var dt=Object.create(null),gt=Object.create(null);function Ne(p,ie){dt[p]=ie}function pt(p){var ie=gt[p];if(ie)return ie;var X=Object.create(null);gt[p]=X;var V=dt[p];if(!V)throw new Error("[lattice] missing module: "+p);return V(X,pt),X}Ne("packages/core/src/internal/util.js",function(p,ie){"use strict";Object.defineProperty(p,"VERSION",{enumerable:!0,get:function(){return C}}),Object.defineProperty(p,"reportedWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"warnOnce",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"infoOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"resetWarnings",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"fail",{enumerable:!0,get:function(){return L}}),Object.defineProperty(p,"invariant",{enumerable:!0,get:function(){return g}}),Object.defineProperty(p,"DEV",{enumerable:!0,get:function(){return j}}),Object.defineProperty(p,"isObject",{enumerable:!0,get:function(){return O}}),Object.defineProperty(p,"isFunction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(p,"isNil",{enumerable:!0,get:function(){return k}}),Object.defineProperty(p,"isBlank",{enumerable:!0,get:function(){return S}}),Object.defineProperty(p,"isCtor",{enumerable:!0,get:function(){return N}}),Object.defineProperty(p,"pathGetter",{enumerable:!0,get:function(){return G}}),Object.defineProperty(p,"pathSetter",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(p,"getPath",{enumerable:!0,get:function(){return h}}),Object.defineProperty(p,"setPath",{enumerable:!0,get:function(){return E}}),Object.defineProperty(p,"humanise",{enumerable:!0,get:function(){return D}}),Object.defineProperty(p,"escapeHtml",{enumerable:!0,get:function(){return q}}),Object.defineProperty(p,"titleCase",{enumerable:!0,get:function(){return re}}),Object.defineProperty(p,"expand",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(p,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(p,"merge",{enumerable:!0,get:function(){return d}}),Object.defineProperty(p,"mergeRow",{enumerable:!0,get:function(){return P}}),Object.defineProperty(p,"Lru",{enumerable:!0,get:function(){return z}}),Object.defineProperty(p,"collator",{enumerable:!0,get:function(){return w}}),Object.defineProperty(p,"defaultCompare",{enumerable:!0,get:function(){return T}}),Object.defineProperty(p,"now",{enumerable:!0,get:function(){return I}}),Object.defineProperty(p,"nextFrame",{enumerable:!0,get:function(){return e}}),Object.defineProperty(p,"cancelFrame",{enumerable:!0,get:function(){return r}}),Object.defineProperty(p,"frameBatched",{enumerable:!0,get:function(){return l}}),Object.defineProperty(p,"settleDebounce",{enumerable:!0,get:function(){return t}}),Object.defineProperty(p,"whenIdle",{enumerable:!0,get:function(){return n}}),Object.defineProperty(p,"uid",{enumerable:!0,get:function(){return f}});const X="1.74.0";async function V(){return X}const C="1.74.0",A=new Set,b=2e3;function F(o){if(A.add(o),A.size>b){const a=A.values().next().value;a!==void 0&&A.delete(a)}}const s=[],$=500;function x(o,a,u){s.push({key:o,level:a,message:u.map(m=>typeof m=="string"?m:W(m)).join(" "),at:Date.now()}),s.length>$&&s.shift()}function W(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function R(){return s.map(o=>({...o}))}function _(o,...a){A.has(o)||(F(o),x(o,"warn",a),console.warn("[lattice]",...a))}function U(o,...a){A.has(o)||(F(o),x(o,"info",a),console.info("[lattice]",...a))}function J(){A.clear(),s.length=0}function L(o,a){const u=new Error(`[lattice] ${o}`);throw a!==void 0&&(u.cause=a),u}function g(o,a){o||L(a)}const j=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function O(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function y(o){return typeof o=="function"}function k(o){return o==null}function S(o){return o==null||o===""}function N(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const M=new Map;function G(o){let a=M.get(o);if(a)return a;if(!o.includes("."))a=u=>u?.[o];else{const u=o.split("."),m=u.length;a=B=>{let ee=B;for(let le=0;le<m;le++){if(ee==null)return;ee=ee[u[le]]}return ee}}return M.set(o,a),a}const ce=new Map;function Z(o){let a=ce.get(o);if(a)return a;if(!o.includes("."))a=(u,m)=>{u!=null&&(u[o]=m)};else{const u=o.split("."),m=u.length-1;a=(B,ee)=>{let le=B;for(let ae=0;ae<m;ae++){if(le==null)return;const he=u[ae];le[he]==null&&(le[he]={}),le=le[he]}le!=null&&(le[u[m]]=ee)}}return ce.set(o,a),a}function h(o,a){return G(a)(o)}function E(o,a,u){Z(a)(o,u)}function D(o){return o?(o.includes(".")?o.slice(o.lastIndexOf(".")+1):o).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,u=>u.toUpperCase()):""}const H={"&":"&","<":"<",">":">",'"':""","'":"'"};function q(o){const a=o==null?"":String(o);return/[&<>"']/.test(a)?a.replace(/[&<>"']/g,u=>H[u]):a}function re(o){return String(o).replace(/\w\S*/g,a=>a[0].toUpperCase()+a.slice(1).toLowerCase())}function ue(o,a,u){if(o!==void 0)return o===!0?{enabled:!0,...u}:o===!1?{enabled:!1}:O(o)?o:{[a]:o,enabled:!0}}function be(o){return o==null?[]:Array.isArray(o)?o:[o]}const c=Object.freeze(new Set(["__proto__","constructor","prototype"]));function d(o,a){if(!O(o))return O(a)?{...a}:a;if(!O(a))return a===void 0?o:a;const u={...o};for(const m of Object.keys(a)){if(c.has(m))continue;const B=a[m];B!==void 0&&(u[m]=O(B)&&O(u[m])?d(u[m],B):B)}return u}function P(o,a){if(!O(o)||!O(a)||o===a)return a;const u=Object.create(Object.getPrototypeOf(o));return Object.assign(u,o,a),u}class z{#e;#t=new Map;#n;constructor(a=256,u=null){this.#e=a,this.#n=u}get size(){return this.#t.size}get max(){return this.#e}set max(a){this.#e=a,this.#r()}has(a){return this.#t.has(a)}get(a){const u=this.#t;if(!u.has(a))return;const m=u.get(a);return u.delete(a),u.set(a,m),m}peek(a){return this.#t.get(a)}set(a,u){const m=this.#t;return m.has(a)&&m.delete(a),m.set(a,u),this.#r(),u}delete(a){const u=this.#t.get(a);return this.#t.delete(a)&&this.#n&&this.#n(u,a),u}clear(){if(this.#n)for(const[a,u]of this.#t)this.#n(u,a);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const a=this.#t;for(;a.size>this.#e;){const u=a.keys().next().value,m=a.get(u);a.delete(u),this.#n&&this.#n(m,u)}}}const Y=new Map;function w(o,a){const u=`${o||""}|${a?JSON.stringify(a):""}`;let m=Y.get(u);return m||(m=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...a}),Y.set(u,m)),m}function T(o,a){if(o===a)return 0;if(o==null)return 1;if(a==null)return-1;if(typeof o=="number"&&typeof a=="number")return Number.isNaN(o)?Number.isNaN(a)?0:1:Number.isNaN(a)||o<a?-1:o>a?1:0;const u=String(o),m=String(a);return u<m?-1:u>m?1:0}function I(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const v=typeof requestAnimationFrame=="function";function e(o){return v?requestAnimationFrame(o):setTimeout(()=>o(I()),16)}function r(o){o!=null&&(v?cancelAnimationFrame(o):clearTimeout(o))}function l(o){let a=null,u=null;const m=()=>{a=null;const ee=u;u=null,o(...ee||[])},B=(...ee)=>{u=ee,a===null&&(a=e(m))};return B.cancel=()=>{r(a),a=null,u=null},B.flush=()=>{a!==null&&(r(a),m())},B}function t(o,a){let u=null,m=null;const B=()=>{if(u=null,m===null)return;const ae=m;m=null,o(...ae),ee()},ee=()=>{u=setTimeout(B,a),typeof u?.unref=="function"&&u.unref()},le=(...ae)=>{u===null?(o(...ae),ee()):(m=ae,clearTimeout(u),ee())};return le.flush=()=>{if(u!==null&&clearTimeout(u),u=null,m===null)return;const ae=m;m=null,o(...ae)},le.cancel=()=>{u!==null&&clearTimeout(u),u=null,m=null},le.pending=()=>u!==null||m!==null,le}function n(o,a=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:a}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let i=0;function f(o="l"){return`${o}${(++i).toString(36)}`}}),Ne("packages/modules/kpi/aggregate.js",function(p,ie){"use strict";Object.defineProperty(p,"AGGREGATIONS",{enumerable:!0,get:function(){return b}}),Object.defineProperty(p,"makeAccumulator",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"accessorFor",{enumerable:!0,get:function(){return x}}),Object.defineProperty(p,"bandFor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(p,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"statusFor",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"barBounds",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"barPercent",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"formatValue",{enumerable:!0,get:function(){return L}});const X=ie("packages/core/src/internal/util.js"),V=X.isNil,C=X.isFunction,A=X.pathGetter,b=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function F(g){if(V(g)||g==="")return null;const j=typeof g=="number"?g:Number(g);return Number.isFinite(j)?j:null}function s(g){switch(g){case"count":{let j=0;return{add(){j+=1},remove(){j-=1},value(){return j}}}case"sum":{let j=0,O=0;return{add(y){const k=F(y);k!==null&&(j+=k,O+=1)},remove(y){const k=F(y);k!==null&&(j-=k,O-=1)},value(){return O>0?j:0}}}case"avg":{let j=0,O=0;return{add(y){const k=F(y);k!==null&&(j+=k,O+=1)},remove(y){const k=F(y);k!==null&&(j-=k,O-=1)},value(){return O>0?j/O:null}}}case"countDistinct":{const j=new Map;return{add(O){V(O)||j.set(O,(j.get(O)||0)+1)},remove(O){if(V(O))return;const y=j.get(O);y&&(y===1?j.delete(O):j.set(O,y-1))},value(){return j.size}}}case"min":case"max":return $(g==="max");default:return null}}function $(g){const j=new Map;let O=null,y=!1;const k=(N,M)=>g?N>M:N<M,S=()=>{let N=null;for(const M of j.keys())(N===null||k(M,N))&&(N=M);return N};return{add(N){const M=F(N);M!==null&&(j.set(M,(j.get(M)||0)+1),!y&&(O===null||k(M,O))&&(O=M))},remove(N){const M=F(N);if(M===null)return;const G=j.get(M);G&&(G===1?(j.delete(M),M===O&&(y=!0)):j.set(M,G-1))},value(){return j.size===0?null:(y&&(O=S(),y=!1),O)}}}function x(g){return C(g)?g:typeof g=="string"&&g?A(g):()=>{}}function W(g,j){if(g==null||Number.isNaN(g))return null;if(Array.isArray(j.bands)){for(const k of j.bands){const S=V(k.min)?-1/0:k.min,N=V(k.max)?1/0:k.max;if(g>=S&&g<N)return k.status??null}return null}const O=j.thresholds;return!O||V(O.warn)||V(O.critical)?null:O.direction==="lowerIsBetter"?g<=O.warn?"good":g<=O.critical?"warn":"critical":g>=O.warn?"good":g>=O.critical?"warn":"critical"}const R="unknown";function _(g,j,O){return O?W(g,j):R}function U(g){if(!g)return null;const j=[];let O=!1;const y=N=>{if(V(N))return!1;const M=Number(N);return Number.isFinite(M)?(j.push(M),!0):!1};if(Array.isArray(g.bands)&&g.bands.length)for(const N of g.bands||[])y(N&&N.min)||(O=!0),y(N&&N.max)||(O=!0);else g.thresholds&&!V(g.thresholds.warn)&&!V(g.thresholds.critical)&&(y(g.thresholds.warn),y(g.thresholds.critical)),O=!0;if(y(g.target),O&&j.push(0),!j.length)return null;const k=Math.min(...j),S=Math.max(...j);return S>k?{lo:k,hi:S}:null}function J(g,j){if(!j||V(g))return null;const O=Number(g);if(!Number.isFinite(O))return null;const y=j.hi-j.lo;return y?Math.max(0,Math.min(1,(O-j.lo)/y))*100:null}function L(g,j,O="—"){if(g==null||Number.isNaN(g))return O;const y=typeof j=="string"?{type:j}:j||{},k=y.type||"number",S=y.locale||void 0,N={};k==="currency"?(N.style="currency",N.currency=y.currency||"USD"):k==="percent"?N.style="percent":k==="compact"&&(N.notation="compact"),V(y.decimals)||(N.minimumFractionDigits=y.decimals,N.maximumFractionDigits=y.decimals);const M=typeof y.prefix=="string"?y.prefix:"",G=typeof y.suffix=="string"?y.suffix:"";try{return M+new Intl.NumberFormat(S,N).format(g)+G}catch{return M+String(g)+G}}}),Ne("packages/core/src/source/tree.js",function(p,ie){"use strict";Object.defineProperty(p,"SYNTHETIC",{enumerable:!0,get:function(){return b}}),Object.defineProperty(p,"buildFromPath",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"buildFromParentKey",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"assignLevels",{enumerable:!0,get:function(){return W}}),Object.defineProperty(p,"resolveTree",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"buildTree",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"indexTree",{enumerable:!0,get:function(){return U}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.warnOnce,A="",b="\0tree:";function F(J,L){return{physical:J,key:L,level:0,children:[],value:void 0}}function s(J,L){const g=[],j=new Map;for(let O=0;O<J.length;O++){const y=J[O],k=L.pathOf(y),S=Array.isArray(k)?k.map(M=>String(M)):[];if(!S.length){const M=F(y,L.keyOf(y));g.push(M);continue}let N=null;for(let M=0;M<S.length;M++){const G=S.slice(0,M+1).join(A),ce=M===S.length-1;let Z=j.get(G);Z&&ce&&Z.physical===-1&&(Z.physical=y,Z.key=L.keyOf(y)),Z||(Z=F(ce?y:-1,ce?L.keyOf(y):b+G),Z.level=M,Z.value=S[M],j.set(G,Z),N?N.children.push(Z):g.push(Z)),N=Z}}return{roots:g,nodes:j}}function $(J,L){const g=new Map,j=[];for(let S=0;S<J.length;S++){const N=J[S],M=L.keyOf(N),G=F(N,M);g.set(M,G);const ce=L.parentOf(N);ce!=null&&ce!==""&&j.push({node:G,parent:String(ce)})}let O=null;const y=new Map;for(const{node:S,parent:N}of j){const M=g.get(N);if(M){y.set(S.key,M);continue}L.orphans&&L.orphans!=="root"&&(O||(O=F(-1,`${b}orphans`),O.value=L.orphans),y.set(S.key,O))}const k=[];for(const S of g.values()){const N=y.get(S.key);N?N.children.push(S):k.push(S)}return O&&O.children.length&&k.push(O),{roots:x(k,g,L.orphans,O),nodes:g}}function x(J,L,g,j){const O=new Set,y=[...J];for(;y.length;){const G=y.pop();if(!O.has(G.key)){O.add(G.key);for(const ce of G.children)y.push(ce)}}const k=[];for(const G of L.values())O.has(G.key)||k.push(G);if(!k.length)return J;const S=!!g&&g!=="root";C("tree.cycle",`tree.parentKey produced ${k.length} row(s) inside a parent cycle; `+(S?`they are shown under "${g}".`:"they are shown at the root."));for(const G of k)G.children=G.children.filter(ce=>O.has(ce.key));if(!S)return[...J,...k];let N=j;const M=[...J];return N||(N=F(-1,`${b}orphans`),N.value=g,M.push(N)),N.children.push(...k),M}function W(J){let L=0;const g=(j,O)=>{for(const y of j)y.level=O,O>L&&(L=O),y.children.length&&g(y.children,O+1)};return g(J,0),L}function R(J,L){if(!J||typeof J!="object")return null;const g=J.path,j=J.parentKey,O=V(J.hasChildren)?y=>!!J.hasChildren(L.dataAt(y)):null;if(V(g))return{mode:"path",pathOf:y=>g(L.dataAt(y)),keyOf:L.keyOf,declaresChildren:O};if(j!=null){const y=V(j)?j:k=>k?.[j];return{mode:"parentKey",parentOf:k=>y(L.dataAt(k)),keyOf:L.keyOf,orphans:J.orphans||"root",declaresChildren:O}}return C("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function _(J,L){const g=L.mode==="path"?s(J,L):$(J,L),j=W(g.roots);return{...g,depth:j}}function U(J,L){const g=new Map,j=O=>{for(let y=0;y<O.length;y++){const k=O[y];if(k.physical>=0){const S=L?L(k.physical):!1,N=S&&k.children.length===0;g.set(k.physical,{level:k.level,posinset:y+1,setsize:O.length,hasChildren:k.children.length>0||S,lazy:N})}k.children.length&&j(k.children)}};return j(J),g}}),Ne("packages/modules/kpi/tree.js",function(p,ie){"use strict";Object.defineProperty(p,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"worseOf",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"resolveHierarchy",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"decorateNodes",{enumerable:!0,get:function(){return g}}),Object.defineProperty(p,"allNodes",{enumerable:!0,get:function(){return j}}),Object.defineProperty(p,"visibleNodes",{enumerable:!0,get:function(){return O}}),Object.defineProperty(p,"branchKeys",{enumerable:!0,get:function(){return y}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.isObject,A=X.warnOnce,b=ie("packages/core/src/source/tree.js"),F=b.resolveTree,s=b.buildTree,$=".",x=Object.freeze({good:1,warn:2,critical:3}),W=Object.freeze([null,"good","warn","critical"]);function R(k){return!!k&&k.kind!=="clock"&&(k.value===null||k.value===void 0)}function _(k,S){const N=Math.max(x[k]||0,x[S]||0);return W[N]}function U(k,S){if(!S.length||k===!1)return null;if(k==null)return S.some(h=>h.id.includes($))&&A("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const N=C(k)?k:{},M=S.map((h,E)=>E),G=h=>S[h].id;if(V(N.path)||N.parentKey!==null&&N.parentKey!==void 0){const h=F(N,{dataAt:E=>S[E].spec,keyOf:G});return h?J({...s(M,h),mode:h.mode},S):null}const ce=typeof N.separator=="string"&&N.separator?N.separator:$;if(!S.some(h=>h.id.includes(ce)))return null;const Z=F({path:h=>String(h).split(ce)},{dataAt:h=>S[h].id,keyOf:G});return J({...s(M,Z),mode:"id"},S)}function J(k,S){const N=new Set,M=new Set(S.map(Z=>Z.id)),G=(Z,h)=>{for(const E of Z){const D=E.physical>=0?E.key:E.value===null||E.value===void 0?"":String(E.value),H=`${h}/${D}`;E.physical>=0?N.add(E.physical):M.has(H)||(E.key=H,M.add(H)),G(E.children,H)}};G(k.roots,"");const ce=S.filter((Z,h)=>!N.has(h)).map(Z=>Z.id);return ce.length&&A("kpi:tree:unplaced",`${ce.length} KPI tile(s) are not on the tree and will not render: ${ce.join(", ")}. Two tiles cannot share one path; a path names the tile's own place, last segment included.`),k}function L(k,S){return k&&k.spec&&k.spec.label!==null&&k.spec.label!==void 0?String(k.spec.label):S!=null?String(S):k?k.label:""}function g(k,S,N,M){const G=(ce,Z,h,E)=>{const D=ce.physical>=0?S[ce.physical]:null,H=D?N.get(D.id):null,q=ce.children.map((d,P)=>G(d,Z+1,P,ce.children.length)),re=H?H.status:null;let ue=x[re]?re:null,be=re==="unknown"||R(H)?1:0,c=H?1:0;for(const d of q)ue=_(ue,d.rollup),be+=d.unknown,c+=d.items;return{key:ce.key,id:H?H.id:null,label:L(D,ce.value),level:Z,posinset:h+1,setsize:E,hasChildren:q.length>0,expanded:q.length>0&&M.has(ce.key),children:q,tile:H,value:H?H.value:null,formatted:H?H.formatted:null,status:re??null,rollup:ue,unknown:be,items:c}};return k.roots.map((ce,Z)=>G(ce,0,Z,k.roots.length))}function j(k){const S=[],N=M=>{for(const G of M)S.push(G),N(G.children)};return N(k),S}function O(k){const S=[],N=M=>{for(const G of M)S.push(G),G.expanded&&N(G.children)};return N(k),S}function y(k){const S=[],N=M=>{for(const G of M)G.children.length&&(S.push(G.key),N(G.children))};return N(k),S}}),Ne("packages/modules/kpi/messages.js",function(p,ie){"use strict";Object.defineProperty(p,"FALLBACK_EN",{enumerable:!0,get:function(){return A}}),Object.defineProperty(p,"resolveMessages",{enumerable:!0,get:function(){return F}}),Object.defineProperty(p,"fallbackT",{enumerable:!0,get:function(){return s}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.isObject,A=Object.freeze({"kpi.status.good":"good","kpi.status.warn":"warn","kpi.status.critical":"critical","kpi.status.unknown":"No data","kpi.status.stale":"No recent data","kpi.engine":"computed by the data engine over every matching row","kpi.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function b($,x){return x?$.replace(/\{(\w+)\}/g,(W,R)=>R in x?String(x[R]):W):$}function F($){const x=C($.messages)&&V($.messages.t)&&$.messages||C($.grid)&&C($.grid.messages)&&V($.grid.messages.t)&&$.grid.messages||null;return(W,R)=>{if(x){let _;try{_=x.t(W,R)}catch{_=null}if(typeof _=="string"&&_&&_!==W)return _}return b(A[W]||W,R)}}const s=F({})}),Ne("packages/modules/kpi/view.js",function(p,ie){"use strict";Object.defineProperty(p,"NS",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"EMPTY_TEXT",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"Emitter",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"injectStyles",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"sparkPoints",{enumerable:!0,get:function(){return L}}),Object.defineProperty(p,"tileMinFor",{enumerable:!0,get:function(){return y}}),Object.defineProperty(p,"renderKPI",{enumerable:!0,get:function(){return G}});const V=ie("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,A=ie("packages/modules/kpi/tree.js").visibleNodes,F=ie("packages/modules/kpi/messages.js").fallbackT,s="lat-kpi",$=F("kpi.status.unknown"),x=F,W=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function R(t,n){return n?t(`kpi.status.${n}`):""}function _(t){return t&&t.stale?"kpi.status.stale":"kpi.status.unknown"}class U{constructor(){this.map=new Map}on(n,i){return this.map.has(n)||this.map.set(n,new Set),this.map.get(n).add(i),()=>this.off(n,i)}off(n,i){this.map.get(n)?.delete(i)}emit(n,i){for(const f of this.map.get(n)||[])f(i)}}function J(t){if(!t||t.getElementById&&t.getElementById(`${s}-styles`))return;const n=t.createElement("style");n.id=`${s}-styles`,n.setAttribute("id",`${s}-styles`),n.textContent=`
|
|
6
|
+
(function(Tt){"use strict";var dt=Object.create(null),gt=Object.create(null);function Ne(p,ie){dt[p]=ie}function pt(p){var ie=gt[p];if(ie)return ie;var X=Object.create(null);gt[p]=X;var V=dt[p];if(!V)throw new Error("[lattice] missing module: "+p);return V(X,pt),X}Ne("packages/core/src/internal/util.js",function(p,ie){"use strict";Object.defineProperty(p,"VERSION",{enumerable:!0,get:function(){return C}}),Object.defineProperty(p,"reportedWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"warnOnce",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"infoOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"resetWarnings",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"fail",{enumerable:!0,get:function(){return L}}),Object.defineProperty(p,"invariant",{enumerable:!0,get:function(){return g}}),Object.defineProperty(p,"DEV",{enumerable:!0,get:function(){return j}}),Object.defineProperty(p,"isObject",{enumerable:!0,get:function(){return O}}),Object.defineProperty(p,"isFunction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(p,"isNil",{enumerable:!0,get:function(){return k}}),Object.defineProperty(p,"isBlank",{enumerable:!0,get:function(){return S}}),Object.defineProperty(p,"isCtor",{enumerable:!0,get:function(){return N}}),Object.defineProperty(p,"pathGetter",{enumerable:!0,get:function(){return G}}),Object.defineProperty(p,"pathSetter",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(p,"getPath",{enumerable:!0,get:function(){return h}}),Object.defineProperty(p,"setPath",{enumerable:!0,get:function(){return E}}),Object.defineProperty(p,"humanise",{enumerable:!0,get:function(){return D}}),Object.defineProperty(p,"escapeHtml",{enumerable:!0,get:function(){return q}}),Object.defineProperty(p,"titleCase",{enumerable:!0,get:function(){return re}}),Object.defineProperty(p,"expand",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(p,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(p,"merge",{enumerable:!0,get:function(){return d}}),Object.defineProperty(p,"mergeRow",{enumerable:!0,get:function(){return P}}),Object.defineProperty(p,"Lru",{enumerable:!0,get:function(){return z}}),Object.defineProperty(p,"collator",{enumerable:!0,get:function(){return w}}),Object.defineProperty(p,"defaultCompare",{enumerable:!0,get:function(){return T}}),Object.defineProperty(p,"now",{enumerable:!0,get:function(){return I}}),Object.defineProperty(p,"nextFrame",{enumerable:!0,get:function(){return e}}),Object.defineProperty(p,"cancelFrame",{enumerable:!0,get:function(){return r}}),Object.defineProperty(p,"frameBatched",{enumerable:!0,get:function(){return l}}),Object.defineProperty(p,"settleDebounce",{enumerable:!0,get:function(){return t}}),Object.defineProperty(p,"whenIdle",{enumerable:!0,get:function(){return n}}),Object.defineProperty(p,"uid",{enumerable:!0,get:function(){return f}});const X="1.75.0";async function V(){return X}const C="1.75.0",A=new Set,b=2e3;function F(o){if(A.add(o),A.size>b){const a=A.values().next().value;a!==void 0&&A.delete(a)}}const s=[],$=500;function x(o,a,u){s.push({key:o,level:a,message:u.map(m=>typeof m=="string"?m:W(m)).join(" "),at:Date.now()}),s.length>$&&s.shift()}function W(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function R(){return s.map(o=>({...o}))}function _(o,...a){A.has(o)||(F(o),x(o,"warn",a),console.warn("[lattice]",...a))}function U(o,...a){A.has(o)||(F(o),x(o,"info",a),console.info("[lattice]",...a))}function J(){A.clear(),s.length=0}function L(o,a){const u=new Error(`[lattice] ${o}`);throw a!==void 0&&(u.cause=a),u}function g(o,a){o||L(a)}const j=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function O(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function y(o){return typeof o=="function"}function k(o){return o==null}function S(o){return o==null||o===""}function N(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const M=new Map;function G(o){let a=M.get(o);if(a)return a;if(!o.includes("."))a=u=>u?.[o];else{const u=o.split("."),m=u.length;a=B=>{let ee=B;for(let le=0;le<m;le++){if(ee==null)return;ee=ee[u[le]]}return ee}}return M.set(o,a),a}const ce=new Map;function Z(o){let a=ce.get(o);if(a)return a;if(!o.includes("."))a=(u,m)=>{u!=null&&(u[o]=m)};else{const u=o.split("."),m=u.length-1;a=(B,ee)=>{let le=B;for(let ae=0;ae<m;ae++){if(le==null)return;const he=u[ae];le[he]==null&&(le[he]={}),le=le[he]}le!=null&&(le[u[m]]=ee)}}return ce.set(o,a),a}function h(o,a){return G(a)(o)}function E(o,a,u){Z(a)(o,u)}function D(o){return o?(o.includes(".")?o.slice(o.lastIndexOf(".")+1):o).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,u=>u.toUpperCase()):""}const H={"&":"&","<":"<",">":">",'"':""","'":"'"};function q(o){const a=o==null?"":String(o);return/[&<>"']/.test(a)?a.replace(/[&<>"']/g,u=>H[u]):a}function re(o){return String(o).replace(/\w\S*/g,a=>a[0].toUpperCase()+a.slice(1).toLowerCase())}function ue(o,a,u){if(o!==void 0)return o===!0?{enabled:!0,...u}:o===!1?{enabled:!1}:O(o)?o:{[a]:o,enabled:!0}}function be(o){return o==null?[]:Array.isArray(o)?o:[o]}const c=Object.freeze(new Set(["__proto__","constructor","prototype"]));function d(o,a){if(!O(o))return O(a)?{...a}:a;if(!O(a))return a===void 0?o:a;const u={...o};for(const m of Object.keys(a)){if(c.has(m))continue;const B=a[m];B!==void 0&&(u[m]=O(B)&&O(u[m])?d(u[m],B):B)}return u}function P(o,a){if(!O(o)||!O(a)||o===a)return a;const u=Object.create(Object.getPrototypeOf(o));return Object.assign(u,o,a),u}class z{#e;#t=new Map;#n;constructor(a=256,u=null){this.#e=a,this.#n=u}get size(){return this.#t.size}get max(){return this.#e}set max(a){this.#e=a,this.#r()}has(a){return this.#t.has(a)}get(a){const u=this.#t;if(!u.has(a))return;const m=u.get(a);return u.delete(a),u.set(a,m),m}peek(a){return this.#t.get(a)}set(a,u){const m=this.#t;return m.has(a)&&m.delete(a),m.set(a,u),this.#r(),u}delete(a){const u=this.#t.get(a);return this.#t.delete(a)&&this.#n&&this.#n(u,a),u}clear(){if(this.#n)for(const[a,u]of this.#t)this.#n(u,a);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const a=this.#t;for(;a.size>this.#e;){const u=a.keys().next().value,m=a.get(u);a.delete(u),this.#n&&this.#n(m,u)}}}const Y=new Map;function w(o,a){const u=`${o||""}|${a?JSON.stringify(a):""}`;let m=Y.get(u);return m||(m=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...a}),Y.set(u,m)),m}function T(o,a){if(o===a)return 0;if(o==null)return 1;if(a==null)return-1;if(typeof o=="number"&&typeof a=="number")return Number.isNaN(o)?Number.isNaN(a)?0:1:Number.isNaN(a)||o<a?-1:o>a?1:0;const u=String(o),m=String(a);return u<m?-1:u>m?1:0}function I(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const v=typeof requestAnimationFrame=="function";function e(o){return v?requestAnimationFrame(o):setTimeout(()=>o(I()),16)}function r(o){o!=null&&(v?cancelAnimationFrame(o):clearTimeout(o))}function l(o){let a=null,u=null;const m=()=>{a=null;const ee=u;u=null,o(...ee||[])},B=(...ee)=>{u=ee,a===null&&(a=e(m))};return B.cancel=()=>{r(a),a=null,u=null},B.flush=()=>{a!==null&&(r(a),m())},B}function t(o,a){let u=null,m=null;const B=()=>{if(u=null,m===null)return;const ae=m;m=null,o(...ae),ee()},ee=()=>{u=setTimeout(B,a),typeof u?.unref=="function"&&u.unref()},le=(...ae)=>{u===null?(o(...ae),ee()):(m=ae,clearTimeout(u),ee())};return le.flush=()=>{if(u!==null&&clearTimeout(u),u=null,m===null)return;const ae=m;m=null,o(...ae)},le.cancel=()=>{u!==null&&clearTimeout(u),u=null,m=null},le.pending=()=>u!==null||m!==null,le}function n(o,a=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:a}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let i=0;function f(o="l"){return`${o}${(++i).toString(36)}`}}),Ne("packages/modules/kpi/aggregate.js",function(p,ie){"use strict";Object.defineProperty(p,"AGGREGATIONS",{enumerable:!0,get:function(){return b}}),Object.defineProperty(p,"makeAccumulator",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"accessorFor",{enumerable:!0,get:function(){return x}}),Object.defineProperty(p,"bandFor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(p,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"statusFor",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"barBounds",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"barPercent",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"formatValue",{enumerable:!0,get:function(){return L}});const X=ie("packages/core/src/internal/util.js"),V=X.isNil,C=X.isFunction,A=X.pathGetter,b=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function F(g){if(V(g)||g==="")return null;const j=typeof g=="number"?g:Number(g);return Number.isFinite(j)?j:null}function s(g){switch(g){case"count":{let j=0;return{add(){j+=1},remove(){j-=1},value(){return j}}}case"sum":{let j=0,O=0;return{add(y){const k=F(y);k!==null&&(j+=k,O+=1)},remove(y){const k=F(y);k!==null&&(j-=k,O-=1)},value(){return O>0?j:0}}}case"avg":{let j=0,O=0;return{add(y){const k=F(y);k!==null&&(j+=k,O+=1)},remove(y){const k=F(y);k!==null&&(j-=k,O-=1)},value(){return O>0?j/O:null}}}case"countDistinct":{const j=new Map;return{add(O){V(O)||j.set(O,(j.get(O)||0)+1)},remove(O){if(V(O))return;const y=j.get(O);y&&(y===1?j.delete(O):j.set(O,y-1))},value(){return j.size}}}case"min":case"max":return $(g==="max");default:return null}}function $(g){const j=new Map;let O=null,y=!1;const k=(N,M)=>g?N>M:N<M,S=()=>{let N=null;for(const M of j.keys())(N===null||k(M,N))&&(N=M);return N};return{add(N){const M=F(N);M!==null&&(j.set(M,(j.get(M)||0)+1),!y&&(O===null||k(M,O))&&(O=M))},remove(N){const M=F(N);if(M===null)return;const G=j.get(M);G&&(G===1?(j.delete(M),M===O&&(y=!0)):j.set(M,G-1))},value(){return j.size===0?null:(y&&(O=S(),y=!1),O)}}}function x(g){return C(g)?g:typeof g=="string"&&g?A(g):()=>{}}function W(g,j){if(g==null||Number.isNaN(g))return null;if(Array.isArray(j.bands)){for(const k of j.bands){const S=V(k.min)?-1/0:k.min,N=V(k.max)?1/0:k.max;if(g>=S&&g<N)return k.status??null}return null}const O=j.thresholds;return!O||V(O.warn)||V(O.critical)?null:O.direction==="lowerIsBetter"?g<=O.warn?"good":g<=O.critical?"warn":"critical":g>=O.warn?"good":g>=O.critical?"warn":"critical"}const R="unknown";function _(g,j,O){return O?W(g,j):R}function U(g){if(!g)return null;const j=[];let O=!1;const y=N=>{if(V(N))return!1;const M=Number(N);return Number.isFinite(M)?(j.push(M),!0):!1};if(Array.isArray(g.bands)&&g.bands.length)for(const N of g.bands||[])y(N&&N.min)||(O=!0),y(N&&N.max)||(O=!0);else g.thresholds&&!V(g.thresholds.warn)&&!V(g.thresholds.critical)&&(y(g.thresholds.warn),y(g.thresholds.critical)),O=!0;if(y(g.target),O&&j.push(0),!j.length)return null;const k=Math.min(...j),S=Math.max(...j);return S>k?{lo:k,hi:S}:null}function J(g,j){if(!j||V(g))return null;const O=Number(g);if(!Number.isFinite(O))return null;const y=j.hi-j.lo;return y?Math.max(0,Math.min(1,(O-j.lo)/y))*100:null}function L(g,j,O="—"){if(g==null||Number.isNaN(g))return O;const y=typeof j=="string"?{type:j}:j||{},k=y.type||"number",S=y.locale||void 0,N={};k==="currency"?(N.style="currency",N.currency=y.currency||"USD"):k==="percent"?N.style="percent":k==="compact"&&(N.notation="compact"),V(y.decimals)||(N.minimumFractionDigits=y.decimals,N.maximumFractionDigits=y.decimals);const M=typeof y.prefix=="string"?y.prefix:"",G=typeof y.suffix=="string"?y.suffix:"";try{return M+new Intl.NumberFormat(S,N).format(g)+G}catch{return M+String(g)+G}}}),Ne("packages/core/src/source/tree.js",function(p,ie){"use strict";Object.defineProperty(p,"SYNTHETIC",{enumerable:!0,get:function(){return b}}),Object.defineProperty(p,"buildFromPath",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"buildFromParentKey",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"assignLevels",{enumerable:!0,get:function(){return W}}),Object.defineProperty(p,"resolveTree",{enumerable:!0,get:function(){return R}}),Object.defineProperty(p,"buildTree",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"indexTree",{enumerable:!0,get:function(){return U}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.warnOnce,A="",b="\0tree:";function F(J,L){return{physical:J,key:L,level:0,children:[],value:void 0}}function s(J,L){const g=[],j=new Map;for(let O=0;O<J.length;O++){const y=J[O],k=L.pathOf(y),S=Array.isArray(k)?k.map(M=>String(M)):[];if(!S.length){const M=F(y,L.keyOf(y));g.push(M);continue}let N=null;for(let M=0;M<S.length;M++){const G=S.slice(0,M+1).join(A),ce=M===S.length-1;let Z=j.get(G);Z&&ce&&Z.physical===-1&&(Z.physical=y,Z.key=L.keyOf(y)),Z||(Z=F(ce?y:-1,ce?L.keyOf(y):b+G),Z.level=M,Z.value=S[M],j.set(G,Z),N?N.children.push(Z):g.push(Z)),N=Z}}return{roots:g,nodes:j}}function $(J,L){const g=new Map,j=[];for(let S=0;S<J.length;S++){const N=J[S],M=L.keyOf(N),G=F(N,M);g.set(M,G);const ce=L.parentOf(N);ce!=null&&ce!==""&&j.push({node:G,parent:String(ce)})}let O=null;const y=new Map;for(const{node:S,parent:N}of j){const M=g.get(N);if(M){y.set(S.key,M);continue}L.orphans&&L.orphans!=="root"&&(O||(O=F(-1,`${b}orphans`),O.value=L.orphans),y.set(S.key,O))}const k=[];for(const S of g.values()){const N=y.get(S.key);N?N.children.push(S):k.push(S)}return O&&O.children.length&&k.push(O),{roots:x(k,g,L.orphans,O),nodes:g}}function x(J,L,g,j){const O=new Set,y=[...J];for(;y.length;){const G=y.pop();if(!O.has(G.key)){O.add(G.key);for(const ce of G.children)y.push(ce)}}const k=[];for(const G of L.values())O.has(G.key)||k.push(G);if(!k.length)return J;const S=!!g&&g!=="root";C("tree.cycle",`tree.parentKey produced ${k.length} row(s) inside a parent cycle; `+(S?`they are shown under "${g}".`:"they are shown at the root."));for(const G of k)G.children=G.children.filter(ce=>O.has(ce.key));if(!S)return[...J,...k];let N=j;const M=[...J];return N||(N=F(-1,`${b}orphans`),N.value=g,M.push(N)),N.children.push(...k),M}function W(J){let L=0;const g=(j,O)=>{for(const y of j)y.level=O,O>L&&(L=O),y.children.length&&g(y.children,O+1)};return g(J,0),L}function R(J,L){if(!J||typeof J!="object")return null;const g=J.path,j=J.parentKey,O=V(J.hasChildren)?y=>!!J.hasChildren(L.dataAt(y)):null;if(V(g))return{mode:"path",pathOf:y=>g(L.dataAt(y)),keyOf:L.keyOf,declaresChildren:O};if(j!=null){const y=V(j)?j:k=>k?.[j];return{mode:"parentKey",parentOf:k=>y(L.dataAt(k)),keyOf:L.keyOf,orphans:J.orphans||"root",declaresChildren:O}}return C("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function _(J,L){const g=L.mode==="path"?s(J,L):$(J,L),j=W(g.roots);return{...g,depth:j}}function U(J,L){const g=new Map,j=O=>{for(let y=0;y<O.length;y++){const k=O[y];if(k.physical>=0){const S=L?L(k.physical):!1,N=S&&k.children.length===0;g.set(k.physical,{level:k.level,posinset:y+1,setsize:O.length,hasChildren:k.children.length>0||S,lazy:N})}k.children.length&&j(k.children)}};return j(J),g}}),Ne("packages/modules/kpi/tree.js",function(p,ie){"use strict";Object.defineProperty(p,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"worseOf",{enumerable:!0,get:function(){return _}}),Object.defineProperty(p,"resolveHierarchy",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"decorateNodes",{enumerable:!0,get:function(){return g}}),Object.defineProperty(p,"allNodes",{enumerable:!0,get:function(){return j}}),Object.defineProperty(p,"visibleNodes",{enumerable:!0,get:function(){return O}}),Object.defineProperty(p,"branchKeys",{enumerable:!0,get:function(){return y}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.isObject,A=X.warnOnce,b=ie("packages/core/src/source/tree.js"),F=b.resolveTree,s=b.buildTree,$=".",x=Object.freeze({good:1,warn:2,critical:3}),W=Object.freeze([null,"good","warn","critical"]);function R(k){return!!k&&k.kind!=="clock"&&(k.value===null||k.value===void 0)}function _(k,S){const N=Math.max(x[k]||0,x[S]||0);return W[N]}function U(k,S){if(!S.length||k===!1)return null;if(k==null)return S.some(h=>h.id.includes($))&&A("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const N=C(k)?k:{},M=S.map((h,E)=>E),G=h=>S[h].id;if(V(N.path)||N.parentKey!==null&&N.parentKey!==void 0){const h=F(N,{dataAt:E=>S[E].spec,keyOf:G});return h?J({...s(M,h),mode:h.mode},S):null}const ce=typeof N.separator=="string"&&N.separator?N.separator:$;if(!S.some(h=>h.id.includes(ce)))return null;const Z=F({path:h=>String(h).split(ce)},{dataAt:h=>S[h].id,keyOf:G});return J({...s(M,Z),mode:"id"},S)}function J(k,S){const N=new Set,M=new Set(S.map(Z=>Z.id)),G=(Z,h)=>{for(const E of Z){const D=E.physical>=0?E.key:E.value===null||E.value===void 0?"":String(E.value),H=`${h}/${D}`;E.physical>=0?N.add(E.physical):M.has(H)||(E.key=H,M.add(H)),G(E.children,H)}};G(k.roots,"");const ce=S.filter((Z,h)=>!N.has(h)).map(Z=>Z.id);return ce.length&&A("kpi:tree:unplaced",`${ce.length} KPI tile(s) are not on the tree and will not render: ${ce.join(", ")}. Two tiles cannot share one path; a path names the tile's own place, last segment included.`),k}function L(k,S){return k&&k.spec&&k.spec.label!==null&&k.spec.label!==void 0?String(k.spec.label):S!=null?String(S):k?k.label:""}function g(k,S,N,M){const G=(ce,Z,h,E)=>{const D=ce.physical>=0?S[ce.physical]:null,H=D?N.get(D.id):null,q=ce.children.map((d,P)=>G(d,Z+1,P,ce.children.length)),re=H?H.status:null;let ue=x[re]?re:null,be=re==="unknown"||R(H)?1:0,c=H?1:0;for(const d of q)ue=_(ue,d.rollup),be+=d.unknown,c+=d.items;return{key:ce.key,id:H?H.id:null,label:L(D,ce.value),level:Z,posinset:h+1,setsize:E,hasChildren:q.length>0,expanded:q.length>0&&M.has(ce.key),children:q,tile:H,value:H?H.value:null,formatted:H?H.formatted:null,status:re??null,rollup:ue,unknown:be,items:c}};return k.roots.map((ce,Z)=>G(ce,0,Z,k.roots.length))}function j(k){const S=[],N=M=>{for(const G of M)S.push(G),N(G.children)};return N(k),S}function O(k){const S=[],N=M=>{for(const G of M)S.push(G),G.expanded&&N(G.children)};return N(k),S}function y(k){const S=[],N=M=>{for(const G of M)G.children.length&&(S.push(G.key),N(G.children))};return N(k),S}}),Ne("packages/modules/kpi/messages.js",function(p,ie){"use strict";Object.defineProperty(p,"FALLBACK_EN",{enumerable:!0,get:function(){return A}}),Object.defineProperty(p,"resolveMessages",{enumerable:!0,get:function(){return F}}),Object.defineProperty(p,"fallbackT",{enumerable:!0,get:function(){return s}});const X=ie("packages/core/src/internal/util.js"),V=X.isFunction,C=X.isObject,A=Object.freeze({"kpi.status.good":"good","kpi.status.warn":"warn","kpi.status.critical":"critical","kpi.status.unknown":"No data","kpi.status.stale":"No recent data","kpi.engine":"computed by the data engine over every matching row","kpi.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function b($,x){return x?$.replace(/\{(\w+)\}/g,(W,R)=>R in x?String(x[R]):W):$}function F($){const x=C($.messages)&&V($.messages.t)&&$.messages||C($.grid)&&C($.grid.messages)&&V($.grid.messages.t)&&$.grid.messages||null;return(W,R)=>{if(x){let _;try{_=x.t(W,R)}catch{_=null}if(typeof _=="string"&&_&&_!==W)return _}return b(A[W]||W,R)}}const s=F({})}),Ne("packages/modules/kpi/view.js",function(p,ie){"use strict";Object.defineProperty(p,"NS",{enumerable:!0,get:function(){return s}}),Object.defineProperty(p,"EMPTY_TEXT",{enumerable:!0,get:function(){return $}}),Object.defineProperty(p,"Emitter",{enumerable:!0,get:function(){return U}}),Object.defineProperty(p,"injectStyles",{enumerable:!0,get:function(){return J}}),Object.defineProperty(p,"sparkPoints",{enumerable:!0,get:function(){return L}}),Object.defineProperty(p,"tileMinFor",{enumerable:!0,get:function(){return y}}),Object.defineProperty(p,"renderKPI",{enumerable:!0,get:function(){return G}});const V=ie("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,A=ie("packages/modules/kpi/tree.js").visibleNodes,F=ie("packages/modules/kpi/messages.js").fallbackT,s="lat-kpi",$=F("kpi.status.unknown"),x=F,W=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function R(t,n){return n?t(`kpi.status.${n}`):""}function _(t){return t&&t.stale?"kpi.status.stale":"kpi.status.unknown"}class U{constructor(){this.map=new Map}on(n,i){return this.map.has(n)||this.map.set(n,new Set),this.map.get(n).add(i),()=>this.off(n,i)}off(n,i){this.map.get(n)?.delete(i)}emit(n,i){for(const f of this.map.get(n)||[])f(i)}}function J(t){if(!t||t.getElementById&&t.getElementById(`${s}-styles`))return;const n=t.createElement("style");n.id=`${s}-styles`,n.setAttribute("id",`${s}-styles`),n.textContent=`
|
|
7
7
|
.${s}{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(var(--${s}-tile-min,160px),1fr));font-family:var(--${s}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));font-size:var(--${s}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));line-height:var(--${s}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)));color:var(--${s}-fg,var(--lattice-foreground));--${s}-meter-w:var(--${s}-meter-width,calc(34px * var(--lat-chrome-scale,1)))}
|
|
8
8
|
.${s}__tile{border:1px solid var(--${s}-border,var(--lattice-border-color,#d7dbe0));border-radius:8px;padding:12px 14px;background:var(--${s}-bg,var(--lattice-background,#fff));display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}
|
|
9
9
|
.${s}__tile:focus-visible{outline:2px solid var(--${s}-focus,var(--lattice-focus-color,#2563eb));outline-offset:2px}
|
package/modules/layout.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.75.0, layout module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
var Le=Object.create(null),Re=Object.create(null);function ye(a,G){Le[a]=G}function De(a){var G=Re[a];if(G)return G;var Y=Object.create(null);Re[a]=Y;var I=Le[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,De),Y}ye("packages/core/src/internal/util.js",function(a,G){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return me}});const Y="1.74.0";async function I(){return Y}const U="1.74.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ae(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ce(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?ce(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function fe(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function de(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function me(r="l"){return`${r}${(++V).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,G){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=G("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ye("packages/modules/shared/autosize.js",function(a,G){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=G("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ye("packages/modules/layout/length.js",function(a,G){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=G("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,G){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,G){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return ce}});const I=G("packages/core/src/internal/util.js").isFunction,U=G("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=G("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
6
|
+
var Le=Object.create(null),Re=Object.create(null);function ye(a,G){Le[a]=G}function De(a){var G=Re[a];if(G)return G;var Y=Object.create(null);Re[a]=Y;var I=Le[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,De),Y}ye("packages/core/src/internal/util.js",function(a,G){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return me}});const Y="1.75.0";async function I(){return Y}const U="1.75.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ae(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ce(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?ce(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function fe(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function de(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function me(r="l"){return`${r}${(++V).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,G){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=G("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ye("packages/modules/shared/autosize.js",function(a,G){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=G("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ye("packages/modules/layout/length.js",function(a,G){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=G("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,G){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,G){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return ce}});const I=G("packages/core/src/internal/util.js").isFunction,U=G("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=G("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
7
7
|
.${n}{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;
|
|
8
8
|
font-family:var(--${n}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
|
|
9
9
|
font-size:var(--${n}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
|
package/modules/layout.min.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.75.0, layout module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(_e){"use strict";var Me=Object.create(null),Ne=Object.create(null);function ae(a,B){Me[a]=B}function Fe(a){var B=Ne[a];if(B)return B;var Y=Object.create(null);Ne[a]=Y;var I=Me[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,Fe),Y}ae("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return ye}});const Y="1.74.0";async function I(){return Y}const U="1.74.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ce(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?fe(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function me(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function ye(r="l"){return`${r}${(++V).toString(36)}`}}),ae("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=B("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ae("packages/modules/shared/autosize.js",function(a,B){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=B("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ae("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=B("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ae("packages/modules/layout/model.js",function(a,B){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ae("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const I=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=B("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
6
|
+
(function(_e){"use strict";var Me=Object.create(null),Ne=Object.create(null);function ae(a,B){Me[a]=B}function Fe(a){var B=Ne[a];if(B)return B;var Y=Object.create(null);Ne[a]=Y;var I=Me[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,Fe),Y}ae("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return ye}});const Y="1.75.0";async function I(){return Y}const U="1.75.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ce(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?fe(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function me(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function ye(r="l"){return`${r}${(++V).toString(36)}`}}),ae("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=B("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ae("packages/modules/shared/autosize.js",function(a,B){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=B("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ae("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=B("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ae("packages/modules/layout/model.js",function(a,B){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ae("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const I=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=B("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
7
7
|
.${n}{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;
|
|
8
8
|
font-family:var(--${n}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
|
|
9
9
|
font-size:var(--${n}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
|
package/modules/layout.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.75.0, layout module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(_e){"use strict";var Me=Object.create(null),Ne=Object.create(null);function ae(a,B){Me[a]=B}function Fe(a){var B=Ne[a];if(B)return B;var Y=Object.create(null);Ne[a]=Y;var I=Me[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,Fe),Y}ae("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return ye}});const Y="1.74.0";async function I(){return Y}const U="1.74.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ce(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?fe(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function me(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function ye(r="l"){return`${r}${(++V).toString(36)}`}}),ae("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=B("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ae("packages/modules/shared/autosize.js",function(a,B){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=B("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ae("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=B("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ae("packages/modules/layout/model.js",function(a,B){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ae("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const I=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=B("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
6
|
+
(function(_e){"use strict";var Me=Object.create(null),Ne=Object.create(null);function ae(a,B){Me[a]=B}function Fe(a){var B=Ne[a];if(B)return B;var Y=Object.create(null);Ne[a]=Y;var I=Me[a];if(!I)throw new Error("[lattice] missing module: "+a);return I(Y,Fe),Y}ae("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return b}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return S}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return y}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return H}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return ye}});const Y="1.75.0";async function I(){return Y}const U="1.75.0",F=new Set,D=2e3;function _(r){if(F.add(r),F.size>D){const l=F.values().next().value;l!==void 0&&F.delete(l)}}const N=[],g=500;function E(r,l,d){N.push({key:r,level:l,message:d.map(z=>typeof z=="string"?z:n(z)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function $(){return N.map(r=>({...r}))}function A(r,...l){F.has(r)||(_(r),E(r,"warn",l),console.warn("[lattice]",...l))}function j(r,...l){F.has(r)||(_(r),E(r,"info",l),console.info("[lattice]",...l))}function b(){F.clear(),N.length=0}function v(r,l){const d=new Error(`[lattice] ${r}`);throw l!==void 0&&(d.cause=l),d}function P(r,l){r||v(l)}const S=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function W(r){return typeof r=="function"}function w(r){return r==null}function O(r){return r==null||r===""}function X(r){return typeof r!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(r))?!0:!!(r.prototype&&Object.getOwnPropertyNames(r.prototype).length>1)}const k=new Map;function T(r){let l=k.get(r);if(l)return l;if(!r.includes("."))l=d=>d?.[r];else{const d=r.split("."),z=d.length;l=q=>{let Z=q;for(let K=0;K<z;K++){if(Z==null)return;Z=Z[d[K]]}return Z}}return k.set(r,l),l}const J=new Map;function Q(r){let l=J.get(r);if(l)return l;if(!r.includes("."))l=(d,z)=>{d!=null&&(d[r]=z)};else{const d=r.split("."),z=d.length-1;l=(q,Z)=>{let K=q;for(let ee=0;ee<z;ee++){if(K==null)return;const be=d[ee];K[be]==null&&(K[be]={}),K=K[be]}K!=null&&(K[d[z]]=Z)}}return J.set(r,l),l}function oe(r,l){return T(l)(r)}function se(r,l,d){Q(l)(r,d)}function ne(r){return r?(r.includes(".")?r.slice(r.lastIndexOf(".")+1):r).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,d=>d.toUpperCase()):""}const ge={"&":"&","<":"<",">":">",'"':""","'":"'"};function ce(r){const l=r==null?"":String(r);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,d=>ge[d]):l}function we(r){return String(r).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(r,l,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[l]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const le=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,l){if(!M(r))return M(l)?{...l}:l;if(!M(l))return l===void 0?r:l;const d={...r};for(const z of Object.keys(l)){if(le.has(z))continue;const q=l[z];q!==void 0&&(d[z]=M(q)&&M(d[z])?fe(d[z],q):q)}return d}function u(r,l){if(!M(r)||!M(l)||r===l)return l;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,l),d}class i{#t;#e=new Map;#n;constructor(l=256,d=null){this.#t=l,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(l){this.#t=l,this.#i()}has(l){return this.#e.has(l)}get(l){const d=this.#e;if(!d.has(l))return;const z=d.get(l);return d.delete(l),d.set(l,z),z}peek(l){return this.#e.get(l)}set(l,d){const z=this.#e;return z.has(l)&&z.delete(l),z.set(l,d),this.#i(),d}delete(l){const d=this.#e.get(l);return this.#e.delete(l)&&this.#n&&this.#n(d,l),d}clear(){if(this.#n)for(const[l,d]of this.#e)this.#n(d,l);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const l=this.#e;for(;l.size>this.#t;){const d=l.keys().next().value,z=l.get(d);l.delete(d),this.#n&&this.#n(z,d)}}}const c=new Map;function p(r,l){const d=`${r||""}|${l?JSON.stringify(l):""}`;let z=c.get(d);return z||(z=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...l}),c.set(d,z)),z}function y(r,l){if(r===l)return 0;if(r==null)return 1;if(l==null)return-1;if(typeof r=="number"&&typeof l=="number")return Number.isNaN(r)?Number.isNaN(l)?0:1:Number.isNaN(l)||r<l?-1:r>l?1:0;const d=String(r),z=String(l);return d<z?-1:d>z?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(r){return L?requestAnimationFrame(r):setTimeout(()=>r(C()),16)}function ie(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let l=null,d=null;const z=()=>{l=null;const Z=d;d=null,r(...Z||[])},q=(...Z)=>{d=Z,l===null&&(l=H(z))};return q.cancel=()=>{ie(l),l=null,d=null},q.flush=()=>{l!==null&&(ie(l),z())},q}function ue(r,l){let d=null,z=null;const q=()=>{if(d=null,z===null)return;const ee=z;z=null,r(...ee),Z()},Z=()=>{d=setTimeout(q,l),typeof d?.unref=="function"&&d.unref()},K=(...ee)=>{d===null?(r(...ee),Z()):(z=ee,clearTimeout(d),Z())};return K.flush=()=>{if(d!==null&&clearTimeout(d),d=null,z===null)return;const ee=z;z=null,r(...ee)},K.cancel=()=>{d!==null&&clearTimeout(d),d=null,z=null},K.pending=()=>d!==null||z!==null,K}function me(r,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:l}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let V=0;function ye(r="l"){return`${r}${(++V).toString(36)}`}}),ae("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return g}});const Y=B("packages/core/src/internal/util.js"),I=Y.isFunction,U=Y.warnOnce,F="*",D=new Set(["api","user","init","ai"]);function _(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,$){if(!I($))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add($),()=>this.off(n,$)}off(n,$){const A=this.#t.get(n);A&&A.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const A=this.#t.get(n),j=this.#t.get(F);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...$||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,F)}#n(n,$,A){for(let j=0;j<n.length;j++)try{n[j]($)}catch(b){U(`${this.#e}.emit.throw:${A}:${_(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,$,A){const j=A??($&&$.origin),b=D.has(j)?j:"user";let v=!1,P=null;const S=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...$||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){S(k)}},W=this.#t.get(n);if(!W||W.size===0)return!0;const w=[...W],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const J=T(M);J&&I(J.then)?X.push(J):J===!1&&S("prevented")}catch(J){S("error"),U(`${this.#e}.beforeThrow:${n}:${_(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?(S("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&S("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit($,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&I(b.then)?b.then(P=>P?j():v()):j()}}),ae("packages/modules/shared/autosize.js",function(a,B){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const I=B("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function F(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function D(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function _(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=()=>{if(b)return!1;const w=n();if(!Number.isFinite(w)||w<=0||j!=null&&Math.abs(w-j)<A)return!1;j=w,b=!0;try{$(w)}finally{b=!1}return!0};v();const P=E[0],S=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=S&&S.ResizeObserver;let W=null;if(typeof M=="function"&&E.length){W=new M(()=>{v()});for(const w of E)w&&typeof W.observe=="function"&&W.observe(w)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:v,get applied(){return j},release(){if(W&&typeof W.disconnect=="function")try{W.disconnect()}catch{}W=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},A=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let j=null,b=!1;const v=O=>{if(j==null)return!0;for(const[X,k]of Object.entries(O)){if(!Number.isFinite(k)||k<=0)continue;const T=j[X];if(!Number.isFinite(T)||Math.abs(k-T)>=A)return!0}return!1},P=()=>{if(b)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(k=>Number.isFinite(k)&&k>0)||!v(O))return!1;j={...j,...O},b=!0;try{$(O)}finally{b=!1}return!0};P();const S=E[0],M=g&&g.view||S&&S.ownerDocument&&S.ownerDocument.defaultView||globalThis,W=M&&M.ResizeObserver;let w=null;if(typeof W=="function"&&E.length){w=new W(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&I("shared.autosize.no-resize-observer","ResizeObserver is unavailable; this view was sized once at mount and will not follow its container.");return{refresh:P,get applied(){return j},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ae("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return _}});const I=B("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function F(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:D(N,g,E);if(typeof N!="string")return D(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:D(N,g,E)}function D(N,g,E){return I(`layout.length:${E}`,`layout: ${E} was set to ${JSON.stringify(N)}, which is not a length this module understands (a number of pixels, or a string like '200px', '25%', '1fr', '2rem'). Using ${g}.`),g}function _(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ae("packages/modules/layout/model.js",function(a,B){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return j}});function Y(b,v){const P=Math.trunc(Number(b));return Number.isFinite(P)&&P>0?P:v}function I(b,v){return b.xPos<v.xPos+v.xSize&&v.xPos<b.xPos+b.xSize&&b.yPos<v.yPos+v.ySize&&v.yPos<b.yPos+b.ySize}function U(b,v){const P=Math.max(1,Math.min(b.xSize,v));return{xPos:Math.max(1,Math.min(b.xPos,v-P+1)),yPos:Math.max(1,b.yPos),xSize:P,ySize:Math.max(1,b.ySize)}}function F(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||D(b,v)}function D(b,v){const P=String(b.id),S=String(v.id);return P<S?-1:P>S?1:0}function _(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||D(b,v)}function N(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(F),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}S.push(w)}return b}function g(b){const v=[];for(const P of[...b].sort(F)){for(;P.yPos>1;){const S={...P,yPos:P.yPos-1};if(v.some(M=>I(S,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),S=P?[P]:[],M=b.filter(w=>w!==P).sort(_),W=b.length+2;for(const w of M){for(let O=0;O<W;O++){const X=S.filter(k=>I(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}S.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(_)){for(;P.xPos>1;){const S={...P,xPos:P.xPos-1};if(v.some(M=>I(S,M)))break;P.xPos-=1}v.push(P)}return b}function $(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),g(b))}function A(b,v,P,S){const M=Math.max(1,Math.min(P,v)),W=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=W+S;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,S)};if(!b.some(k=>I(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:W}}function j(b,v){return b.reduce((P,S)=>Math.max(P,S.yPos+S.ySize-1),v)}}),ae("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"boundPlacement",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"commitPlacement",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const I=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),F=U.cssLength,D=U.tracks,_=B("packages/modules/layout/model.js"),N=_.clampToColumns,g=_.compact,E=_.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const i=u.createElement("style");i.id=`${n}-styles`,i.setAttribute("id",`${n}-styles`),i.textContent=`
|
|
7
7
|
.${n}{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;
|
|
8
8
|
font-family:var(--${n}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
|
|
9
9
|
font-size:var(--${n}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
|
package/modules/list.d.ts
CHANGED