@toclocoinc/lattice-grid 1.71.1 → 1.71.3

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.
Files changed (195) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +42 -8
  5. package/docs/api/adapters.html +1 -1
  6. package/docs/api/ai.html +1 -1
  7. package/docs/api/alarms.html +1 -1
  8. package/docs/api/charts.html +39 -5
  9. package/docs/api/data-router.html +1 -1
  10. package/docs/api/gantt.html +1 -1
  11. package/docs/api/grid.html +2 -2
  12. package/docs/api/index.html +2 -2
  13. package/docs/api/kanban.html +1 -1
  14. package/docs/api/kpi.html +1 -1
  15. package/docs/api/layout.html +1 -1
  16. package/docs/api/mock-socket.html +1 -1
  17. package/docs/api/tabs.html +1 -1
  18. package/docs/api/types.html +1 -1
  19. package/docs/api-detail.html +4 -4
  20. package/docs/warnings.json +13 -2
  21. package/lattice-grid.d.ts +31 -7
  22. package/lattice-grid.esm.min.js +3 -3
  23. package/lattice-grid.min.cjs +3 -3
  24. package/lattice-grid.min.js +3 -3
  25. package/modules/ai.d.ts +1 -1
  26. package/modules/ai.esm.min.js +2 -2
  27. package/modules/ai.min.cjs +2 -2
  28. package/modules/ai.min.js +2 -2
  29. package/modules/alarms.d.ts +1 -1
  30. package/modules/alarms.esm.min.js +2 -2
  31. package/modules/alarms.min.cjs +2 -2
  32. package/modules/alarms.min.js +2 -2
  33. package/modules/angular.d.ts +1 -1
  34. package/modules/angular.esm.min.js +2 -2
  35. package/modules/angular.min.cjs +2 -2
  36. package/modules/angular.min.js +2 -2
  37. package/modules/chart-alluvial.d.ts +1 -1
  38. package/modules/chart-alluvial.esm.min.js +1 -1
  39. package/modules/chart-alluvial.min.cjs +1 -1
  40. package/modules/chart-alluvial.min.js +1 -1
  41. package/modules/chart-arc.d.ts +1 -1
  42. package/modules/chart-arc.esm.min.js +1 -1
  43. package/modules/chart-arc.min.cjs +1 -1
  44. package/modules/chart-arc.min.js +1 -1
  45. package/modules/chart-bubblemap.d.ts +1 -1
  46. package/modules/chart-bubblemap.esm.min.js +1 -1
  47. package/modules/chart-bubblemap.min.cjs +1 -1
  48. package/modules/chart-bubblemap.min.js +1 -1
  49. package/modules/chart-bump.d.ts +1 -1
  50. package/modules/chart-bump.esm.min.js +1 -1
  51. package/modules/chart-bump.min.cjs +1 -1
  52. package/modules/chart-bump.min.js +1 -1
  53. package/modules/chart-calendar.d.ts +1 -1
  54. package/modules/chart-calendar.esm.min.js +1 -1
  55. package/modules/chart-calendar.min.cjs +1 -1
  56. package/modules/chart-calendar.min.js +1 -1
  57. package/modules/chart-decomposition.d.ts +1 -1
  58. package/modules/chart-decomposition.esm.min.js +1 -1
  59. package/modules/chart-decomposition.min.cjs +1 -1
  60. package/modules/chart-decomposition.min.js +1 -1
  61. package/modules/chart-diverging.d.ts +1 -1
  62. package/modules/chart-diverging.esm.min.js +1 -1
  63. package/modules/chart-diverging.min.cjs +1 -1
  64. package/modules/chart-diverging.min.js +1 -1
  65. package/modules/chart-dumbbell.d.ts +1 -1
  66. package/modules/chart-dumbbell.esm.min.js +1 -1
  67. package/modules/chart-dumbbell.min.cjs +1 -1
  68. package/modules/chart-dumbbell.min.js +1 -1
  69. package/modules/chart-fan.d.ts +1 -1
  70. package/modules/chart-fan.esm.min.js +1 -1
  71. package/modules/chart-fan.min.cjs +1 -1
  72. package/modules/chart-fan.min.js +1 -1
  73. package/modules/chart-hexbin.d.ts +1 -1
  74. package/modules/chart-hexbin.esm.min.js +1 -1
  75. package/modules/chart-hexbin.min.cjs +1 -1
  76. package/modules/chart-hexbin.min.js +1 -1
  77. package/modules/chart-hexmap.d.ts +1 -1
  78. package/modules/chart-hexmap.esm.min.js +1 -1
  79. package/modules/chart-hexmap.min.cjs +1 -1
  80. package/modules/chart-hexmap.min.js +1 -1
  81. package/modules/chart-icicle.d.ts +1 -1
  82. package/modules/chart-icicle.esm.min.js +1 -1
  83. package/modules/chart-icicle.min.cjs +1 -1
  84. package/modules/chart-icicle.min.js +1 -1
  85. package/modules/chart-markermap.d.ts +1 -1
  86. package/modules/chart-markermap.esm.min.js +1 -1
  87. package/modules/chart-markermap.min.cjs +1 -1
  88. package/modules/chart-markermap.min.js +1 -1
  89. package/modules/chart-parallel.d.ts +1 -1
  90. package/modules/chart-parallel.esm.min.js +1 -1
  91. package/modules/chart-parallel.min.cjs +1 -1
  92. package/modules/chart-parallel.min.js +1 -1
  93. package/modules/chart-ridgeline.d.ts +1 -1
  94. package/modules/chart-ridgeline.esm.min.js +1 -1
  95. package/modules/chart-ridgeline.min.cjs +1 -1
  96. package/modules/chart-ridgeline.min.js +1 -1
  97. package/modules/chart-roc.d.ts +1 -1
  98. package/modules/chart-roc.esm.min.js +1 -1
  99. package/modules/chart-roc.min.cjs +1 -1
  100. package/modules/chart-roc.min.js +1 -1
  101. package/modules/chart-slope.d.ts +1 -1
  102. package/modules/chart-slope.esm.min.js +1 -1
  103. package/modules/chart-slope.min.cjs +1 -1
  104. package/modules/chart-slope.min.js +1 -1
  105. package/modules/chart-splom.d.ts +1 -1
  106. package/modules/chart-splom.esm.min.js +1 -1
  107. package/modules/chart-splom.min.cjs +1 -1
  108. package/modules/chart-splom.min.js +1 -1
  109. package/modules/chart-waffle.d.ts +1 -1
  110. package/modules/chart-waffle.esm.min.js +1 -1
  111. package/modules/chart-waffle.min.cjs +1 -1
  112. package/modules/chart-waffle.min.js +1 -1
  113. package/modules/charts.d.ts +1 -1
  114. package/modules/charts.esm.min.js +13 -9
  115. package/modules/charts.esm.min.js.map +2 -2
  116. package/modules/charts.min.cjs +141 -137
  117. package/modules/charts.min.js +141 -137
  118. package/modules/charts.min.js.map +2 -2
  119. package/modules/data-router.d.ts +1 -1
  120. package/modules/data-router.esm.min.js +2 -2
  121. package/modules/data-router.min.cjs +2 -2
  122. package/modules/data-router.min.js +2 -2
  123. package/modules/devtools.d.ts +1 -1
  124. package/modules/devtools.esm.min.js +1 -1
  125. package/modules/devtools.min.cjs +1 -1
  126. package/modules/devtools.min.js +1 -1
  127. package/modules/dhtmlx-compat.d.ts +1 -1
  128. package/modules/dhtmlx-compat.esm.min.js +2 -2
  129. package/modules/dhtmlx-compat.min.cjs +2 -2
  130. package/modules/dhtmlx-compat.min.js +2 -2
  131. package/modules/gantt.d.ts +1 -1
  132. package/modules/gantt.esm.min.js +2 -2
  133. package/modules/gantt.min.cjs +2 -2
  134. package/modules/gantt.min.js +2 -2
  135. package/modules/geo-europe-nuts.d.ts +1 -1
  136. package/modules/geo-europe-nuts.esm.min.js +1 -1
  137. package/modules/geo-europe-nuts.min.cjs +1 -1
  138. package/modules/geo-europe-nuts.min.js +1 -1
  139. package/modules/geo-uk.d.ts +1 -1
  140. package/modules/geo-uk.esm.min.js +1 -1
  141. package/modules/geo-uk.min.cjs +1 -1
  142. package/modules/geo-uk.min.js +1 -1
  143. package/modules/geo-us-states.d.ts +1 -1
  144. package/modules/geo-us-states.esm.min.js +1 -1
  145. package/modules/geo-us-states.min.cjs +1 -1
  146. package/modules/geo-us-states.min.js +1 -1
  147. package/modules/geo-world-110m.d.ts +1 -1
  148. package/modules/geo-world-110m.esm.min.js +1 -1
  149. package/modules/geo-world-110m.min.cjs +1 -1
  150. package/modules/geo-world-110m.min.js +1 -1
  151. package/modules/geo-world-50m.d.ts +1 -1
  152. package/modules/geo-world-50m.esm.min.js +1 -1
  153. package/modules/geo-world-50m.min.cjs +1 -1
  154. package/modules/geo-world-50m.min.js +1 -1
  155. package/modules/htmx.d.ts +1 -1
  156. package/modules/htmx.esm.min.js +3 -3
  157. package/modules/htmx.min.cjs +3 -3
  158. package/modules/htmx.min.js +3 -3
  159. package/modules/kanban.d.ts +1 -1
  160. package/modules/kanban.esm.min.js +2 -2
  161. package/modules/kanban.min.cjs +2 -2
  162. package/modules/kanban.min.js +2 -2
  163. package/modules/kpi.d.ts +1 -1
  164. package/modules/kpi.esm.min.js +2 -2
  165. package/modules/kpi.min.cjs +2 -2
  166. package/modules/kpi.min.js +2 -2
  167. package/modules/layout.d.ts +1 -1
  168. package/modules/layout.esm.min.js +2 -2
  169. package/modules/layout.min.cjs +2 -2
  170. package/modules/layout.min.js +2 -2
  171. package/modules/mock-socket.d.ts +1 -1
  172. package/modules/mock-socket.esm.min.js +1 -1
  173. package/modules/mock-socket.min.cjs +1 -1
  174. package/modules/mock-socket.min.js +1 -1
  175. package/modules/react.d.ts +1 -1
  176. package/modules/react.esm.min.js +2 -2
  177. package/modules/react.min.cjs +2 -2
  178. package/modules/react.min.js +2 -2
  179. package/modules/svelte.d.ts +1 -1
  180. package/modules/svelte.esm.min.js +2 -2
  181. package/modules/svelte.min.cjs +2 -2
  182. package/modules/svelte.min.js +2 -2
  183. package/modules/tabs.d.ts +1 -1
  184. package/modules/tabs.esm.min.js +2 -2
  185. package/modules/tabs.min.cjs +2 -2
  186. package/modules/tabs.min.js +2 -2
  187. package/modules/vue.d.ts +1 -1
  188. package/modules/vue.esm.min.js +2 -2
  189. package/modules/vue.min.cjs +2 -2
  190. package/modules/vue.min.js +2 -2
  191. package/modules/webcomponent.d.ts +1 -1
  192. package/modules/webcomponent.esm.min.js +3 -3
  193. package/modules/webcomponent.min.cjs +3 -3
  194. package/modules/webcomponent.min.js +3 -3
  195. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, kpi module
2
+ * Lattice Grid 1.71.3, kpi module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(lt){"use strict";var We=Object.create(null),qe=Object.create(null);function ve(g,ce){We[g]=ce}function Ye(g){var ce=qe[g];if(ce)return ce;var te=Object.create(null);qe[g]=te;var X=We[g];if(!X)throw new Error("[lattice] missing module: "+g);return X(te,Ye),te}ve("packages/core/src/internal/util.js",function(g,ce){"use strict";Object.defineProperty(g,"VERSION",{enumerable:!0,get:function(){return D}}),Object.defineProperty(g,"reportedWarnings",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"infoOnce",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"resetWarnings",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"fail",{enumerable:!0,get:function(){return J}}),Object.defineProperty(g,"invariant",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"DEV",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"isObject",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"isFunction",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(g,"isBlank",{enumerable:!0,get:function(){return $}}),Object.defineProperty(g,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(g,"pathGetter",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"pathSetter",{enumerable:!0,get:function(){return B}}),Object.defineProperty(g,"getPath",{enumerable:!0,get:function(){return h}}),Object.defineProperty(g,"setPath",{enumerable:!0,get:function(){return y}}),Object.defineProperty(g,"humanise",{enumerable:!0,get:function(){return C}}),Object.defineProperty(g,"escapeHtml",{enumerable:!0,get:function(){return z}}),Object.defineProperty(g,"titleCase",{enumerable:!0,get:function(){return re}}),Object.defineProperty(g,"expand",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(g,"toArray",{enumerable:!0,get:function(){return de}}),Object.defineProperty(g,"merge",{enumerable:!0,get:function(){return S}}),Object.defineProperty(g,"mergeRow",{enumerable:!0,get:function(){return K}}),Object.defineProperty(g,"Lru",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(g,"collator",{enumerable:!0,get:function(){return v}}),Object.defineProperty(g,"defaultCompare",{enumerable:!0,get:function(){return x}}),Object.defineProperty(g,"now",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"nextFrame",{enumerable:!0,get:function(){return n}}),Object.defineProperty(g,"cancelFrame",{enumerable:!0,get:function(){return o}}),Object.defineProperty(g,"frameBatched",{enumerable:!0,get:function(){return c}}),Object.defineProperty(g,"settleDebounce",{enumerable:!0,get:function(){return t}}),Object.defineProperty(g,"whenIdle",{enumerable:!0,get:function(){return r}}),Object.defineProperty(g,"uid",{enumerable:!0,get:function(){return a}});const te="1.71.1";async function X(){return te}const D="1.71.1",k=new Set,m=2e3;function R(u){if(k.add(u),k.size>m){const s=k.values().next().value;s!==void 0&&k.delete(s)}}const l=[],P=500;function _(u,s,f){l.push({key:u,level:s,message:f.map(b=>typeof b=="string"?b:W(b)).join(" "),at:Date.now()}),l.length>P&&l.shift()}function W(u){if(u instanceof Error)return u.message;try{return JSON.stringify(u)}catch{return String(u)}}function I(){return l.map(u=>({...u}))}function U(u,...s){k.has(u)||(R(u),_(u,"warn",s),console.warn("[lattice]",...s))}function V(u,...s){k.has(u)||(R(u),_(u,"info",s),console.info("[lattice]",...s))}function ee(){k.clear(),l.length=0}function J(u,s){const f=new Error(`[lattice] ${u}`);throw s!==void 0&&(f.cause=s),f}function p(u,s){u||J(s)}const N=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function O(u){return u!==null&&typeof u=="object"&&!Array.isArray(u)}function d(u){return typeof u=="function"}function w(u){return u==null}function $(u){return u==null||u===""}function A(u){return typeof u!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(u))?!0:!!(u.prototype&&Object.getOwnPropertyNames(u.prototype).length>1)}const L=new Map;function G(u){let s=L.get(u);if(s)return s;if(!u.includes("."))s=f=>f?.[u];else{const f=u.split("."),b=f.length;s=T=>{let ne=T;for(let ie=0;ie<b;ie++){if(ne==null)return;ne=ne[f[ie]]}return ne}}return L.set(u,s),s}const le=new Map;function B(u){let s=le.get(u);if(s)return s;if(!u.includes("."))s=(f,b)=>{f!=null&&(f[u]=b)};else{const f=u.split("."),b=f.length-1;s=(T,ne)=>{let ie=T;for(let F=0;F<b;F++){if(ie==null)return;const q=f[F];ie[q]==null&&(ie[q]={}),ie=ie[q]}ie!=null&&(ie[f[b]]=ne)}}return le.set(u,s),s}function h(u,s){return G(s)(u)}function y(u,s,f){B(s)(u,f)}function C(u){return u?(u.includes(".")?u.slice(u.lastIndexOf(".")+1):u).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(/^./,f=>f.toUpperCase()):""}const M={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function z(u){const s=u==null?"":String(u);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,f=>M[f]):s}function re(u){return String(u).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ae(u,s,f){if(u!==void 0)return u===!0?{enabled:!0,...f}:u===!1?{enabled:!1}:O(u)?u:{[s]:u,enabled:!0}}function de(u){return u==null?[]:Array.isArray(u)?u:[u]}const j=Object.freeze(new Set(["__proto__","constructor","prototype"]));function S(u,s){if(!O(u))return O(s)?{...s}:s;if(!O(s))return s===void 0?u:s;const f={...u};for(const b of Object.keys(s)){if(j.has(b))continue;const T=s[b];T!==void 0&&(f[b]=O(T)&&O(f[b])?S(f[b],T):T)}return f}function K(u,s){if(!O(u)||!O(s)||u===s)return s;const f=Object.create(Object.getPrototypeOf(u));return Object.assign(f,u,s),f}class Q{#t;#e=new Map;#n;constructor(s=256,f=null){this.#t=s,this.#n=f}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#r()}has(s){return this.#e.has(s)}get(s){const f=this.#e;if(!f.has(s))return;const b=f.get(s);return f.delete(s),f.set(s,b),b}peek(s){return this.#e.get(s)}set(s,f){const b=this.#e;return b.has(s)&&b.delete(s),b.set(s,f),this.#r(),f}delete(s){const f=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(f,s),f}clear(){if(this.#n)for(const[s,f]of this.#e)this.#n(f,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const s=this.#e;for(;s.size>this.#t;){const f=s.keys().next().value,b=s.get(f);s.delete(f),this.#n&&this.#n(b,f)}}}const fe=new Map;function v(u,s){const f=`${u||""}|${s?JSON.stringify(s):""}`;let b=fe.get(f);return b||(b=new Intl.Collator(u||void 0,{numeric:!0,sensitivity:"variant",...s}),fe.set(f,b)),b}function x(u,s){if(u===s)return 0;if(u==null)return 1;if(s==null)return-1;if(typeof u=="number"&&typeof s=="number")return Number.isNaN(u)?Number.isNaN(s)?0:1:Number.isNaN(s)||u<s?-1:u>s?1:0;const f=String(u),b=String(s);return f<b?-1:f>b?1:0}function E(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const e=typeof requestAnimationFrame=="function";function n(u){return e?requestAnimationFrame(u):setTimeout(()=>u(E()),16)}function o(u){u!=null&&(e?cancelAnimationFrame(u):clearTimeout(u))}function c(u){let s=null,f=null;const b=()=>{s=null;const ne=f;f=null,u(...ne||[])},T=(...ne)=>{f=ne,s===null&&(s=n(b))};return T.cancel=()=>{o(s),s=null,f=null},T.flush=()=>{s!==null&&(o(s),b())},T}function t(u,s){let f=null,b=null;const T=()=>{if(f=null,b===null)return;const F=b;b=null,u(...F),ne()},ne=()=>{f=setTimeout(T,s),typeof f?.unref=="function"&&f.unref()},ie=(...F)=>{f===null?(u(...F),ne()):(b=F,clearTimeout(f),ne())};return ie.flush=()=>{if(f!==null&&clearTimeout(f),f=null,b===null)return;const F=b;b=null,u(...F)},ie.cancel=()=>{f!==null&&clearTimeout(f),f=null,b=null},ie.pending=()=>f!==null||b!==null,ie}function r(u,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(u,{timeout:s}):setTimeout(()=>u({timeRemaining:()=>0,didTimeout:!0}),1)}let i=0;function a(u="l"){return`${u}${(++i).toString(36)}`}}),ve("packages/modules/kpi/aggregate.js",function(g,ce){"use strict";Object.defineProperty(g,"AGGREGATIONS",{enumerable:!0,get:function(){return m}}),Object.defineProperty(g,"makeAccumulator",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"accessorFor",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"bandFor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"statusFor",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"barBounds",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"barPercent",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"formatValue",{enumerable:!0,get:function(){return J}});const te=ce("packages/core/src/internal/util.js"),X=te.isNil,D=te.isFunction,k=te.pathGetter,m=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function R(p){if(X(p)||p==="")return null;const N=typeof p=="number"?p:Number(p);return Number.isFinite(N)?N:null}function l(p){switch(p){case"count":{let N=0;return{add(){N+=1},remove(){N-=1},value(){return N}}}case"sum":{let N=0,O=0;return{add(d){const w=R(d);w!==null&&(N+=w,O+=1)},remove(d){const w=R(d);w!==null&&(N-=w,O-=1)},value(){return O>0?N:0}}}case"avg":{let N=0,O=0;return{add(d){const w=R(d);w!==null&&(N+=w,O+=1)},remove(d){const w=R(d);w!==null&&(N-=w,O-=1)},value(){return O>0?N/O:null}}}case"countDistinct":{const N=new Map;return{add(O){X(O)||N.set(O,(N.get(O)||0)+1)},remove(O){if(X(O))return;const d=N.get(O);d&&(d===1?N.delete(O):N.set(O,d-1))},value(){return N.size}}}case"min":case"max":return P(p==="max");default:return null}}function P(p){const N=new Map;let O=null,d=!1;const w=(A,L)=>p?A>L:A<L,$=()=>{let A=null;for(const L of N.keys())(A===null||w(L,A))&&(A=L);return A};return{add(A){const L=R(A);L!==null&&(N.set(L,(N.get(L)||0)+1),!d&&(O===null||w(L,O))&&(O=L))},remove(A){const L=R(A);if(L===null)return;const G=N.get(L);G&&(G===1?(N.delete(L),L===O&&(d=!0)):N.set(L,G-1))},value(){return N.size===0?null:(d&&(O=$(),d=!1),O)}}}function _(p){return D(p)?p:typeof p=="string"&&p?k(p):()=>{}}function W(p,N){if(p==null||Number.isNaN(p))return null;if(Array.isArray(N.bands)){for(const w of N.bands){const $=X(w.min)?-1/0:w.min,A=X(w.max)?1/0:w.max;if(p>=$&&p<A)return w.status??null}return null}const O=N.thresholds;return!O||X(O.warn)||X(O.critical)?null:O.direction==="lowerIsBetter"?p<=O.warn?"good":p<=O.critical?"warn":"critical":p>=O.warn?"good":p>=O.critical?"warn":"critical"}const I="unknown";function U(p,N,O){return O?W(p,N):I}function V(p){if(!p)return null;const N=[];let O=!1;const d=A=>{if(X(A))return!1;const L=Number(A);return Number.isFinite(L)?(N.push(L),!0):!1};if(Array.isArray(p.bands)&&p.bands.length)for(const A of p.bands||[])d(A&&A.min)||(O=!0),d(A&&A.max)||(O=!0);else p.thresholds&&!X(p.thresholds.warn)&&!X(p.thresholds.critical)&&(d(p.thresholds.warn),d(p.thresholds.critical)),O=!0;if(d(p.target),O&&N.push(0),!N.length)return null;const w=Math.min(...N),$=Math.max(...N);return $>w?{lo:w,hi:$}:null}function ee(p,N){if(!N||X(p))return null;const O=Number(p);if(!Number.isFinite(O))return null;const d=N.hi-N.lo;return d?Math.max(0,Math.min(1,(O-N.lo)/d))*100:null}function J(p,N,O="—"){if(p==null||Number.isNaN(p))return O;const d=typeof N=="string"?{type:N}:N||{},w=d.type||"number",$=d.locale||void 0,A={};w==="currency"?(A.style="currency",A.currency=d.currency||"USD"):w==="percent"?A.style="percent":w==="compact"&&(A.notation="compact"),X(d.decimals)||(A.minimumFractionDigits=d.decimals,A.maximumFractionDigits=d.decimals);const L=typeof d.prefix=="string"?d.prefix:"",G=typeof d.suffix=="string"?d.suffix:"";try{return L+new Intl.NumberFormat($,A).format(p)+G}catch{return L+String(p)+G}}}),ve("packages/core/src/source/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"SYNTHETIC",{enumerable:!0,get:function(){return m}}),Object.defineProperty(g,"buildFromPath",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"buildFromParentKey",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"assignLevels",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"resolveTree",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"buildTree",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"indexTree",{enumerable:!0,get:function(){return V}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.warnOnce,k="",m="\0tree:";function R(ee,J){return{physical:ee,key:J,level:0,children:[],value:void 0}}function l(ee,J){const p=[],N=new Map;for(let O=0;O<ee.length;O++){const d=ee[O],w=J.pathOf(d),$=Array.isArray(w)?w.map(L=>String(L)):[];if(!$.length){const L=R(d,J.keyOf(d));p.push(L);continue}let A=null;for(let L=0;L<$.length;L++){const G=$.slice(0,L+1).join(k),le=L===$.length-1;let B=N.get(G);B&&le&&B.physical===-1&&(B.physical=d,B.key=J.keyOf(d)),B||(B=R(le?d:-1,le?J.keyOf(d):m+G),B.level=L,B.value=$[L],N.set(G,B),A?A.children.push(B):p.push(B)),A=B}}return{roots:p,nodes:N}}function P(ee,J){const p=new Map,N=[];for(let $=0;$<ee.length;$++){const A=ee[$],L=J.keyOf(A),G=R(A,L);p.set(L,G);const le=J.parentOf(A);le!=null&&le!==""&&N.push({node:G,parent:String(le)})}let O=null;const d=new Map;for(const{node:$,parent:A}of N){const L=p.get(A);if(L){d.set($.key,L);continue}J.orphans&&J.orphans!=="root"&&(O||(O=R(-1,`${m}orphans`),O.value=J.orphans),d.set($.key,O))}const w=[];for(const $ of p.values()){const A=d.get($.key);A?A.children.push($):w.push($)}return O&&O.children.length&&w.push(O),{roots:_(w,p,J.orphans,O),nodes:p}}function _(ee,J,p,N){const O=new Set,d=[...ee];for(;d.length;){const G=d.pop();if(!O.has(G.key)){O.add(G.key);for(const le of G.children)d.push(le)}}const w=[];for(const G of J.values())O.has(G.key)||w.push(G);if(!w.length)return ee;const $=!!p&&p!=="root";D("tree.cycle",`tree.parentKey produced ${w.length} row(s) inside a parent cycle; `+($?`they are shown under "${p}".`:"they are shown at the root."));for(const G of w)G.children=G.children.filter(le=>O.has(le.key));if(!$)return[...ee,...w];let A=N;const L=[...ee];return A||(A=R(-1,`${m}orphans`),A.value=p,L.push(A)),A.children.push(...w),L}function W(ee){let J=0;const p=(N,O)=>{for(const d of N)d.level=O,O>J&&(J=O),d.children.length&&p(d.children,O+1)};return p(ee,0),J}function I(ee,J){if(!ee||typeof ee!="object")return null;const p=ee.path,N=ee.parentKey,O=X(ee.hasChildren)?d=>!!ee.hasChildren(J.dataAt(d)):null;if(X(p))return{mode:"path",pathOf:d=>p(J.dataAt(d)),keyOf:J.keyOf,declaresChildren:O};if(N!=null){const d=X(N)?N:w=>w?.[N];return{mode:"parentKey",parentOf:w=>d(J.dataAt(w)),keyOf:J.keyOf,orphans:ee.orphans||"root",declaresChildren:O}}return D("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function U(ee,J){const p=J.mode==="path"?l(ee,J):P(ee,J),N=W(p.roots);return{...p,depth:N}}function V(ee,J){const p=new Map,N=O=>{for(let d=0;d<O.length;d++){const w=O[d];if(w.physical>=0){const $=J?J(w.physical):!1,A=$&&w.children.length===0;p.set(w.physical,{level:w.level,posinset:d+1,setsize:O.length,hasChildren:w.children.length>0||$,lazy:A})}w.children.length&&N(w.children)}};return N(ee),p}}),ve("packages/modules/kpi/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"worseOf",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"resolveHierarchy",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"decorateNodes",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"allNodes",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"visibleNodes",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"branchKeys",{enumerable:!0,get:function(){return d}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.isObject,k=te.warnOnce,m=ce("packages/core/src/source/tree.js"),R=m.resolveTree,l=m.buildTree,P=".",_=Object.freeze({good:1,warn:2,critical:3}),W=Object.freeze([null,"good","warn","critical"]);function I(w){return!!w&&w.kind!=="clock"&&(w.value===null||w.value===void 0)}function U(w,$){const A=Math.max(_[w]||0,_[$]||0);return W[A]}function V(w,$){if(!$.length||w===!1)return null;if(w==null)return $.some(h=>h.id.includes(P))&&k("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const A=D(w)?w:{},L=$.map((h,y)=>y),G=h=>$[h].id;if(X(A.path)||A.parentKey!==null&&A.parentKey!==void 0){const h=R(A,{dataAt:y=>$[y].spec,keyOf:G});return h?ee({...l(L,h),mode:h.mode},$):null}const le=typeof A.separator=="string"&&A.separator?A.separator:P;if(!$.some(h=>h.id.includes(le)))return null;const B=R({path:h=>String(h).split(le)},{dataAt:h=>$[h].id,keyOf:G});return ee({...l(L,B),mode:"id"},$)}function ee(w,$){const A=new Set,L=new Set($.map(B=>B.id)),G=(B,h)=>{for(const y of B){const C=y.physical>=0?y.key:y.value===null||y.value===void 0?"":String(y.value),M=`${h}/${C}`;y.physical>=0?A.add(y.physical):L.has(M)||(y.key=M,L.add(M)),G(y.children,M)}};G(w.roots,"");const le=$.filter((B,h)=>!A.has(h)).map(B=>B.id);return le.length&&k("kpi:tree:unplaced",`${le.length} KPI tile(s) are not on the tree and will not render: ${le.join(", ")}. Two tiles cannot share one path; a path names the tile's own place, last segment included.`),w}function J(w,$){return w&&w.spec&&w.spec.label!==null&&w.spec.label!==void 0?String(w.spec.label):$!=null?String($):w?w.label:""}function p(w,$,A,L){const G=(le,B,h,y)=>{const C=le.physical>=0?$[le.physical]:null,M=C?A.get(C.id):null,z=le.children.map((S,K)=>G(S,B+1,K,le.children.length)),re=M?M.status:null;let ae=_[re]?re:null,de=re==="unknown"||I(M)?1:0,j=M?1:0;for(const S of z)ae=U(ae,S.rollup),de+=S.unknown,j+=S.items;return{key:le.key,id:M?M.id:null,label:J(C,le.value),level:B,posinset:h+1,setsize:y,hasChildren:z.length>0,expanded:z.length>0&&L.has(le.key),children:z,tile:M,value:M?M.value:null,formatted:M?M.formatted:null,status:re??null,rollup:ae,unknown:de,items:j}};return w.roots.map((le,B)=>G(le,0,B,w.roots.length))}function N(w){const $=[],A=L=>{for(const G of L)$.push(G),A(G.children)};return A(w),$}function O(w){const $=[],A=L=>{for(const G of L)$.push(G),G.expanded&&A(G.children)};return A(w),$}function d(w){const $=[],A=L=>{for(const G of L)G.children.length&&($.push(G.key),A(G.children))};return A(w),$}}),ve("packages/modules/kpi/messages.js",function(g,ce){"use strict";Object.defineProperty(g,"FALLBACK_EN",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"resolveMessages",{enumerable:!0,get:function(){return R}}),Object.defineProperty(g,"fallbackT",{enumerable:!0,get:function(){return l}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.isObject,k=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.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function m(P,_){return _?P.replace(/\{(\w+)\}/g,(W,I)=>I in _?String(_[I]):W):P}function R(P){const _=D(P.messages)&&X(P.messages.t)&&P.messages||D(P.grid)&&D(P.grid.messages)&&X(P.grid.messages.t)&&P.grid.messages||null;return(W,I)=>{if(_){let U;try{U=_.t(W,I)}catch{U=null}if(typeof U=="string"&&U&&U!==W)return U}return m(k[W]||W,I)}}const l=R({})}),ve("packages/modules/kpi/view.js",function(g,ce){"use strict";Object.defineProperty(g,"NS",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"EMPTY_TEXT",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"Emitter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"injectStyles",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"sparkPoints",{enumerable:!0,get:function(){return J}}),Object.defineProperty(g,"tileMinFor",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"renderKPI",{enumerable:!0,get:function(){return G}});const X=ce("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,k=ce("packages/modules/kpi/tree.js").visibleNodes,R=ce("packages/modules/kpi/messages.js").fallbackT,l="lat-kpi",P=R("kpi.status.unknown"),_=R,W=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function I(t,r){return r?t(`kpi.status.${r}`):""}function U(t){return t&&t.stale?"kpi.status.stale":"kpi.status.unknown"}class V{constructor(){this.map=new Map}on(r,i){return this.map.has(r)||this.map.set(r,new Set),this.map.get(r).add(i),()=>this.off(r,i)}off(r,i){this.map.get(r)?.delete(i)}emit(r,i){for(const a of this.map.get(r)||[])a(i)}}function ee(t){if(!t||t.getElementById&&t.getElementById(`${l}-styles`))return;const r=t.createElement("style");r.id=`${l}-styles`,r.setAttribute("id",`${l}-styles`),r.textContent=`
6
+ (function(lt){"use strict";var We=Object.create(null),qe=Object.create(null);function ve(g,ce){We[g]=ce}function Ye(g){var ce=qe[g];if(ce)return ce;var te=Object.create(null);qe[g]=te;var X=We[g];if(!X)throw new Error("[lattice] missing module: "+g);return X(te,Ye),te}ve("packages/core/src/internal/util.js",function(g,ce){"use strict";Object.defineProperty(g,"VERSION",{enumerable:!0,get:function(){return D}}),Object.defineProperty(g,"reportedWarnings",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"infoOnce",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"resetWarnings",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"fail",{enumerable:!0,get:function(){return J}}),Object.defineProperty(g,"invariant",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"DEV",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"isObject",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"isFunction",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"isNil",{enumerable:!0,get:function(){return w}}),Object.defineProperty(g,"isBlank",{enumerable:!0,get:function(){return $}}),Object.defineProperty(g,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(g,"pathGetter",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"pathSetter",{enumerable:!0,get:function(){return B}}),Object.defineProperty(g,"getPath",{enumerable:!0,get:function(){return h}}),Object.defineProperty(g,"setPath",{enumerable:!0,get:function(){return y}}),Object.defineProperty(g,"humanise",{enumerable:!0,get:function(){return C}}),Object.defineProperty(g,"escapeHtml",{enumerable:!0,get:function(){return z}}),Object.defineProperty(g,"titleCase",{enumerable:!0,get:function(){return re}}),Object.defineProperty(g,"expand",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(g,"toArray",{enumerable:!0,get:function(){return de}}),Object.defineProperty(g,"merge",{enumerable:!0,get:function(){return S}}),Object.defineProperty(g,"mergeRow",{enumerable:!0,get:function(){return K}}),Object.defineProperty(g,"Lru",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(g,"collator",{enumerable:!0,get:function(){return v}}),Object.defineProperty(g,"defaultCompare",{enumerable:!0,get:function(){return x}}),Object.defineProperty(g,"now",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"nextFrame",{enumerable:!0,get:function(){return n}}),Object.defineProperty(g,"cancelFrame",{enumerable:!0,get:function(){return o}}),Object.defineProperty(g,"frameBatched",{enumerable:!0,get:function(){return c}}),Object.defineProperty(g,"settleDebounce",{enumerable:!0,get:function(){return t}}),Object.defineProperty(g,"whenIdle",{enumerable:!0,get:function(){return r}}),Object.defineProperty(g,"uid",{enumerable:!0,get:function(){return a}});const te="1.71.3";async function X(){return te}const D="1.71.3",k=new Set,m=2e3;function R(u){if(k.add(u),k.size>m){const s=k.values().next().value;s!==void 0&&k.delete(s)}}const l=[],P=500;function _(u,s,f){l.push({key:u,level:s,message:f.map(b=>typeof b=="string"?b:W(b)).join(" "),at:Date.now()}),l.length>P&&l.shift()}function W(u){if(u instanceof Error)return u.message;try{return JSON.stringify(u)}catch{return String(u)}}function I(){return l.map(u=>({...u}))}function U(u,...s){k.has(u)||(R(u),_(u,"warn",s),console.warn("[lattice]",...s))}function V(u,...s){k.has(u)||(R(u),_(u,"info",s),console.info("[lattice]",...s))}function ee(){k.clear(),l.length=0}function J(u,s){const f=new Error(`[lattice] ${u}`);throw s!==void 0&&(f.cause=s),f}function p(u,s){u||J(s)}const N=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function O(u){return u!==null&&typeof u=="object"&&!Array.isArray(u)}function d(u){return typeof u=="function"}function w(u){return u==null}function $(u){return u==null||u===""}function A(u){return typeof u!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(u))?!0:!!(u.prototype&&Object.getOwnPropertyNames(u.prototype).length>1)}const L=new Map;function G(u){let s=L.get(u);if(s)return s;if(!u.includes("."))s=f=>f?.[u];else{const f=u.split("."),b=f.length;s=T=>{let ne=T;for(let ie=0;ie<b;ie++){if(ne==null)return;ne=ne[f[ie]]}return ne}}return L.set(u,s),s}const le=new Map;function B(u){let s=le.get(u);if(s)return s;if(!u.includes("."))s=(f,b)=>{f!=null&&(f[u]=b)};else{const f=u.split("."),b=f.length-1;s=(T,ne)=>{let ie=T;for(let F=0;F<b;F++){if(ie==null)return;const q=f[F];ie[q]==null&&(ie[q]={}),ie=ie[q]}ie!=null&&(ie[f[b]]=ne)}}return le.set(u,s),s}function h(u,s){return G(s)(u)}function y(u,s,f){B(s)(u,f)}function C(u){return u?(u.includes(".")?u.slice(u.lastIndexOf(".")+1):u).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(/^./,f=>f.toUpperCase()):""}const M={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function z(u){const s=u==null?"":String(u);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,f=>M[f]):s}function re(u){return String(u).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ae(u,s,f){if(u!==void 0)return u===!0?{enabled:!0,...f}:u===!1?{enabled:!1}:O(u)?u:{[s]:u,enabled:!0}}function de(u){return u==null?[]:Array.isArray(u)?u:[u]}const j=Object.freeze(new Set(["__proto__","constructor","prototype"]));function S(u,s){if(!O(u))return O(s)?{...s}:s;if(!O(s))return s===void 0?u:s;const f={...u};for(const b of Object.keys(s)){if(j.has(b))continue;const T=s[b];T!==void 0&&(f[b]=O(T)&&O(f[b])?S(f[b],T):T)}return f}function K(u,s){if(!O(u)||!O(s)||u===s)return s;const f=Object.create(Object.getPrototypeOf(u));return Object.assign(f,u,s),f}class Q{#t;#e=new Map;#n;constructor(s=256,f=null){this.#t=s,this.#n=f}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#r()}has(s){return this.#e.has(s)}get(s){const f=this.#e;if(!f.has(s))return;const b=f.get(s);return f.delete(s),f.set(s,b),b}peek(s){return this.#e.get(s)}set(s,f){const b=this.#e;return b.has(s)&&b.delete(s),b.set(s,f),this.#r(),f}delete(s){const f=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(f,s),f}clear(){if(this.#n)for(const[s,f]of this.#e)this.#n(f,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const s=this.#e;for(;s.size>this.#t;){const f=s.keys().next().value,b=s.get(f);s.delete(f),this.#n&&this.#n(b,f)}}}const fe=new Map;function v(u,s){const f=`${u||""}|${s?JSON.stringify(s):""}`;let b=fe.get(f);return b||(b=new Intl.Collator(u||void 0,{numeric:!0,sensitivity:"variant",...s}),fe.set(f,b)),b}function x(u,s){if(u===s)return 0;if(u==null)return 1;if(s==null)return-1;if(typeof u=="number"&&typeof s=="number")return Number.isNaN(u)?Number.isNaN(s)?0:1:Number.isNaN(s)||u<s?-1:u>s?1:0;const f=String(u),b=String(s);return f<b?-1:f>b?1:0}function E(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const e=typeof requestAnimationFrame=="function";function n(u){return e?requestAnimationFrame(u):setTimeout(()=>u(E()),16)}function o(u){u!=null&&(e?cancelAnimationFrame(u):clearTimeout(u))}function c(u){let s=null,f=null;const b=()=>{s=null;const ne=f;f=null,u(...ne||[])},T=(...ne)=>{f=ne,s===null&&(s=n(b))};return T.cancel=()=>{o(s),s=null,f=null},T.flush=()=>{s!==null&&(o(s),b())},T}function t(u,s){let f=null,b=null;const T=()=>{if(f=null,b===null)return;const F=b;b=null,u(...F),ne()},ne=()=>{f=setTimeout(T,s),typeof f?.unref=="function"&&f.unref()},ie=(...F)=>{f===null?(u(...F),ne()):(b=F,clearTimeout(f),ne())};return ie.flush=()=>{if(f!==null&&clearTimeout(f),f=null,b===null)return;const F=b;b=null,u(...F)},ie.cancel=()=>{f!==null&&clearTimeout(f),f=null,b=null},ie.pending=()=>f!==null||b!==null,ie}function r(u,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(u,{timeout:s}):setTimeout(()=>u({timeRemaining:()=>0,didTimeout:!0}),1)}let i=0;function a(u="l"){return`${u}${(++i).toString(36)}`}}),ve("packages/modules/kpi/aggregate.js",function(g,ce){"use strict";Object.defineProperty(g,"AGGREGATIONS",{enumerable:!0,get:function(){return m}}),Object.defineProperty(g,"makeAccumulator",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"accessorFor",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"bandFor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"statusFor",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"barBounds",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"barPercent",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"formatValue",{enumerable:!0,get:function(){return J}});const te=ce("packages/core/src/internal/util.js"),X=te.isNil,D=te.isFunction,k=te.pathGetter,m=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function R(p){if(X(p)||p==="")return null;const N=typeof p=="number"?p:Number(p);return Number.isFinite(N)?N:null}function l(p){switch(p){case"count":{let N=0;return{add(){N+=1},remove(){N-=1},value(){return N}}}case"sum":{let N=0,O=0;return{add(d){const w=R(d);w!==null&&(N+=w,O+=1)},remove(d){const w=R(d);w!==null&&(N-=w,O-=1)},value(){return O>0?N:0}}}case"avg":{let N=0,O=0;return{add(d){const w=R(d);w!==null&&(N+=w,O+=1)},remove(d){const w=R(d);w!==null&&(N-=w,O-=1)},value(){return O>0?N/O:null}}}case"countDistinct":{const N=new Map;return{add(O){X(O)||N.set(O,(N.get(O)||0)+1)},remove(O){if(X(O))return;const d=N.get(O);d&&(d===1?N.delete(O):N.set(O,d-1))},value(){return N.size}}}case"min":case"max":return P(p==="max");default:return null}}function P(p){const N=new Map;let O=null,d=!1;const w=(A,L)=>p?A>L:A<L,$=()=>{let A=null;for(const L of N.keys())(A===null||w(L,A))&&(A=L);return A};return{add(A){const L=R(A);L!==null&&(N.set(L,(N.get(L)||0)+1),!d&&(O===null||w(L,O))&&(O=L))},remove(A){const L=R(A);if(L===null)return;const G=N.get(L);G&&(G===1?(N.delete(L),L===O&&(d=!0)):N.set(L,G-1))},value(){return N.size===0?null:(d&&(O=$(),d=!1),O)}}}function _(p){return D(p)?p:typeof p=="string"&&p?k(p):()=>{}}function W(p,N){if(p==null||Number.isNaN(p))return null;if(Array.isArray(N.bands)){for(const w of N.bands){const $=X(w.min)?-1/0:w.min,A=X(w.max)?1/0:w.max;if(p>=$&&p<A)return w.status??null}return null}const O=N.thresholds;return!O||X(O.warn)||X(O.critical)?null:O.direction==="lowerIsBetter"?p<=O.warn?"good":p<=O.critical?"warn":"critical":p>=O.warn?"good":p>=O.critical?"warn":"critical"}const I="unknown";function U(p,N,O){return O?W(p,N):I}function V(p){if(!p)return null;const N=[];let O=!1;const d=A=>{if(X(A))return!1;const L=Number(A);return Number.isFinite(L)?(N.push(L),!0):!1};if(Array.isArray(p.bands)&&p.bands.length)for(const A of p.bands||[])d(A&&A.min)||(O=!0),d(A&&A.max)||(O=!0);else p.thresholds&&!X(p.thresholds.warn)&&!X(p.thresholds.critical)&&(d(p.thresholds.warn),d(p.thresholds.critical)),O=!0;if(d(p.target),O&&N.push(0),!N.length)return null;const w=Math.min(...N),$=Math.max(...N);return $>w?{lo:w,hi:$}:null}function ee(p,N){if(!N||X(p))return null;const O=Number(p);if(!Number.isFinite(O))return null;const d=N.hi-N.lo;return d?Math.max(0,Math.min(1,(O-N.lo)/d))*100:null}function J(p,N,O="—"){if(p==null||Number.isNaN(p))return O;const d=typeof N=="string"?{type:N}:N||{},w=d.type||"number",$=d.locale||void 0,A={};w==="currency"?(A.style="currency",A.currency=d.currency||"USD"):w==="percent"?A.style="percent":w==="compact"&&(A.notation="compact"),X(d.decimals)||(A.minimumFractionDigits=d.decimals,A.maximumFractionDigits=d.decimals);const L=typeof d.prefix=="string"?d.prefix:"",G=typeof d.suffix=="string"?d.suffix:"";try{return L+new Intl.NumberFormat($,A).format(p)+G}catch{return L+String(p)+G}}}),ve("packages/core/src/source/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"SYNTHETIC",{enumerable:!0,get:function(){return m}}),Object.defineProperty(g,"buildFromPath",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"buildFromParentKey",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"assignLevels",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"resolveTree",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"buildTree",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"indexTree",{enumerable:!0,get:function(){return V}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.warnOnce,k="",m="\0tree:";function R(ee,J){return{physical:ee,key:J,level:0,children:[],value:void 0}}function l(ee,J){const p=[],N=new Map;for(let O=0;O<ee.length;O++){const d=ee[O],w=J.pathOf(d),$=Array.isArray(w)?w.map(L=>String(L)):[];if(!$.length){const L=R(d,J.keyOf(d));p.push(L);continue}let A=null;for(let L=0;L<$.length;L++){const G=$.slice(0,L+1).join(k),le=L===$.length-1;let B=N.get(G);B&&le&&B.physical===-1&&(B.physical=d,B.key=J.keyOf(d)),B||(B=R(le?d:-1,le?J.keyOf(d):m+G),B.level=L,B.value=$[L],N.set(G,B),A?A.children.push(B):p.push(B)),A=B}}return{roots:p,nodes:N}}function P(ee,J){const p=new Map,N=[];for(let $=0;$<ee.length;$++){const A=ee[$],L=J.keyOf(A),G=R(A,L);p.set(L,G);const le=J.parentOf(A);le!=null&&le!==""&&N.push({node:G,parent:String(le)})}let O=null;const d=new Map;for(const{node:$,parent:A}of N){const L=p.get(A);if(L){d.set($.key,L);continue}J.orphans&&J.orphans!=="root"&&(O||(O=R(-1,`${m}orphans`),O.value=J.orphans),d.set($.key,O))}const w=[];for(const $ of p.values()){const A=d.get($.key);A?A.children.push($):w.push($)}return O&&O.children.length&&w.push(O),{roots:_(w,p,J.orphans,O),nodes:p}}function _(ee,J,p,N){const O=new Set,d=[...ee];for(;d.length;){const G=d.pop();if(!O.has(G.key)){O.add(G.key);for(const le of G.children)d.push(le)}}const w=[];for(const G of J.values())O.has(G.key)||w.push(G);if(!w.length)return ee;const $=!!p&&p!=="root";D("tree.cycle",`tree.parentKey produced ${w.length} row(s) inside a parent cycle; `+($?`they are shown under "${p}".`:"they are shown at the root."));for(const G of w)G.children=G.children.filter(le=>O.has(le.key));if(!$)return[...ee,...w];let A=N;const L=[...ee];return A||(A=R(-1,`${m}orphans`),A.value=p,L.push(A)),A.children.push(...w),L}function W(ee){let J=0;const p=(N,O)=>{for(const d of N)d.level=O,O>J&&(J=O),d.children.length&&p(d.children,O+1)};return p(ee,0),J}function I(ee,J){if(!ee||typeof ee!="object")return null;const p=ee.path,N=ee.parentKey,O=X(ee.hasChildren)?d=>!!ee.hasChildren(J.dataAt(d)):null;if(X(p))return{mode:"path",pathOf:d=>p(J.dataAt(d)),keyOf:J.keyOf,declaresChildren:O};if(N!=null){const d=X(N)?N:w=>w?.[N];return{mode:"parentKey",parentOf:w=>d(J.dataAt(w)),keyOf:J.keyOf,orphans:ee.orphans||"root",declaresChildren:O}}return D("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function U(ee,J){const p=J.mode==="path"?l(ee,J):P(ee,J),N=W(p.roots);return{...p,depth:N}}function V(ee,J){const p=new Map,N=O=>{for(let d=0;d<O.length;d++){const w=O[d];if(w.physical>=0){const $=J?J(w.physical):!1,A=$&&w.children.length===0;p.set(w.physical,{level:w.level,posinset:d+1,setsize:O.length,hasChildren:w.children.length>0||$,lazy:A})}w.children.length&&N(w.children)}};return N(ee),p}}),ve("packages/modules/kpi/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"worseOf",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"resolveHierarchy",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"decorateNodes",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"allNodes",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"visibleNodes",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"branchKeys",{enumerable:!0,get:function(){return d}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.isObject,k=te.warnOnce,m=ce("packages/core/src/source/tree.js"),R=m.resolveTree,l=m.buildTree,P=".",_=Object.freeze({good:1,warn:2,critical:3}),W=Object.freeze([null,"good","warn","critical"]);function I(w){return!!w&&w.kind!=="clock"&&(w.value===null||w.value===void 0)}function U(w,$){const A=Math.max(_[w]||0,_[$]||0);return W[A]}function V(w,$){if(!$.length||w===!1)return null;if(w==null)return $.some(h=>h.id.includes(P))&&k("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const A=D(w)?w:{},L=$.map((h,y)=>y),G=h=>$[h].id;if(X(A.path)||A.parentKey!==null&&A.parentKey!==void 0){const h=R(A,{dataAt:y=>$[y].spec,keyOf:G});return h?ee({...l(L,h),mode:h.mode},$):null}const le=typeof A.separator=="string"&&A.separator?A.separator:P;if(!$.some(h=>h.id.includes(le)))return null;const B=R({path:h=>String(h).split(le)},{dataAt:h=>$[h].id,keyOf:G});return ee({...l(L,B),mode:"id"},$)}function ee(w,$){const A=new Set,L=new Set($.map(B=>B.id)),G=(B,h)=>{for(const y of B){const C=y.physical>=0?y.key:y.value===null||y.value===void 0?"":String(y.value),M=`${h}/${C}`;y.physical>=0?A.add(y.physical):L.has(M)||(y.key=M,L.add(M)),G(y.children,M)}};G(w.roots,"");const le=$.filter((B,h)=>!A.has(h)).map(B=>B.id);return le.length&&k("kpi:tree:unplaced",`${le.length} KPI tile(s) are not on the tree and will not render: ${le.join(", ")}. Two tiles cannot share one path; a path names the tile's own place, last segment included.`),w}function J(w,$){return w&&w.spec&&w.spec.label!==null&&w.spec.label!==void 0?String(w.spec.label):$!=null?String($):w?w.label:""}function p(w,$,A,L){const G=(le,B,h,y)=>{const C=le.physical>=0?$[le.physical]:null,M=C?A.get(C.id):null,z=le.children.map((S,K)=>G(S,B+1,K,le.children.length)),re=M?M.status:null;let ae=_[re]?re:null,de=re==="unknown"||I(M)?1:0,j=M?1:0;for(const S of z)ae=U(ae,S.rollup),de+=S.unknown,j+=S.items;return{key:le.key,id:M?M.id:null,label:J(C,le.value),level:B,posinset:h+1,setsize:y,hasChildren:z.length>0,expanded:z.length>0&&L.has(le.key),children:z,tile:M,value:M?M.value:null,formatted:M?M.formatted:null,status:re??null,rollup:ae,unknown:de,items:j}};return w.roots.map((le,B)=>G(le,0,B,w.roots.length))}function N(w){const $=[],A=L=>{for(const G of L)$.push(G),A(G.children)};return A(w),$}function O(w){const $=[],A=L=>{for(const G of L)$.push(G),G.expanded&&A(G.children)};return A(w),$}function d(w){const $=[],A=L=>{for(const G of L)G.children.length&&($.push(G.key),A(G.children))};return A(w),$}}),ve("packages/modules/kpi/messages.js",function(g,ce){"use strict";Object.defineProperty(g,"FALLBACK_EN",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"resolveMessages",{enumerable:!0,get:function(){return R}}),Object.defineProperty(g,"fallbackT",{enumerable:!0,get:function(){return l}});const te=ce("packages/core/src/internal/util.js"),X=te.isFunction,D=te.isObject,k=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.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function m(P,_){return _?P.replace(/\{(\w+)\}/g,(W,I)=>I in _?String(_[I]):W):P}function R(P){const _=D(P.messages)&&X(P.messages.t)&&P.messages||D(P.grid)&&D(P.grid.messages)&&X(P.grid.messages.t)&&P.grid.messages||null;return(W,I)=>{if(_){let U;try{U=_.t(W,I)}catch{U=null}if(typeof U=="string"&&U&&U!==W)return U}return m(k[W]||W,I)}}const l=R({})}),ve("packages/modules/kpi/view.js",function(g,ce){"use strict";Object.defineProperty(g,"NS",{enumerable:!0,get:function(){return l}}),Object.defineProperty(g,"EMPTY_TEXT",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"Emitter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(g,"injectStyles",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"sparkPoints",{enumerable:!0,get:function(){return J}}),Object.defineProperty(g,"tileMinFor",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"renderKPI",{enumerable:!0,get:function(){return G}});const X=ce("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,k=ce("packages/modules/kpi/tree.js").visibleNodes,R=ce("packages/modules/kpi/messages.js").fallbackT,l="lat-kpi",P=R("kpi.status.unknown"),_=R,W=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function I(t,r){return r?t(`kpi.status.${r}`):""}function U(t){return t&&t.stale?"kpi.status.stale":"kpi.status.unknown"}class V{constructor(){this.map=new Map}on(r,i){return this.map.has(r)||this.map.set(r,new Set),this.map.get(r).add(i),()=>this.off(r,i)}off(r,i){this.map.get(r)?.delete(i)}emit(r,i){for(const a of this.map.get(r)||[])a(i)}}function ee(t){if(!t||t.getElementById&&t.getElementById(`${l}-styles`))return;const r=t.createElement("style");r.id=`${l}-styles`,r.setAttribute("id",`${l}-styles`),r.textContent=`
7
7
  .${l}{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(var(--${l}-tile-min,160px),1fr));font-family:var(--${l}-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(--${l}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));line-height:var(--${l}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)));--${l}-meter-w:var(--${l}-meter-width,calc(34px * var(--lat-chrome-scale,1)))}
8
8
  .${l}__tile{border:1px solid var(--${l}-border,#d7dbe0);border-radius:8px;padding:12px 14px;background:var(--${l}-bg,#fff);display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}
9
9
  .${l}__tile:focus-visible{outline:2px solid var(--${l}-focus,#2563eb);outline-offset:2px}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, layout module type declarations
2
+ * Lattice Grid 1.71.3, layout module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, layout module
2
+ * Lattice Grid 1.71.3, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var Fe=Object.create(null),Ie=Object.create(null);function ye(a,T){Fe[a]=T}function Le(a){var T=Ie[a];if(T)return T;var Y=Object.create(null);Ie[a]=Y;var F=Fe[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Le),Y}ye("packages/core/src/internal/util.js",function(a,T){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 B}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 re}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.1";async function F(){return Y}const U="1.71.1",I=new Set,_=2e3;function W(r){if(I.add(r),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(r,s,d){N.push({key:r,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function z(){return N.map(r=>({...r}))}function A(r,...s){I.has(r)||(W(r),E(r,"warn",s),console.warn("[lattice]",...s))}function j(r,...s){I.has(r)||(W(r),E(r,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(r,s){const d=new Error(`[lattice] ${r}`);throw s!==void 0&&(d.cause=s),d}function P(r,s){r||v(s)}const $=(()=>{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 R(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 B(r){let s=k.get(r);if(s)return s;if(!r.includes("."))s=d=>d?.[r];else{const d=r.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(r,s),s}const V=new Map;function Z(r){let s=V.get(r);if(s)return s;if(!r.includes("."))s=(d,S)=>{d!=null&&(d[r]=S)};else{const d=r.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(r,s),s}function se(r,s){return B(s)(r)}function ue(r,s,d){Z(s)(r,d)}function ie(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 he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ce(r){const s=r==null?"":String(r);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(r){return String(r).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(r,s,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[s]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,s){if(!M(r))return M(s)?{...s}:s;if(!M(s))return s===void 0?r:s;const d={...r};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?fe(d[S],Q):Q)}return d}function u(r,s){if(!M(r)||!M(s)||r===s)return s;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(r,s){const d=`${r||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(r,s){if(r===s)return 0;if(r==null)return 1;if(s==null)return-1;if(typeof r=="number"&&typeof s=="number")return Number.isNaN(r)?Number.isNaN(s)?0:1:Number.isNaN(s)||r<s?-1:r>s?1:0;const d=String(r),S=String(s);return d<S?-1:d>S?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 re(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,r(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{re(s),s=null,d=null},Q.flush=()=>{s!==null&&(re(s),S())},Q}function oe(r,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,r(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(r(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,r(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function me(r,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:s}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(r="l"){return`${r}${(++q).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,T){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=T("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const B=w[k];try{const V=B(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(B,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const B of k)B.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,B.reason)):B.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ye("packages/modules/shared/autosize.js",function(a,T){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=T("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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 B=j[X];if(!Number.isFinite(B)||Math.abs(k-B)>=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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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,T){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=T("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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,T){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,B)=>Math.max(k,B.yPos+B.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,B)=>Math.max(k,B.xPos+B.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,T){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return z}}),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 R}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return B}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const F=T("packages/core/src/internal/util.js").isFunction,U=T("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=T("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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 Fe=Object.create(null),Ie=Object.create(null);function ye(a,T){Fe[a]=T}function Le(a){var T=Ie[a];if(T)return T;var Y=Object.create(null);Ie[a]=Y;var F=Fe[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Le),Y}ye("packages/core/src/internal/util.js",function(a,T){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 B}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 re}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.3";async function F(){return Y}const U="1.71.3",I=new Set,_=2e3;function W(r){if(I.add(r),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(r,s,d){N.push({key:r,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(r){if(r instanceof Error)return r.message;try{return JSON.stringify(r)}catch{return String(r)}}function z(){return N.map(r=>({...r}))}function A(r,...s){I.has(r)||(W(r),E(r,"warn",s),console.warn("[lattice]",...s))}function j(r,...s){I.has(r)||(W(r),E(r,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(r,s){const d=new Error(`[lattice] ${r}`);throw s!==void 0&&(d.cause=s),d}function P(r,s){r||v(s)}const $=(()=>{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 R(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 B(r){let s=k.get(r);if(s)return s;if(!r.includes("."))s=d=>d?.[r];else{const d=r.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(r,s),s}const V=new Map;function Z(r){let s=V.get(r);if(s)return s;if(!r.includes("."))s=(d,S)=>{d!=null&&(d[r]=S)};else{const d=r.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(r,s),s}function se(r,s){return B(s)(r)}function ue(r,s,d){Z(s)(r,d)}function ie(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 he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ce(r){const s=r==null?"":String(r);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(r){return String(r).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(r,s,d){if(r!==void 0)return r===!0?{enabled:!0,...d}:r===!1?{enabled:!1}:M(r)?r:{[s]:r,enabled:!0}}function pe(r){return r==null?[]:Array.isArray(r)?r:[r]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function fe(r,s){if(!M(r))return M(s)?{...s}:s;if(!M(s))return s===void 0?r:s;const d={...r};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?fe(d[S],Q):Q)}return d}function u(r,s){if(!M(r)||!M(s)||r===s)return s;const d=Object.create(Object.getPrototypeOf(r));return Object.assign(d,r,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(r,s){const d=`${r||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(r||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(r,s){if(r===s)return 0;if(r==null)return 1;if(s==null)return-1;if(typeof r=="number"&&typeof s=="number")return Number.isNaN(r)?Number.isNaN(s)?0:1:Number.isNaN(s)||r<s?-1:r>s?1:0;const d=String(r),S=String(s);return d<S?-1:d>S?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 re(r){r!=null&&(L?cancelAnimationFrame(r):clearTimeout(r))}function de(r){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,r(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{re(s),s=null,d=null},Q.flush=()=>{s!==null&&(re(s),S())},Q}function oe(r,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,r(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(r(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,r(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function me(r,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(r,{timeout:s}):setTimeout(()=>r({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(r="l"){return`${r}${(++q).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,T){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=T("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const B=w[k];try{const V=B(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(B,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const B of k)B.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,B.reason)):B.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ye("packages/modules/shared/autosize.js",function(a,T){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=T("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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 B=j[X];if(!Number.isFinite(B)||Math.abs(k-B)>=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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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,T){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=T("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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,T){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,B)=>Math.max(k,B.yPos+B.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,B)=>Math.max(k,B.xPos+B.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,T){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return z}}),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 R}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return B}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return fe}});const F=T("packages/core/src/internal/util.js").isFunction,U=T("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=T("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, layout module
2
+ * Lattice Grid 1.71.3, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Re){"use strict";var Ce=Object.create(null),Me=Object.create(null);function ce(a,B){Ce[a]=B}function Ne(a){var B=Me[a];if(B)return B;var Y=Object.create(null);Me[a]=Y;var F=Ce[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Ne),Y}ce("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 z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),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 de}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.1";async function F(){return Y}const U="1.71.1",I=new Set,_=2e3;function W(o){if(I.add(o),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(o,s,d){N.push({key:o,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function z(){return N.map(o=>({...o}))}function A(o,...s){I.has(o)||(W(o),E(o,"warn",s),console.warn("[lattice]",...s))}function j(o,...s){I.has(o)||(W(o),E(o,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(o,s){const d=new Error(`[lattice] ${o}`);throw s!==void 0&&(d.cause=s),d}function P(o,s){o||v(s)}const $=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function R(o){return typeof o=="function"}function w(o){return o==null}function O(o){return o==null||o===""}function X(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const k=new Map;function T(o){let s=k.get(o);if(s)return s;if(!o.includes("."))s=d=>d?.[o];else{const d=o.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(o,s),s}const V=new Map;function Z(o){let s=V.get(o);if(s)return s;if(!o.includes("."))s=(d,S)=>{d!=null&&(d[o]=S)};else{const d=o.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(o,s),s}function se(o,s){return T(s)(o)}function ue(o,s,d){Z(s)(o,d)}function ie(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(/^./,d=>d.toUpperCase()):""}const he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(o){const s=o==null?"":String(o);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(o){return String(o).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(o,s,d){if(o!==void 0)return o===!0?{enabled:!0,...d}:o===!1?{enabled:!1}:M(o)?o:{[s]:o,enabled:!0}}function pe(o){return o==null?[]:Array.isArray(o)?o:[o]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function de(o,s){if(!M(o))return M(s)?{...s}:s;if(!M(s))return s===void 0?o:s;const d={...o};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?de(d[S],Q):Q)}return d}function u(o,s){if(!M(o)||!M(s)||o===s)return s;const d=Object.create(Object.getPrototypeOf(o));return Object.assign(d,o,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(o,s){const d=`${o||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(o,s){if(o===s)return 0;if(o==null)return 1;if(s==null)return-1;if(typeof o=="number"&&typeof s=="number")return Number.isNaN(o)?Number.isNaN(s)?0:1:Number.isNaN(s)||o<s?-1:o>s?1:0;const d=String(o),S=String(s);return d<S?-1:d>S?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(o){return L?requestAnimationFrame(o):setTimeout(()=>o(C()),16)}function oe(o){o!=null&&(L?cancelAnimationFrame(o):clearTimeout(o))}function me(o){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,o(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{oe(s),s=null,d=null},Q.flush=()=>{s!==null&&(oe(s),S())},Q}function re(o,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,o(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(o(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,o(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function ye(o,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:s}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(o="l"){return`${o}${(++q).toString(36)}`}}),ce("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const V=T(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ce("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 I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=B("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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}}}}),ce("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ce("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 F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ce("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 z}}),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 R}}),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 V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return de}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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(Re){"use strict";var Ce=Object.create(null),Me=Object.create(null);function ce(a,B){Ce[a]=B}function Ne(a){var B=Me[a];if(B)return B;var Y=Object.create(null);Me[a]=Y;var F=Ce[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Ne),Y}ce("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 z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),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 de}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.3";async function F(){return Y}const U="1.71.3",I=new Set,_=2e3;function W(o){if(I.add(o),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(o,s,d){N.push({key:o,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function z(){return N.map(o=>({...o}))}function A(o,...s){I.has(o)||(W(o),E(o,"warn",s),console.warn("[lattice]",...s))}function j(o,...s){I.has(o)||(W(o),E(o,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(o,s){const d=new Error(`[lattice] ${o}`);throw s!==void 0&&(d.cause=s),d}function P(o,s){o||v(s)}const $=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function R(o){return typeof o=="function"}function w(o){return o==null}function O(o){return o==null||o===""}function X(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const k=new Map;function T(o){let s=k.get(o);if(s)return s;if(!o.includes("."))s=d=>d?.[o];else{const d=o.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(o,s),s}const V=new Map;function Z(o){let s=V.get(o);if(s)return s;if(!o.includes("."))s=(d,S)=>{d!=null&&(d[o]=S)};else{const d=o.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(o,s),s}function se(o,s){return T(s)(o)}function ue(o,s,d){Z(s)(o,d)}function ie(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(/^./,d=>d.toUpperCase()):""}const he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(o){const s=o==null?"":String(o);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(o){return String(o).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(o,s,d){if(o!==void 0)return o===!0?{enabled:!0,...d}:o===!1?{enabled:!1}:M(o)?o:{[s]:o,enabled:!0}}function pe(o){return o==null?[]:Array.isArray(o)?o:[o]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function de(o,s){if(!M(o))return M(s)?{...s}:s;if(!M(s))return s===void 0?o:s;const d={...o};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?de(d[S],Q):Q)}return d}function u(o,s){if(!M(o)||!M(s)||o===s)return s;const d=Object.create(Object.getPrototypeOf(o));return Object.assign(d,o,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(o,s){const d=`${o||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(o,s){if(o===s)return 0;if(o==null)return 1;if(s==null)return-1;if(typeof o=="number"&&typeof s=="number")return Number.isNaN(o)?Number.isNaN(s)?0:1:Number.isNaN(s)||o<s?-1:o>s?1:0;const d=String(o),S=String(s);return d<S?-1:d>S?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(o){return L?requestAnimationFrame(o):setTimeout(()=>o(C()),16)}function oe(o){o!=null&&(L?cancelAnimationFrame(o):clearTimeout(o))}function me(o){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,o(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{oe(s),s=null,d=null},Q.flush=()=>{s!==null&&(oe(s),S())},Q}function re(o,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,o(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(o(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,o(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function ye(o,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:s}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(o="l"){return`${o}${(++q).toString(36)}`}}),ce("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const V=T(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ce("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 I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=B("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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}}}}),ce("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ce("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 F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ce("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 z}}),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 R}}),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 V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return de}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, layout module
2
+ * Lattice Grid 1.71.3, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Re){"use strict";var Ce=Object.create(null),Me=Object.create(null);function ce(a,B){Ce[a]=B}function Ne(a){var B=Me[a];if(B)return B;var Y=Object.create(null);Me[a]=Y;var F=Ce[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Ne),Y}ce("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 z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),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 de}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.1";async function F(){return Y}const U="1.71.1",I=new Set,_=2e3;function W(o){if(I.add(o),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(o,s,d){N.push({key:o,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function z(){return N.map(o=>({...o}))}function A(o,...s){I.has(o)||(W(o),E(o,"warn",s),console.warn("[lattice]",...s))}function j(o,...s){I.has(o)||(W(o),E(o,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(o,s){const d=new Error(`[lattice] ${o}`);throw s!==void 0&&(d.cause=s),d}function P(o,s){o||v(s)}const $=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function R(o){return typeof o=="function"}function w(o){return o==null}function O(o){return o==null||o===""}function X(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const k=new Map;function T(o){let s=k.get(o);if(s)return s;if(!o.includes("."))s=d=>d?.[o];else{const d=o.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(o,s),s}const V=new Map;function Z(o){let s=V.get(o);if(s)return s;if(!o.includes("."))s=(d,S)=>{d!=null&&(d[o]=S)};else{const d=o.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(o,s),s}function se(o,s){return T(s)(o)}function ue(o,s,d){Z(s)(o,d)}function ie(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(/^./,d=>d.toUpperCase()):""}const he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(o){const s=o==null?"":String(o);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(o){return String(o).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(o,s,d){if(o!==void 0)return o===!0?{enabled:!0,...d}:o===!1?{enabled:!1}:M(o)?o:{[s]:o,enabled:!0}}function pe(o){return o==null?[]:Array.isArray(o)?o:[o]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function de(o,s){if(!M(o))return M(s)?{...s}:s;if(!M(s))return s===void 0?o:s;const d={...o};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?de(d[S],Q):Q)}return d}function u(o,s){if(!M(o)||!M(s)||o===s)return s;const d=Object.create(Object.getPrototypeOf(o));return Object.assign(d,o,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(o,s){const d=`${o||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(o,s){if(o===s)return 0;if(o==null)return 1;if(s==null)return-1;if(typeof o=="number"&&typeof s=="number")return Number.isNaN(o)?Number.isNaN(s)?0:1:Number.isNaN(s)||o<s?-1:o>s?1:0;const d=String(o),S=String(s);return d<S?-1:d>S?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(o){return L?requestAnimationFrame(o):setTimeout(()=>o(C()),16)}function oe(o){o!=null&&(L?cancelAnimationFrame(o):clearTimeout(o))}function me(o){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,o(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{oe(s),s=null,d=null},Q.flush=()=>{s!==null&&(oe(s),S())},Q}function re(o,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,o(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(o(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,o(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function ye(o,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:s}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(o="l"){return`${o}${(++q).toString(36)}`}}),ce("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const V=T(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ce("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 I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=B("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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}}}}),ce("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ce("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 F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ce("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 z}}),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 R}}),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 V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return de}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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(Re){"use strict";var Ce=Object.create(null),Me=Object.create(null);function ce(a,B){Ce[a]=B}function Ne(a){var B=Me[a];if(B)return B;var Y=Object.create(null);Me[a]=Y;var F=Ce[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Ne),Y}ce("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 z}}),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 $}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return R}}),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 Z}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),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 de}}),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 y}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return p}}),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 oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return te}});const Y="1.71.3";async function F(){return Y}const U="1.71.3",I=new Set,_=2e3;function W(o){if(I.add(o),I.size>_){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],h=500;function E(o,s,d){N.push({key:o,level:s,message:d.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>h&&N.shift()}function n(o){if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}function z(){return N.map(o=>({...o}))}function A(o,...s){I.has(o)||(W(o),E(o,"warn",s),console.warn("[lattice]",...s))}function j(o,...s){I.has(o)||(W(o),E(o,"info",s),console.info("[lattice]",...s))}function b(){I.clear(),N.length=0}function v(o,s){const d=new Error(`[lattice] ${o}`);throw s!==void 0&&(d.cause=s),d}function P(o,s){o||v(s)}const $=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function R(o){return typeof o=="function"}function w(o){return o==null}function O(o){return o==null||o===""}function X(o){return typeof o!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(o))?!0:!!(o.prototype&&Object.getOwnPropertyNames(o.prototype).length>1)}const k=new Map;function T(o){let s=k.get(o);if(s)return s;if(!o.includes("."))s=d=>d?.[o];else{const d=o.split("."),S=d.length;s=Q=>{let K=Q;for(let J=0;J<S;J++){if(K==null)return;K=K[d[J]]}return K}}return k.set(o,s),s}const V=new Map;function Z(o){let s=V.get(o);if(s)return s;if(!o.includes("."))s=(d,S)=>{d!=null&&(d[o]=S)};else{const d=o.split("."),S=d.length-1;s=(Q,K)=>{let J=Q;for(let ee=0;ee<S;ee++){if(J==null)return;const be=d[ee];J[be]==null&&(J[be]={}),J=J[be]}J!=null&&(J[d[S]]=K)}}return V.set(o,s),s}function se(o,s){return T(s)(o)}function ue(o,s,d){Z(s)(o,d)}function ie(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(/^./,d=>d.toUpperCase()):""}const he={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(o){const s=o==null?"":String(o);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,d=>he[d]):s}function we(o){return String(o).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ve(o,s,d){if(o!==void 0)return o===!0?{enabled:!0,...d}:o===!1?{enabled:!1}:M(o)?o:{[s]:o,enabled:!0}}function pe(o){return o==null?[]:Array.isArray(o)?o:[o]}const ae=Object.freeze(new Set(["__proto__","constructor","prototype"]));function de(o,s){if(!M(o))return M(s)?{...s}:s;if(!M(s))return s===void 0?o:s;const d={...o};for(const S of Object.keys(s)){if(ae.has(S))continue;const Q=s[S];Q!==void 0&&(d[S]=M(Q)&&M(d[S])?de(d[S],Q):Q)}return d}function u(o,s){if(!M(o)||!M(s)||o===s)return s;const d=Object.create(Object.getPrototypeOf(o));return Object.assign(d,o,s),d}class i{#t;#e=new Map;#n;constructor(s=256,d=null){this.#t=s,this.#n=d}get size(){return this.#e.size}get max(){return this.#t}set max(s){this.#t=s,this.#i()}has(s){return this.#e.has(s)}get(s){const d=this.#e;if(!d.has(s))return;const S=d.get(s);return d.delete(s),d.set(s,S),S}peek(s){return this.#e.get(s)}set(s,d){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,d),this.#i(),d}delete(s){const d=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(d,s),d}clear(){if(this.#n)for(const[s,d]of this.#e)this.#n(d,s);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#i(){const s=this.#e;for(;s.size>this.#t;){const d=s.keys().next().value,S=s.get(d);s.delete(d),this.#n&&this.#n(S,d)}}}const c=new Map;function y(o,s){const d=`${o||""}|${s?JSON.stringify(s):""}`;let S=c.get(d);return S||(S=new Intl.Collator(o||void 0,{numeric:!0,sensitivity:"variant",...s}),c.set(d,S)),S}function p(o,s){if(o===s)return 0;if(o==null)return 1;if(s==null)return-1;if(typeof o=="number"&&typeof s=="number")return Number.isNaN(o)?Number.isNaN(s)?0:1:Number.isNaN(s)||o<s?-1:o>s?1:0;const d=String(o),S=String(s);return d<S?-1:d>S?1:0}function C(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const L=typeof requestAnimationFrame=="function";function H(o){return L?requestAnimationFrame(o):setTimeout(()=>o(C()),16)}function oe(o){o!=null&&(L?cancelAnimationFrame(o):clearTimeout(o))}function me(o){let s=null,d=null;const S=()=>{s=null;const K=d;d=null,o(...K||[])},Q=(...K)=>{d=K,s===null&&(s=H(S))};return Q.cancel=()=>{oe(s),s=null,d=null},Q.flush=()=>{s!==null&&(oe(s),S())},Q}function re(o,s){let d=null,S=null;const Q=()=>{if(d=null,S===null)return;const ee=S;S=null,o(...ee),K()},K=()=>{d=setTimeout(Q,s),typeof d?.unref=="function"&&d.unref()},J=(...ee)=>{d===null?(o(...ee),K()):(S=ee,clearTimeout(d),K())};return J.flush=()=>{if(d!==null&&clearTimeout(d),d=null,S===null)return;const ee=S;S=null,o(...ee)},J.cancel=()=>{d!==null&&clearTimeout(d),d=null,S=null},J.pending=()=>d!==null||S!==null,J}function ye(o,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(o,{timeout:s}):setTimeout(()=>o({timeRemaining:()=>0,didTimeout:!0}),1)}let q=0;function te(o="l"){return`${o}${(++q).toString(36)}`}}),ce("packages/modules/shared/emitter.js",function(a,B){"use strict";Object.defineProperty(a,"WILDCARD",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"Emitter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"gate",{enumerable:!0,get:function(){return h}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",_=new Set(["api","user","init","ai"]);function W(E,n){return E&&E.name?E.name:`#${n}`}class N{#t=new Map;#e;constructor(n="module"){this.#e=String(n)}on(n,z){if(!F(z))return()=>{};let A=this.#t.get(n);return A||(A=new Set,this.#t.set(n,A)),A.add(z),()=>this.off(n,z)}off(n,z){const A=this.#t.get(n);A&&A.delete(z)}count(n){const z=this.#t.get(n);return z?z.size:0}emit(n,z){const A=this.#t.get(n),j=this.#t.get(I);if((!A||A.size===0)&&(!j||j.size===0))return;const b={...z||null,type:n};A&&A.size&&this.#n([...A],b,n),j&&j.size&&this.#n([...j],b,I)}#n(n,z,A){for(let j=0;j<n.length;j++)try{n[j](z)}catch(b){U(`${this.#e}.emit.throw:${A}:${W(n[j],j)}`,`${this.#e}: a '${A}' handler threw; other handlers were unaffected.`,b)}}emitBefore(n,z,A){const j=A??(z&&z.origin),b=_.has(j)?j:"user";let v=!1,P=null;const $=k=>{v=!0,k!=null&&P===null&&(P=String(k))},M={...z||null,type:n,origin:b,get defaultPrevented(){return v},get reason(){return P},preventDefault(k){$(k)}},R=this.#t.get(n);if(!R||R.size===0)return!0;const w=[...R],O=()=>(v&&P===null&&(P="prevented"),v&&z&&typeof z=="object"&&(z.reason=P),!v),X=[];for(let k=0;k<w.length;k++){const T=w[k];try{const V=T(M);V&&F(V.then)?X.push(V):V===!1&&$("prevented")}catch(V){$("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,k)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,V)}}return X.length===0?O():Promise.allSettled(X).then(k=>{for(const T of k)T.status==="rejected"?($("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&$("prevented");return O()})}clear(){this.#t.clear()}}function h(E,n,z,A,j){const b=E.emitBefore(n,A,A.origin),v=()=>(E.emit(z,{...A,reason:A.reason||"prevented"}),!1);return b===!1?v():b&&F(b.then)?b.then(P=>P?j():v()):j()}}),ce("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 I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=B("packages/core/src/internal/util.js").warnOnce;function U(h){if(!h||typeof h!="object")return null;const E=Number(h.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.width);if(Number.isFinite(z)&&z>0)return z}return null}function I(h){if(!h||typeof h!="object")return null;const E=Number(h.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof h.getBoundingClientRect=="function"){const n=h.getBoundingClientRect(),z=n&&Number(n.height);if(Number.isFinite(z)&&z>0)return z}return null}function _(h,E=U){for(const n of h||[]){const z=E(n);if(Number.isFinite(z)&&z>0)return z}return null}function W(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>null,z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(w)}finally{b=!1}return!0};v();const P=E[0],$=h&&h.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,M=$&&$.ResizeObserver;let R=null;if(typeof M=="function"&&E.length){R=new M(()=>{v()});for(const w of E)w&&typeof R.observe=="function"&&R.observe(w)}else E.length&&F("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(R&&typeof R.disconnect=="function")try{R.disconnect()}catch{}R=null}}}function N(h){const E=(h&&Array.isArray(h.targets)?h.targets:[]).filter(Boolean),n=h&&typeof h.read=="function"?h.read:()=>({}),z=h&&typeof h.apply=="function"?h.apply:()=>{},A=Number.isFinite(h&&h.epsilon)?Number(h.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{z(O)}finally{b=!1}return!0};P();const $=E[0],M=h&&h.view||$&&$.ownerDocument&&$.ownerDocument.defaultView||globalThis,R=M&&M.ResizeObserver;let w=null;if(typeof R=="function"&&E.length){w=new R(()=>{P()});for(const O of E)O&&typeof w.observe=="function"&&w.observe(O)}else E.length&&F("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}}}}),ce("packages/modules/layout/length.js",function(a,B){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=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 I(N,h,E){if(N==null)return h;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:_(N,h,E);if(typeof N!="string")return _(N,h,E);const n=N.trim();if(n==="")return h;if(U.test(n))return n;const z=Number(n);return Number.isFinite(z)&&z>=0?`${z}px`:_(N,h,E)}function _(N,h,E){return F(`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 ${h}.`),h}function W(N,h,E){return N==="scroll"?`repeat(${h}, ${E})`:`repeat(${h}, minmax(0, 1fr))`}}),ce("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 F}}),Object.defineProperty(a,"clampToColumns",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"readingOrder",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"columnOrder",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pushDown",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"pullUp",{enumerable:!0,get:function(){return h}}),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 z}}),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 F(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 I(b,v){return b.yPos-v.yPos||b.xPos-v.xPos||_(b,v)}function _(b,v){const P=String(b.id),$=String(v.id);return P<$?-1:P>$?1:0}function W(b,v){return b.xPos-v.xPos||b.yPos-v.yPos||_(b,v)}function N(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(I),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.yPos=X.reduce((k,T)=>Math.max(k,T.yPos+T.ySize),w.yPos)}$.push(w)}return b}function h(b){const v=[];for(const P of[...b].sort(I)){for(;P.yPos>1;){const $={...P,yPos:P.yPos-1};if(v.some(M=>F($,M)))break;P.yPos-=1}v.push(P)}return b}function E(b,v){const P=b.find(w=>w.id===v),$=P?[P]:[],M=b.filter(w=>w!==P).sort(W),R=b.length+2;for(const w of M){for(let O=0;O<R;O++){const X=$.filter(k=>F(w,k));if(X.length===0)break;w.xPos=X.reduce((k,T)=>Math.max(k,T.xPos+T.xSize),w.xPos)}$.push(w)}return b}function n(b){const v=[];for(const P of[...b].sort(W)){for(;P.xPos>1;){const $={...P,xPos:P.xPos-1};if(v.some(M=>F($,M)))break;P.xPos-=1}v.push(P)}return b}function z(b,v,P){return v==="horizontal"?(E(b,P),n(b)):v!=="vertical"?b:(N(b,P),h(b))}function A(b,v,P,$){const M=Math.max(1,Math.min(P,v)),R=b.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=R+$;w++)for(let O=1;O<=v-M+1;O++){const X={xPos:O,yPos:w,xSize:M,ySize:Math.max(1,$)};if(!b.some(k=>F(X,k)))return{xPos:O,yPos:w}}return{xPos:1,yPos:R}}function j(b,v){return b.reduce((P,$)=>Math.max(P,$.yPos+$.ySize-1),v)}}),ce("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 z}}),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 R}}),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 V}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return se}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),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 ae}}),Object.defineProperty(a,"focusHandle",{enumerable:!0,get:function(){return de}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,_=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,h=W.compact,E=W.occupiedRows,n="lat-layout";function z(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)));
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, mock-socket module type declarations
2
+ * Lattice Grid 1.71.3, mock-socket module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, mock-socket module
2
+ * Lattice Grid 1.71.3, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, mock-socket module
2
+ * Lattice Grid 1.71.3, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, mock-socket module
2
+ * Lattice Grid 1.71.3, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, react module type declarations
2
+ * Lattice Grid 1.71.3, react module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */