@toclocoinc/lattice-grid 1.89.0 → 1.89.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +5 -5
  5. package/docs/THEMING.md +27 -0
  6. package/docs/api/adapters.html +1 -1
  7. package/docs/api/ai.html +1 -1
  8. package/docs/api/alarms.html +1 -1
  9. package/docs/api/calendar.html +1 -1
  10. package/docs/api/charts.html +1 -1
  11. package/docs/api/dashboard.html +1 -1
  12. package/docs/api/data-router.html +1 -1
  13. package/docs/api/deckgl.html +1 -1
  14. package/docs/api/designer.html +2 -2
  15. package/docs/api/gantt.html +1 -1
  16. package/docs/api/geometry.html +1 -1
  17. package/docs/api/grid.html +2 -2
  18. package/docs/api/index.html +1 -1
  19. package/docs/api/kanban.html +1 -1
  20. package/docs/api/kpi.html +1 -1
  21. package/docs/api/layout.html +1 -1
  22. package/docs/api/leaflet.html +1 -1
  23. package/docs/api/list.html +1 -1
  24. package/docs/api/mapview.html +1 -1
  25. package/docs/api/mock-socket.html +1 -1
  26. package/docs/api/presets.html +1 -1
  27. package/docs/api/tabs.html +1 -1
  28. package/docs/api/types.html +1 -1
  29. package/docs/api-detail.html +4 -4
  30. package/docs/warnings.json +1 -1
  31. package/lattice-grid.d.ts +1 -1
  32. package/lattice-grid.esm.min.js +3 -3
  33. package/lattice-grid.min.cjs +3 -3
  34. package/lattice-grid.min.css +1 -1
  35. package/lattice-grid.min.js +3 -3
  36. package/modules/ai.d.ts +1 -1
  37. package/modules/ai.esm.min.js +2 -2
  38. package/modules/ai.min.cjs +2 -2
  39. package/modules/ai.min.js +2 -2
  40. package/modules/alarms.d.ts +1 -1
  41. package/modules/alarms.esm.min.js +2 -2
  42. package/modules/alarms.min.cjs +2 -2
  43. package/modules/alarms.min.js +2 -2
  44. package/modules/angular.d.ts +1 -1
  45. package/modules/angular.esm.min.js +2 -2
  46. package/modules/angular.min.cjs +2 -2
  47. package/modules/angular.min.js +2 -2
  48. package/modules/calendar.d.ts +1 -1
  49. package/modules/calendar.esm.min.js +2 -2
  50. package/modules/calendar.min.cjs +2 -2
  51. package/modules/calendar.min.js +2 -2
  52. package/modules/chart-alluvial.d.ts +1 -1
  53. package/modules/chart-alluvial.esm.min.js +1 -1
  54. package/modules/chart-alluvial.min.cjs +1 -1
  55. package/modules/chart-alluvial.min.js +1 -1
  56. package/modules/chart-arc.d.ts +1 -1
  57. package/modules/chart-arc.esm.min.js +1 -1
  58. package/modules/chart-arc.min.cjs +1 -1
  59. package/modules/chart-arc.min.js +1 -1
  60. package/modules/chart-barrace.d.ts +1 -1
  61. package/modules/chart-barrace.esm.min.js +1 -1
  62. package/modules/chart-barrace.min.cjs +1 -1
  63. package/modules/chart-barrace.min.js +1 -1
  64. package/modules/chart-bubblemap.d.ts +1 -1
  65. package/modules/chart-bubblemap.esm.min.js +1 -1
  66. package/modules/chart-bubblemap.min.cjs +1 -1
  67. package/modules/chart-bubblemap.min.js +1 -1
  68. package/modules/chart-bump.d.ts +1 -1
  69. package/modules/chart-bump.esm.min.js +1 -1
  70. package/modules/chart-bump.min.cjs +1 -1
  71. package/modules/chart-bump.min.js +1 -1
  72. package/modules/chart-calendar.d.ts +1 -1
  73. package/modules/chart-calendar.esm.min.js +1 -1
  74. package/modules/chart-calendar.min.cjs +1 -1
  75. package/modules/chart-calendar.min.js +1 -1
  76. package/modules/chart-choropleth.d.ts +1 -1
  77. package/modules/chart-choropleth.esm.min.js +1 -1
  78. package/modules/chart-choropleth.min.cjs +1 -1
  79. package/modules/chart-choropleth.min.js +1 -1
  80. package/modules/chart-decomposition.d.ts +1 -1
  81. package/modules/chart-decomposition.esm.min.js +1 -1
  82. package/modules/chart-decomposition.min.cjs +1 -1
  83. package/modules/chart-decomposition.min.js +1 -1
  84. package/modules/chart-diverging.d.ts +1 -1
  85. package/modules/chart-diverging.esm.min.js +1 -1
  86. package/modules/chart-diverging.min.cjs +1 -1
  87. package/modules/chart-diverging.min.js +1 -1
  88. package/modules/chart-dumbbell.d.ts +1 -1
  89. package/modules/chart-dumbbell.esm.min.js +1 -1
  90. package/modules/chart-dumbbell.min.cjs +1 -1
  91. package/modules/chart-dumbbell.min.js +1 -1
  92. package/modules/chart-fan.d.ts +1 -1
  93. package/modules/chart-fan.esm.min.js +1 -1
  94. package/modules/chart-fan.min.cjs +1 -1
  95. package/modules/chart-fan.min.js +1 -1
  96. package/modules/chart-forcetree.d.ts +1 -1
  97. package/modules/chart-forcetree.esm.min.js +1 -1
  98. package/modules/chart-forcetree.min.cjs +1 -1
  99. package/modules/chart-forcetree.min.js +1 -1
  100. package/modules/chart-hexbin.d.ts +1 -1
  101. package/modules/chart-hexbin.esm.min.js +1 -1
  102. package/modules/chart-hexbin.min.cjs +1 -1
  103. package/modules/chart-hexbin.min.js +1 -1
  104. package/modules/chart-hexmap.d.ts +1 -1
  105. package/modules/chart-hexmap.esm.min.js +1 -1
  106. package/modules/chart-hexmap.min.cjs +1 -1
  107. package/modules/chart-hexmap.min.js +1 -1
  108. package/modules/chart-icicle.d.ts +1 -1
  109. package/modules/chart-icicle.esm.min.js +1 -1
  110. package/modules/chart-icicle.min.cjs +1 -1
  111. package/modules/chart-icicle.min.js +1 -1
  112. package/modules/chart-markermap.d.ts +1 -1
  113. package/modules/chart-markermap.esm.min.js +1 -1
  114. package/modules/chart-markermap.min.cjs +1 -1
  115. package/modules/chart-markermap.min.js +1 -1
  116. package/modules/chart-motion.d.ts +1 -1
  117. package/modules/chart-motion.esm.min.js +1 -1
  118. package/modules/chart-motion.min.cjs +1 -1
  119. package/modules/chart-motion.min.js +1 -1
  120. package/modules/chart-pack.d.ts +1 -1
  121. package/modules/chart-pack.esm.min.js +1 -1
  122. package/modules/chart-pack.min.cjs +1 -1
  123. package/modules/chart-pack.min.js +1 -1
  124. package/modules/chart-parallel.d.ts +1 -1
  125. package/modules/chart-parallel.esm.min.js +1 -1
  126. package/modules/chart-parallel.min.cjs +1 -1
  127. package/modules/chart-parallel.min.js +1 -1
  128. package/modules/chart-pictorial.d.ts +1 -1
  129. package/modules/chart-pictorial.esm.min.js +1 -1
  130. package/modules/chart-pictorial.min.cjs +1 -1
  131. package/modules/chart-pictorial.min.js +1 -1
  132. package/modules/chart-polararea.d.ts +1 -1
  133. package/modules/chart-polararea.esm.min.js +1 -1
  134. package/modules/chart-polararea.min.cjs +1 -1
  135. package/modules/chart-polararea.min.js +1 -1
  136. package/modules/chart-polarscatter.d.ts +1 -1
  137. package/modules/chart-polarscatter.esm.min.js +1 -1
  138. package/modules/chart-polarscatter.min.cjs +1 -1
  139. package/modules/chart-polarscatter.min.js +1 -1
  140. package/modules/chart-pyramid.d.ts +1 -1
  141. package/modules/chart-pyramid.esm.min.js +1 -1
  142. package/modules/chart-pyramid.min.cjs +1 -1
  143. package/modules/chart-pyramid.min.js +1 -1
  144. package/modules/chart-radialbar.d.ts +1 -1
  145. package/modules/chart-radialbar.esm.min.js +1 -1
  146. package/modules/chart-radialbar.min.cjs +1 -1
  147. package/modules/chart-radialbar.min.js +1 -1
  148. package/modules/chart-ridgeline.d.ts +1 -1
  149. package/modules/chart-ridgeline.esm.min.js +1 -1
  150. package/modules/chart-ridgeline.min.cjs +1 -1
  151. package/modules/chart-ridgeline.min.js +1 -1
  152. package/modules/chart-roc.d.ts +1 -1
  153. package/modules/chart-roc.esm.min.js +1 -1
  154. package/modules/chart-roc.min.cjs +1 -1
  155. package/modules/chart-roc.min.js +1 -1
  156. package/modules/chart-serpentine.d.ts +1 -1
  157. package/modules/chart-serpentine.esm.min.js +1 -1
  158. package/modules/chart-serpentine.min.cjs +1 -1
  159. package/modules/chart-serpentine.min.js +1 -1
  160. package/modules/chart-slope.d.ts +1 -1
  161. package/modules/chart-slope.esm.min.js +1 -1
  162. package/modules/chart-slope.min.cjs +1 -1
  163. package/modules/chart-slope.min.js +1 -1
  164. package/modules/chart-spiral.d.ts +1 -1
  165. package/modules/chart-spiral.esm.min.js +1 -1
  166. package/modules/chart-spiral.min.cjs +1 -1
  167. package/modules/chart-spiral.min.js +1 -1
  168. package/modules/chart-splom.d.ts +1 -1
  169. package/modules/chart-splom.esm.min.js +1 -1
  170. package/modules/chart-splom.min.cjs +1 -1
  171. package/modules/chart-splom.min.js +1 -1
  172. package/modules/chart-tree.d.ts +1 -1
  173. package/modules/chart-tree.esm.min.js +1 -1
  174. package/modules/chart-tree.min.cjs +1 -1
  175. package/modules/chart-tree.min.js +1 -1
  176. package/modules/chart-venn.d.ts +1 -1
  177. package/modules/chart-venn.esm.min.js +1 -1
  178. package/modules/chart-venn.min.cjs +1 -1
  179. package/modules/chart-venn.min.js +1 -1
  180. package/modules/chart-voronoi.d.ts +1 -1
  181. package/modules/chart-voronoi.esm.min.js +1 -1
  182. package/modules/chart-voronoi.min.cjs +1 -1
  183. package/modules/chart-voronoi.min.js +1 -1
  184. package/modules/chart-waffle.d.ts +1 -1
  185. package/modules/chart-waffle.esm.min.js +1 -1
  186. package/modules/chart-waffle.min.cjs +1 -1
  187. package/modules/chart-waffle.min.js +1 -1
  188. package/modules/chart-wordcloud.d.ts +1 -1
  189. package/modules/chart-wordcloud.esm.min.js +1 -1
  190. package/modules/chart-wordcloud.min.cjs +1 -1
  191. package/modules/chart-wordcloud.min.js +1 -1
  192. package/modules/charts.d.ts +1 -1
  193. package/modules/charts.esm.min.js +2 -2
  194. package/modules/charts.min.cjs +2 -2
  195. package/modules/charts.min.js +2 -2
  196. package/modules/dashboard.d.ts +1 -1
  197. package/modules/dashboard.esm.min.js +2 -2
  198. package/modules/dashboard.min.cjs +2 -2
  199. package/modules/dashboard.min.js +2 -2
  200. package/modules/data-router.d.ts +1 -1
  201. package/modules/data-router.esm.min.js +2 -2
  202. package/modules/data-router.min.cjs +2 -2
  203. package/modules/data-router.min.js +2 -2
  204. package/modules/deckgl.d.ts +1 -1
  205. package/modules/deckgl.esm.min.js +2 -2
  206. package/modules/deckgl.min.cjs +2 -2
  207. package/modules/deckgl.min.js +2 -2
  208. package/modules/designer.d.ts +1 -1
  209. package/modules/designer.esm.min.js +187 -73
  210. package/modules/designer.esm.min.js.map +2 -2
  211. package/modules/designer.min.cjs +187 -73
  212. package/modules/designer.min.js +187 -73
  213. package/modules/designer.min.js.map +2 -2
  214. package/modules/devtools.d.ts +1 -1
  215. package/modules/devtools.esm.min.js +1 -1
  216. package/modules/devtools.min.cjs +1 -1
  217. package/modules/devtools.min.js +1 -1
  218. package/modules/dhtmlx-compat.d.ts +1 -1
  219. package/modules/dhtmlx-compat.esm.min.js +2 -2
  220. package/modules/dhtmlx-compat.min.cjs +2 -2
  221. package/modules/dhtmlx-compat.min.js +2 -2
  222. package/modules/gantt.d.ts +1 -1
  223. package/modules/gantt.esm.min.js +2 -2
  224. package/modules/gantt.min.cjs +2 -2
  225. package/modules/gantt.min.js +2 -2
  226. package/modules/geo-europe-nuts.d.ts +1 -1
  227. package/modules/geo-europe-nuts.esm.min.js +1 -1
  228. package/modules/geo-europe-nuts.min.cjs +1 -1
  229. package/modules/geo-europe-nuts.min.js +1 -1
  230. package/modules/geo-uk.d.ts +1 -1
  231. package/modules/geo-uk.esm.min.js +1 -1
  232. package/modules/geo-uk.min.cjs +1 -1
  233. package/modules/geo-uk.min.js +1 -1
  234. package/modules/geo-us-states.d.ts +1 -1
  235. package/modules/geo-us-states.esm.min.js +1 -1
  236. package/modules/geo-us-states.min.cjs +1 -1
  237. package/modules/geo-us-states.min.js +1 -1
  238. package/modules/geo-world-110m.d.ts +1 -1
  239. package/modules/geo-world-110m.esm.min.js +1 -1
  240. package/modules/geo-world-110m.min.cjs +1 -1
  241. package/modules/geo-world-110m.min.js +1 -1
  242. package/modules/geo-world-50m.d.ts +1 -1
  243. package/modules/geo-world-50m.esm.min.js +1 -1
  244. package/modules/geo-world-50m.min.cjs +1 -1
  245. package/modules/geo-world-50m.min.js +1 -1
  246. package/modules/geometry.d.ts +1 -1
  247. package/modules/geometry.esm.min.js +2 -2
  248. package/modules/geometry.min.cjs +2 -2
  249. package/modules/geometry.min.js +2 -2
  250. package/modules/htmx.d.ts +1 -1
  251. package/modules/htmx.esm.min.js +3 -3
  252. package/modules/htmx.min.cjs +3 -3
  253. package/modules/htmx.min.js +3 -3
  254. package/modules/kanban.d.ts +1 -1
  255. package/modules/kanban.esm.min.js +2 -2
  256. package/modules/kanban.min.cjs +2 -2
  257. package/modules/kanban.min.js +2 -2
  258. package/modules/kpi.d.ts +1 -1
  259. package/modules/kpi.esm.min.js +2 -2
  260. package/modules/kpi.min.cjs +2 -2
  261. package/modules/kpi.min.js +2 -2
  262. package/modules/layout.d.ts +1 -1
  263. package/modules/layout.esm.min.js +2 -2
  264. package/modules/layout.min.cjs +2 -2
  265. package/modules/layout.min.js +2 -2
  266. package/modules/leaflet.d.ts +1 -1
  267. package/modules/leaflet.esm.min.js +2 -2
  268. package/modules/leaflet.min.cjs +2 -2
  269. package/modules/leaflet.min.js +2 -2
  270. package/modules/list.d.ts +1 -1
  271. package/modules/list.esm.min.js +2 -2
  272. package/modules/list.min.cjs +2 -2
  273. package/modules/list.min.js +2 -2
  274. package/modules/mapview.d.ts +1 -1
  275. package/modules/mapview.esm.min.js +2 -2
  276. package/modules/mapview.min.cjs +2 -2
  277. package/modules/mapview.min.js +2 -2
  278. package/modules/mock-socket.d.ts +1 -1
  279. package/modules/mock-socket.esm.min.js +1 -1
  280. package/modules/mock-socket.min.cjs +1 -1
  281. package/modules/mock-socket.min.js +1 -1
  282. package/modules/presets/antd5.css +9 -0
  283. package/modules/presets/bootstrap5.css +9 -0
  284. package/modules/presets/fluent2.css +9 -0
  285. package/modules/presets/material3.css +9 -0
  286. package/modules/presets.d.ts +1 -1
  287. package/modules/presets.esm.min.js +2 -2
  288. package/modules/presets.min.cjs +2 -2
  289. package/modules/presets.min.js +2 -2
  290. package/modules/react.d.ts +1 -1
  291. package/modules/react.esm.min.js +2 -2
  292. package/modules/react.min.cjs +2 -2
  293. package/modules/react.min.js +2 -2
  294. package/modules/svelte.d.ts +1 -1
  295. package/modules/svelte.esm.min.js +2 -2
  296. package/modules/svelte.min.cjs +2 -2
  297. package/modules/svelte.min.js +2 -2
  298. package/modules/tabs.d.ts +1 -1
  299. package/modules/tabs.esm.min.js +2 -2
  300. package/modules/tabs.min.cjs +2 -2
  301. package/modules/tabs.min.js +2 -2
  302. package/modules/vue.d.ts +1 -1
  303. package/modules/vue.esm.min.js +2 -2
  304. package/modules/vue.min.cjs +2 -2
  305. package/modules/vue.min.js +2 -2
  306. package/modules/webcomponent.d.ts +1 -1
  307. package/modules/webcomponent.esm.min.js +3 -3
  308. package/modules/webcomponent.min.cjs +3 -3
  309. package/modules/webcomponent.min.js +3 -3
  310. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, kpi module
2
+ * Lattice Grid 1.89.1, kpi module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Wt){"use strict";var Ft=Object.create(null),Lt=Object.create(null);function _e(g,ce){Ft[g]=ce}function It(g){var ce=Lt[g];if(ce)return ce;var X=Object.create(null);Lt[g]=X;var J=Ft[g];if(!J)throw new Error("[lattice] missing module: "+g);return J(X,It),X}_e("packages/core/src/internal/util.js",function(g,ce){"use strict";Object.defineProperty(g,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(g,"reportedWarnings",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"warnOnce",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"infoOnce",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"resetWarnings",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"fail",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"invariant",{enumerable:!0,get:function(){return b}}),Object.defineProperty(g,"DEV",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"isObject",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(g,"isNil",{enumerable:!0,get:function(){return j}}),Object.defineProperty(g,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"isCtor",{enumerable:!0,get:function(){return D}}),Object.defineProperty(g,"pathGetter",{enumerable:!0,get:function(){return le}}),Object.defineProperty(g,"pathSetter",{enumerable:!0,get:function(){return h}}),Object.defineProperty(g,"getPath",{enumerable:!0,get:function(){return v}}),Object.defineProperty(g,"setPath",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"humanise",{enumerable:!0,get:function(){return M}}),Object.defineProperty(g,"escapeHtml",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(g,"titleCase",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(g,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(g,"toArray",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"merge",{enumerable:!0,get:function(){return z}}),Object.defineProperty(g,"mergeRow",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"Lru",{enumerable:!0,get:function(){return be}}),Object.defineProperty(g,"collator",{enumerable:!0,get:function(){return B}}),Object.defineProperty(g,"defaultCompare",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"now",{enumerable:!0,get:function(){return S}}),Object.defineProperty(g,"nextFrame",{enumerable:!0,get:function(){return e}}),Object.defineProperty(g,"cancelFrame",{enumerable:!0,get:function(){return r}}),Object.defineProperty(g,"frameBatched",{enumerable:!0,get:function(){return o}}),Object.defineProperty(g,"settleDebounce",{enumerable:!0,get:function(){return i}}),Object.defineProperty(g,"whenIdle",{enumerable:!0,get:function(){return n}}),Object.defineProperty(g,"uid",{enumerable:!0,get:function(){return c}});const X="1.89.0";async function J(){return X}const T="1.89.0",A=new Set,m=2e3;function R(a){if(A.add(a),A.size>m){const l=A.values().next().value;l!==void 0&&A.delete(l)}}const u=[],E=500;function L(a,l,f){u.push({key:a,level:l,message:f.map(y=>typeof y=="string"?y:U(y)).join(" "),at:Date.now()}),u.length>E&&u.shift()}function U(a){if(a instanceof Error)return a.message;try{return JSON.stringify(a)}catch{return String(a)}}function P(){return u.map(a=>({...a}))}function F(a){if(a.length===0||typeof a[0]!="string")return a;const l=a[0].replace(/^\[lattice\]\s*/,"");return l===a[0]?a:[l,...a.slice(1)]}function _(a,...l){if(A.has(a))return;R(a);const f=F(l);L(a,"warn",f),console.warn("[lattice]",...f)}function Y(a,...l){if(A.has(a))return;R(a);const f=F(l);L(a,"info",f),console.info("[lattice]",...f)}function G(){A.clear(),u.length=0}function d(a,l){const f=new Error(`[lattice] ${a}`);throw l!==void 0&&(f.cause=l),f}function b(a,l){a||d(l)}const k=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function p(a){return a!==null&&typeof a=="object"&&!Array.isArray(a)}function w(a){return typeof a=="function"}function j(a){return a==null}function O(a){return a==null||a===""}function D(a){return typeof a!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(a))?!0:!!(a.prototype&&Object.getOwnPropertyNames(a.prototype).length>1)}const K=new Map;function le(a){let l=K.get(a);if(l)return l;if(!a.includes("."))l=f=>f?.[a];else{const f=a.split("."),y=f.length;l=x=>{let te=x;for(let re=0;re<y;re++){if(te==null)return;te=te[f[re]]}return te}}return K.set(a,l),l}const q=new Map;function h(a){let l=q.get(a);if(l)return l;if(!a.includes("."))l=(f,y)=>{f!=null&&(f[a]=y)};else{const f=a.split("."),y=f.length-1;l=(x,te)=>{let re=x;for(let fe=0;fe<y;fe++){if(re==null)return;const ke=f[fe];re[ke]==null&&(re[ke]={}),re=re[ke]}re!=null&&(re[f[y]]=te)}}return q.set(a,l),l}function v(a,l){return le(l)(a)}function I(a,l,f){h(l)(a,f)}function M(a){return a?(a.includes(".")?a.slice(a.lastIndexOf(".")+1):a).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 H={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ue(a){const l=a==null?"":String(a);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,f=>H[f]):l}function ae(a){return String(a).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(a,l,f){if(a!==void 0)return a===!0?{enabled:!0,...f}:a===!1?{enabled:!1}:p(a)?a:{[l]:a,enabled:!0}}function N(a){return a==null?[]:Array.isArray(a)?a:[a]}const C=Object.freeze(new Set(["__proto__","constructor","prototype"]));function z(a,l){if(!p(a))return p(l)?{...l}:l;if(!p(l))return l===void 0?a:l;const f={...a};for(const y of Object.keys(l)){if(C.has(y))continue;const x=l[y];x!==void 0&&(f[y]=p(x)&&p(f[y])?z(f[y],x):x)}return f}function ee(a,l){if(!p(a)||!p(l)||a===l)return l;const f=Object.create(Object.getPrototypeOf(a));return Object.assign(f,a,l),f}class be{#e;#t=new Map;#n;constructor(l=256,f=null){this.#e=l,this.#n=f}get size(){return this.#t.size}get max(){return this.#e}set max(l){this.#e=l,this.#r()}has(l){return this.#t.has(l)}get(l){const f=this.#t;if(!f.has(l))return;const y=f.get(l);return f.delete(l),f.set(l,y),y}peek(l){return this.#t.get(l)}set(l,f){const y=this.#t;return y.has(l)&&y.delete(l),y.set(l,f),this.#r(),f}delete(l){const f=this.#t.get(l);return this.#t.delete(l)&&this.#n&&this.#n(f,l),f}clear(){if(this.#n)for(const[l,f]of this.#t)this.#n(f,l);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const l=this.#t;for(;l.size>this.#e;){const f=l.keys().next().value,y=l.get(f);l.delete(f),this.#n&&this.#n(y,f)}}}const $=new Map;function B(a,l){const f=`${a||""}|${l?JSON.stringify(l):""}`;let y=$.get(f);return y||(y=new Intl.Collator(a||void 0,{numeric:!0,sensitivity:"variant",...l}),$.set(f,y)),y}function W(a,l){if(a===l)return 0;if(a==null)return 1;if(l==null)return-1;if(typeof a=="number"&&typeof l=="number")return Number.isNaN(a)?Number.isNaN(l)?0:1:Number.isNaN(l)||a<l?-1:a>l?1:0;const f=String(a),y=String(l);return f<y?-1:f>y?1:0}function S(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const t=typeof requestAnimationFrame=="function";function e(a){return t?requestAnimationFrame(a):setTimeout(()=>a(S()),16)}function r(a){a!=null&&(t?cancelAnimationFrame(a):clearTimeout(a))}function o(a){let l=null,f=null;const y=()=>{l=null;const te=f;f=null,a(...te||[])},x=(...te)=>{f=te,l===null&&(l=e(y))};return x.cancel=()=>{r(l),l=null,f=null},x.flush=()=>{l!==null&&(r(l),y())},x}function i(a,l){let f=null,y=null;const x=()=>{if(f=null,y===null)return;const fe=y;y=null,a(...fe),te()},te=()=>{f=setTimeout(x,l),typeof f?.unref=="function"&&f.unref()},re=(...fe)=>{f===null?(a(...fe),te()):(y=fe,clearTimeout(f),te())};return re.flush=()=>{if(f!==null&&clearTimeout(f),f=null,y===null)return;const fe=y;y=null,a(...fe)},re.cancel=()=>{f!==null&&clearTimeout(f),f=null,y=null},re.pending=()=>f!==null||y!==null,re}function n(a,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(a,{timeout:l}):setTimeout(()=>a({timeRemaining:()=>0,didTimeout:!0}),1)}let s=0;function c(a="l"){return`${a}${(++s).toString(36)}`}}),_e("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 u}}),Object.defineProperty(g,"accessorFor",{enumerable:!0,get:function(){return L}}),Object.defineProperty(g,"bandFor",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"statusFor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"barBounds",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"barPercent",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"formatValue",{enumerable:!0,get:function(){return G}});const X=ce("packages/core/src/internal/util.js"),J=X.isNil,T=X.isFunction,A=X.pathGetter,m=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function R(d){if(J(d)||d==="")return null;const b=typeof d=="number"?d:Number(d);return Number.isFinite(b)?b:null}function u(d){switch(d){case"count":{let b=0;return{add(){b+=1},remove(){b-=1},value(){return b}}}case"sum":{let b=0,k=0;return{add(p){const w=R(p);w!==null&&(b+=w,k+=1)},remove(p){const w=R(p);w!==null&&(b-=w,k-=1)},value(){return k>0?b:0}}}case"avg":{let b=0,k=0;return{add(p){const w=R(p);w!==null&&(b+=w,k+=1)},remove(p){const w=R(p);w!==null&&(b-=w,k-=1)},value(){return k>0?b/k:null}}}case"countDistinct":{const b=new Map;return{add(k){J(k)||b.set(k,(b.get(k)||0)+1)},remove(k){if(J(k))return;const p=b.get(k);p&&(p===1?b.delete(k):b.set(k,p-1))},value(){return b.size}}}case"min":case"max":return E(d==="max");default:return null}}function E(d){const b=new Map;let k=null,p=!1;const w=(O,D)=>d?O>D:O<D,j=()=>{let O=null;for(const D of b.keys())(O===null||w(D,O))&&(O=D);return O};return{add(O){const D=R(O);D!==null&&(b.set(D,(b.get(D)||0)+1),!p&&(k===null||w(D,k))&&(k=D))},remove(O){const D=R(O);if(D===null)return;const K=b.get(D);K&&(K===1?(b.delete(D),D===k&&(p=!0)):b.set(D,K-1))},value(){return b.size===0?null:(p&&(k=j(),p=!1),k)}}}function L(d){return T(d)?d:typeof d=="string"&&d?A(d):()=>{}}function U(d,b){if(d==null||Number.isNaN(d))return null;if(Array.isArray(b.bands)){for(const w of b.bands){const j=J(w.min)?-1/0:w.min,O=J(w.max)?1/0:w.max;if(d>=j&&d<O)return w.status??null}return null}const k=b.thresholds;return!k||J(k.warn)||J(k.critical)?null:k.direction==="lowerIsBetter"?d<=k.warn?"good":d<=k.critical?"warn":"critical":d>=k.warn?"good":d>=k.critical?"warn":"critical"}const P="unknown";function F(d,b,k){return k?U(d,b):P}function _(d){if(!d)return null;const b=[];let k=!1;const p=O=>{if(J(O))return!1;const D=Number(O);return Number.isFinite(D)?(b.push(D),!0):!1};if(Array.isArray(d.bands)&&d.bands.length)for(const O of d.bands||[])p(O&&O.min)||(k=!0),p(O&&O.max)||(k=!0);else d.thresholds&&!J(d.thresholds.warn)&&!J(d.thresholds.critical)&&(p(d.thresholds.warn),p(d.thresholds.critical)),k=!0;if(p(d.target),k&&b.push(0),!b.length)return null;const w=Math.min(...b),j=Math.max(...b);return j>w?{lo:w,hi:j}:null}function Y(d,b){if(!b||J(d))return null;const k=Number(d);if(!Number.isFinite(k))return null;const p=b.hi-b.lo;return p?Math.max(0,Math.min(1,(k-b.lo)/p))*100:null}function G(d,b,k="—"){if(d==null||Number.isNaN(d))return k;const p=typeof b=="string"?{type:b}:b||{},w=p.type||"number",j=p.locale||void 0,O={};w==="currency"?(O.style="currency",O.currency=p.currency||"USD"):w==="percent"?O.style="percent":w==="compact"&&(O.notation="compact",typeof p.currency=="string"&&p.currency&&(O.style="currency",O.currency=p.currency)),J(p.decimals)||(O.minimumFractionDigits=p.decimals,O.maximumFractionDigits=p.decimals);const D=typeof p.prefix=="string"?p.prefix:"",K=typeof p.suffix=="string"?p.suffix:"";try{return D+new Intl.NumberFormat(j,O).format(d)+K}catch{return D+String(d)+K}}}),_e("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 u}}),Object.defineProperty(g,"buildFromParentKey",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"assignLevels",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"resolveTree",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"buildTree",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"indexTree",{enumerable:!0,get:function(){return _}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.warnOnce,A="",m="\0tree:";function R(Y,G){return{physical:Y,key:G,level:0,children:[],value:void 0}}function u(Y,G){const d=[],b=new Map;for(let k=0;k<Y.length;k++){const p=Y[k],w=G.pathOf(p),j=Array.isArray(w)?w.map(D=>String(D)):[];if(!j.length){const D=R(p,G.keyOf(p));d.push(D);continue}let O=null;for(let D=0;D<j.length;D++){const K=j.slice(0,D+1).join(A),le=D===j.length-1;let q=b.get(K);q&&le&&q.physical===-1&&(q.physical=p,q.key=G.keyOf(p)),q||(q=R(le?p:-1,le?G.keyOf(p):m+K),q.level=D,q.value=j[D],b.set(K,q),O?O.children.push(q):d.push(q)),O=q}}return{roots:d,nodes:b}}function E(Y,G){const d=new Map,b=[];for(let j=0;j<Y.length;j++){const O=Y[j],D=G.keyOf(O),K=R(O,D);d.set(D,K);const le=G.parentOf(O);le!=null&&le!==""&&b.push({node:K,parent:String(le)})}let k=null;const p=new Map;for(const{node:j,parent:O}of b){const D=d.get(O);if(D){p.set(j.key,D);continue}G.orphans&&G.orphans!=="root"&&(k||(k=R(-1,`${m}orphans`),k.value=G.orphans),p.set(j.key,k))}const w=[];for(const j of d.values()){const O=p.get(j.key);O?O.children.push(j):w.push(j)}return k&&k.children.length&&w.push(k),{roots:L(w,d,G.orphans,k),nodes:d}}function L(Y,G,d,b){const k=new Set,p=[...Y];for(;p.length;){const K=p.pop();if(!k.has(K.key)){k.add(K.key);for(const le of K.children)p.push(le)}}const w=[];for(const K of G.values())k.has(K.key)||w.push(K);if(!w.length)return Y;const j=!!d&&d!=="root";T("tree.cycle",`tree.parentKey produced ${w.length} row(s) inside a parent cycle; `+(j?`they are shown under "${d}".`:"they are shown at the root."));for(const K of w)K.children=K.children.filter(le=>k.has(le.key));if(!j)return[...Y,...w];let O=b;const D=[...Y];return O||(O=R(-1,`${m}orphans`),O.value=d,D.push(O)),O.children.push(...w),D}function U(Y){let G=0;const d=(b,k)=>{for(const p of b)p.level=k,k>G&&(G=k),p.children.length&&d(p.children,k+1)};return d(Y,0),G}function P(Y,G){if(!Y||typeof Y!="object")return null;const d=Y.path,b=Y.parentKey,k=J(Y.hasChildren)?p=>!!Y.hasChildren(G.dataAt(p)):null;if(J(d))return{mode:"path",pathOf:p=>d(G.dataAt(p)),keyOf:G.keyOf,declaresChildren:k};if(b!=null){const p=J(b)?b:w=>w?.[b];return{mode:"parentKey",parentOf:w=>p(G.dataAt(w)),keyOf:G.keyOf,orphans:Y.orphans||"root",declaresChildren:k}}return T("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function F(Y,G){const d=G.mode==="path"?u(Y,G):E(Y,G),b=U(d.roots);return{...d,depth:b}}function _(Y,G){const d=new Map,b=k=>{for(let p=0;p<k.length;p++){const w=k[p];if(w.physical>=0){const j=G?G(w.physical):!1,O=j&&w.children.length===0;d.set(w.physical,{level:w.level,posinset:p+1,setsize:k.length,hasChildren:w.children.length>0||j,lazy:O})}w.children.length&&b(w.children)}};return b(Y),d}}),_e("packages/modules/kpi/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"worseOf",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"resolveHierarchy",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"decorateNodes",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"allNodes",{enumerable:!0,get:function(){return b}}),Object.defineProperty(g,"visibleNodes",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"branchKeys",{enumerable:!0,get:function(){return p}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.isObject,A=X.warnOnce,m=ce("packages/core/src/source/tree.js"),R=m.resolveTree,u=m.buildTree,E=".",L=Object.freeze({good:1,warn:2,critical:3}),U=Object.freeze([null,"good","warn","critical"]);function P(w){return!!w&&w.kind!=="clock"&&(w.value===null||w.value===void 0)}function F(w,j){const O=Math.max(L[w]||0,L[j]||0);return U[O]}function _(w,j){if(!j.length||w===!1)return null;if(w==null)return j.some(h=>h.id.includes(E))&&A("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const O=T(w)?w:{},D=j.map((h,v)=>v),K=h=>j[h].id;if(J(O.path)||O.parentKey!==null&&O.parentKey!==void 0){const h=R(O,{dataAt:v=>j[v].spec,keyOf:K});return h?Y({...u(D,h),mode:h.mode},j):null}const le=typeof O.separator=="string"&&O.separator?O.separator:E;if(!j.some(h=>h.id.includes(le)))return null;const q=R({path:h=>String(h).split(le)},{dataAt:h=>j[h].id,keyOf:K});return Y({...u(D,q),mode:"id"},j)}function Y(w,j){const O=new Set,D=new Set(j.map(q=>q.id)),K=(q,h)=>{for(const v of q){const I=v.physical>=0?v.key:v.value===null||v.value===void 0?"":String(v.value),M=`${h}/${I}`;v.physical>=0?O.add(v.physical):D.has(M)||(v.key=M,D.add(M)),K(v.children,M)}};K(w.roots,"");const le=j.filter((q,h)=>!O.has(h)).map(q=>q.id);return le.length&&A("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 G(w,j){return w&&w.spec&&w.spec.label!==null&&w.spec.label!==void 0?String(w.spec.label):j!=null?String(j):w?w.label:""}function d(w,j,O,D){const K=(le,q,h,v)=>{const I=le.physical>=0?j[le.physical]:null,M=I?O.get(I.id):null,H=le.children.map((C,z)=>K(C,q+1,z,le.children.length)),ue=M?M.status:null;let ae=L[ue]?ue:null,ve=ue==="unknown"||P(M)?1:0,N=M?1:0;for(const C of H)ae=F(ae,C.rollup),ve+=C.unknown,N+=C.items;return{key:le.key,id:M?M.id:null,label:G(I,le.value),level:q,posinset:h+1,setsize:v,hasChildren:H.length>0,expanded:H.length>0&&D.has(le.key),children:H,tile:M,value:M?M.value:null,formatted:M?M.formatted:null,status:ue??null,rollup:ae,unknown:ve,items:N}};return w.roots.map((le,q)=>K(le,0,q,w.roots.length))}function b(w){const j=[],O=D=>{for(const K of D)j.push(K),O(K.children)};return O(w),j}function k(w){const j=[],O=D=>{for(const K of D)j.push(K),K.expanded&&O(K.children)};return O(w),j}function p(w){const j=[],O=D=>{for(const K of D)K.children.length&&(j.push(K.key),O(K.children))};return O(w),j}}),_e("packages/modules/kpi/messages.js",function(g,ce){"use strict";Object.defineProperty(g,"FALLBACK_EN",{enumerable:!0,get:function(){return A}}),Object.defineProperty(g,"resolveMessages",{enumerable:!0,get:function(){return R}}),Object.defineProperty(g,"fallbackT",{enumerable:!0,get:function(){return u}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.isObject,A=Object.freeze({"kpi.status.good":"good","kpi.status.warn":"warn","kpi.status.critical":"critical","kpi.status.unknown":"No data","kpi.status.stale":"No recent data","kpi.engine":"computed by the data engine over every matching row","kpi.group.name":"KPI: {name}","kpi.group.unnamed":"KPI","kpi.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function m(E,L){return L?E.replace(/\{(\w+)\}/g,(U,P)=>P in L?String(L[P]):U):E}function R(E){const L=T(E.messages)&&J(E.messages.t)&&E.messages||T(E.grid)&&T(E.grid.messages)&&J(E.grid.messages.t)&&E.grid.messages||null;return(U,P)=>{if(L){let F;try{F=L.t(U,P)}catch{F=null}if(typeof F=="string"&&F&&F!==U)return F}return m(A[U]||U,P)}}const u=R({})}),_e("packages/modules/kpi/view.js",function(g,ce){"use strict";Object.defineProperty(g,"NS",{enumerable:!0,get:function(){return u}}),Object.defineProperty(g,"EMPTY_TEXT",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"Emitter",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"injectStyles",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"sparkPoints",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"tileMinFor",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"renderKPI",{enumerable:!0,get:function(){return le}});const J=ce("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,A=ce("packages/modules/kpi/tree.js").visibleNodes,R=ce("packages/modules/kpi/messages.js").fallbackT,u="lat-kpi",E=R("kpi.status.unknown"),L=R,U=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function P(i,n){return n?i(`kpi.status.${n}`):""}function F(i){return i&&i.stale?"kpi.status.stale":"kpi.status.unknown"}class _{constructor(){this.map=new Map}on(n,s){return this.map.has(n)||this.map.set(n,new Set),this.map.get(n).add(s),()=>this.off(n,s)}off(n,s){this.map.get(n)?.delete(s)}emit(n,s){for(const c of this.map.get(n)||[])c(s)}}function Y(i){if(!i||i.getElementById&&i.getElementById(`${u}-styles`))return;const n=i.createElement("style");n.id=`${u}-styles`,n.setAttribute("id",`${u}-styles`),n.textContent=`
6
+ (function(Wt){"use strict";var Ft=Object.create(null),Lt=Object.create(null);function _e(g,ce){Ft[g]=ce}function It(g){var ce=Lt[g];if(ce)return ce;var X=Object.create(null);Lt[g]=X;var J=Ft[g];if(!J)throw new Error("[lattice] missing module: "+g);return J(X,It),X}_e("packages/core/src/internal/util.js",function(g,ce){"use strict";Object.defineProperty(g,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(g,"reportedWarnings",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"warnOnce",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"infoOnce",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"resetWarnings",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"fail",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"invariant",{enumerable:!0,get:function(){return b}}),Object.defineProperty(g,"DEV",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"isObject",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(g,"isNil",{enumerable:!0,get:function(){return j}}),Object.defineProperty(g,"isBlank",{enumerable:!0,get:function(){return O}}),Object.defineProperty(g,"isCtor",{enumerable:!0,get:function(){return D}}),Object.defineProperty(g,"pathGetter",{enumerable:!0,get:function(){return le}}),Object.defineProperty(g,"pathSetter",{enumerable:!0,get:function(){return h}}),Object.defineProperty(g,"getPath",{enumerable:!0,get:function(){return v}}),Object.defineProperty(g,"setPath",{enumerable:!0,get:function(){return I}}),Object.defineProperty(g,"humanise",{enumerable:!0,get:function(){return M}}),Object.defineProperty(g,"escapeHtml",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(g,"titleCase",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(g,"expand",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(g,"toArray",{enumerable:!0,get:function(){return N}}),Object.defineProperty(g,"merge",{enumerable:!0,get:function(){return z}}),Object.defineProperty(g,"mergeRow",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(g,"Lru",{enumerable:!0,get:function(){return be}}),Object.defineProperty(g,"collator",{enumerable:!0,get:function(){return B}}),Object.defineProperty(g,"defaultCompare",{enumerable:!0,get:function(){return W}}),Object.defineProperty(g,"now",{enumerable:!0,get:function(){return S}}),Object.defineProperty(g,"nextFrame",{enumerable:!0,get:function(){return e}}),Object.defineProperty(g,"cancelFrame",{enumerable:!0,get:function(){return r}}),Object.defineProperty(g,"frameBatched",{enumerable:!0,get:function(){return o}}),Object.defineProperty(g,"settleDebounce",{enumerable:!0,get:function(){return i}}),Object.defineProperty(g,"whenIdle",{enumerable:!0,get:function(){return n}}),Object.defineProperty(g,"uid",{enumerable:!0,get:function(){return c}});const X="1.89.1";async function J(){return X}const T="1.89.1",A=new Set,m=2e3;function R(a){if(A.add(a),A.size>m){const l=A.values().next().value;l!==void 0&&A.delete(l)}}const u=[],E=500;function L(a,l,f){u.push({key:a,level:l,message:f.map(y=>typeof y=="string"?y:U(y)).join(" "),at:Date.now()}),u.length>E&&u.shift()}function U(a){if(a instanceof Error)return a.message;try{return JSON.stringify(a)}catch{return String(a)}}function P(){return u.map(a=>({...a}))}function F(a){if(a.length===0||typeof a[0]!="string")return a;const l=a[0].replace(/^\[lattice\]\s*/,"");return l===a[0]?a:[l,...a.slice(1)]}function _(a,...l){if(A.has(a))return;R(a);const f=F(l);L(a,"warn",f),console.warn("[lattice]",...f)}function Y(a,...l){if(A.has(a))return;R(a);const f=F(l);L(a,"info",f),console.info("[lattice]",...f)}function G(){A.clear(),u.length=0}function d(a,l){const f=new Error(`[lattice] ${a}`);throw l!==void 0&&(f.cause=l),f}function b(a,l){a||d(l)}const k=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function p(a){return a!==null&&typeof a=="object"&&!Array.isArray(a)}function w(a){return typeof a=="function"}function j(a){return a==null}function O(a){return a==null||a===""}function D(a){return typeof a!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(a))?!0:!!(a.prototype&&Object.getOwnPropertyNames(a.prototype).length>1)}const K=new Map;function le(a){let l=K.get(a);if(l)return l;if(!a.includes("."))l=f=>f?.[a];else{const f=a.split("."),y=f.length;l=x=>{let te=x;for(let re=0;re<y;re++){if(te==null)return;te=te[f[re]]}return te}}return K.set(a,l),l}const q=new Map;function h(a){let l=q.get(a);if(l)return l;if(!a.includes("."))l=(f,y)=>{f!=null&&(f[a]=y)};else{const f=a.split("."),y=f.length-1;l=(x,te)=>{let re=x;for(let fe=0;fe<y;fe++){if(re==null)return;const ke=f[fe];re[ke]==null&&(re[ke]={}),re=re[ke]}re!=null&&(re[f[y]]=te)}}return q.set(a,l),l}function v(a,l){return le(l)(a)}function I(a,l,f){h(l)(a,f)}function M(a){return a?(a.includes(".")?a.slice(a.lastIndexOf(".")+1):a).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 H={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ue(a){const l=a==null?"":String(a);return/[&<>"']/.test(l)?l.replace(/[&<>"']/g,f=>H[f]):l}function ae(a){return String(a).replace(/\w\S*/g,l=>l[0].toUpperCase()+l.slice(1).toLowerCase())}function ve(a,l,f){if(a!==void 0)return a===!0?{enabled:!0,...f}:a===!1?{enabled:!1}:p(a)?a:{[l]:a,enabled:!0}}function N(a){return a==null?[]:Array.isArray(a)?a:[a]}const C=Object.freeze(new Set(["__proto__","constructor","prototype"]));function z(a,l){if(!p(a))return p(l)?{...l}:l;if(!p(l))return l===void 0?a:l;const f={...a};for(const y of Object.keys(l)){if(C.has(y))continue;const x=l[y];x!==void 0&&(f[y]=p(x)&&p(f[y])?z(f[y],x):x)}return f}function ee(a,l){if(!p(a)||!p(l)||a===l)return l;const f=Object.create(Object.getPrototypeOf(a));return Object.assign(f,a,l),f}class be{#e;#t=new Map;#n;constructor(l=256,f=null){this.#e=l,this.#n=f}get size(){return this.#t.size}get max(){return this.#e}set max(l){this.#e=l,this.#r()}has(l){return this.#t.has(l)}get(l){const f=this.#t;if(!f.has(l))return;const y=f.get(l);return f.delete(l),f.set(l,y),y}peek(l){return this.#t.get(l)}set(l,f){const y=this.#t;return y.has(l)&&y.delete(l),y.set(l,f),this.#r(),f}delete(l){const f=this.#t.get(l);return this.#t.delete(l)&&this.#n&&this.#n(f,l),f}clear(){if(this.#n)for(const[l,f]of this.#t)this.#n(f,l);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const l=this.#t;for(;l.size>this.#e;){const f=l.keys().next().value,y=l.get(f);l.delete(f),this.#n&&this.#n(y,f)}}}const $=new Map;function B(a,l){const f=`${a||""}|${l?JSON.stringify(l):""}`;let y=$.get(f);return y||(y=new Intl.Collator(a||void 0,{numeric:!0,sensitivity:"variant",...l}),$.set(f,y)),y}function W(a,l){if(a===l)return 0;if(a==null)return 1;if(l==null)return-1;if(typeof a=="number"&&typeof l=="number")return Number.isNaN(a)?Number.isNaN(l)?0:1:Number.isNaN(l)||a<l?-1:a>l?1:0;const f=String(a),y=String(l);return f<y?-1:f>y?1:0}function S(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const t=typeof requestAnimationFrame=="function";function e(a){return t?requestAnimationFrame(a):setTimeout(()=>a(S()),16)}function r(a){a!=null&&(t?cancelAnimationFrame(a):clearTimeout(a))}function o(a){let l=null,f=null;const y=()=>{l=null;const te=f;f=null,a(...te||[])},x=(...te)=>{f=te,l===null&&(l=e(y))};return x.cancel=()=>{r(l),l=null,f=null},x.flush=()=>{l!==null&&(r(l),y())},x}function i(a,l){let f=null,y=null;const x=()=>{if(f=null,y===null)return;const fe=y;y=null,a(...fe),te()},te=()=>{f=setTimeout(x,l),typeof f?.unref=="function"&&f.unref()},re=(...fe)=>{f===null?(a(...fe),te()):(y=fe,clearTimeout(f),te())};return re.flush=()=>{if(f!==null&&clearTimeout(f),f=null,y===null)return;const fe=y;y=null,a(...fe)},re.cancel=()=>{f!==null&&clearTimeout(f),f=null,y=null},re.pending=()=>f!==null||y!==null,re}function n(a,l=50){return typeof requestIdleCallback=="function"?requestIdleCallback(a,{timeout:l}):setTimeout(()=>a({timeRemaining:()=>0,didTimeout:!0}),1)}let s=0;function c(a="l"){return`${a}${(++s).toString(36)}`}}),_e("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 u}}),Object.defineProperty(g,"accessorFor",{enumerable:!0,get:function(){return L}}),Object.defineProperty(g,"bandFor",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"UNKNOWN_STATUS",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"statusFor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"barBounds",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"barPercent",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"formatValue",{enumerable:!0,get:function(){return G}});const X=ce("packages/core/src/internal/util.js"),J=X.isNil,T=X.isFunction,A=X.pathGetter,m=Object.freeze(["sum","avg","min","max","count","countDistinct","custom"]);function R(d){if(J(d)||d==="")return null;const b=typeof d=="number"?d:Number(d);return Number.isFinite(b)?b:null}function u(d){switch(d){case"count":{let b=0;return{add(){b+=1},remove(){b-=1},value(){return b}}}case"sum":{let b=0,k=0;return{add(p){const w=R(p);w!==null&&(b+=w,k+=1)},remove(p){const w=R(p);w!==null&&(b-=w,k-=1)},value(){return k>0?b:0}}}case"avg":{let b=0,k=0;return{add(p){const w=R(p);w!==null&&(b+=w,k+=1)},remove(p){const w=R(p);w!==null&&(b-=w,k-=1)},value(){return k>0?b/k:null}}}case"countDistinct":{const b=new Map;return{add(k){J(k)||b.set(k,(b.get(k)||0)+1)},remove(k){if(J(k))return;const p=b.get(k);p&&(p===1?b.delete(k):b.set(k,p-1))},value(){return b.size}}}case"min":case"max":return E(d==="max");default:return null}}function E(d){const b=new Map;let k=null,p=!1;const w=(O,D)=>d?O>D:O<D,j=()=>{let O=null;for(const D of b.keys())(O===null||w(D,O))&&(O=D);return O};return{add(O){const D=R(O);D!==null&&(b.set(D,(b.get(D)||0)+1),!p&&(k===null||w(D,k))&&(k=D))},remove(O){const D=R(O);if(D===null)return;const K=b.get(D);K&&(K===1?(b.delete(D),D===k&&(p=!0)):b.set(D,K-1))},value(){return b.size===0?null:(p&&(k=j(),p=!1),k)}}}function L(d){return T(d)?d:typeof d=="string"&&d?A(d):()=>{}}function U(d,b){if(d==null||Number.isNaN(d))return null;if(Array.isArray(b.bands)){for(const w of b.bands){const j=J(w.min)?-1/0:w.min,O=J(w.max)?1/0:w.max;if(d>=j&&d<O)return w.status??null}return null}const k=b.thresholds;return!k||J(k.warn)||J(k.critical)?null:k.direction==="lowerIsBetter"?d<=k.warn?"good":d<=k.critical?"warn":"critical":d>=k.warn?"good":d>=k.critical?"warn":"critical"}const P="unknown";function F(d,b,k){return k?U(d,b):P}function _(d){if(!d)return null;const b=[];let k=!1;const p=O=>{if(J(O))return!1;const D=Number(O);return Number.isFinite(D)?(b.push(D),!0):!1};if(Array.isArray(d.bands)&&d.bands.length)for(const O of d.bands||[])p(O&&O.min)||(k=!0),p(O&&O.max)||(k=!0);else d.thresholds&&!J(d.thresholds.warn)&&!J(d.thresholds.critical)&&(p(d.thresholds.warn),p(d.thresholds.critical)),k=!0;if(p(d.target),k&&b.push(0),!b.length)return null;const w=Math.min(...b),j=Math.max(...b);return j>w?{lo:w,hi:j}:null}function Y(d,b){if(!b||J(d))return null;const k=Number(d);if(!Number.isFinite(k))return null;const p=b.hi-b.lo;return p?Math.max(0,Math.min(1,(k-b.lo)/p))*100:null}function G(d,b,k="—"){if(d==null||Number.isNaN(d))return k;const p=typeof b=="string"?{type:b}:b||{},w=p.type||"number",j=p.locale||void 0,O={};w==="currency"?(O.style="currency",O.currency=p.currency||"USD"):w==="percent"?O.style="percent":w==="compact"&&(O.notation="compact",typeof p.currency=="string"&&p.currency&&(O.style="currency",O.currency=p.currency)),J(p.decimals)||(O.minimumFractionDigits=p.decimals,O.maximumFractionDigits=p.decimals);const D=typeof p.prefix=="string"?p.prefix:"",K=typeof p.suffix=="string"?p.suffix:"";try{return D+new Intl.NumberFormat(j,O).format(d)+K}catch{return D+String(d)+K}}}),_e("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 u}}),Object.defineProperty(g,"buildFromParentKey",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"assignLevels",{enumerable:!0,get:function(){return U}}),Object.defineProperty(g,"resolveTree",{enumerable:!0,get:function(){return P}}),Object.defineProperty(g,"buildTree",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"indexTree",{enumerable:!0,get:function(){return _}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.warnOnce,A="",m="\0tree:";function R(Y,G){return{physical:Y,key:G,level:0,children:[],value:void 0}}function u(Y,G){const d=[],b=new Map;for(let k=0;k<Y.length;k++){const p=Y[k],w=G.pathOf(p),j=Array.isArray(w)?w.map(D=>String(D)):[];if(!j.length){const D=R(p,G.keyOf(p));d.push(D);continue}let O=null;for(let D=0;D<j.length;D++){const K=j.slice(0,D+1).join(A),le=D===j.length-1;let q=b.get(K);q&&le&&q.physical===-1&&(q.physical=p,q.key=G.keyOf(p)),q||(q=R(le?p:-1,le?G.keyOf(p):m+K),q.level=D,q.value=j[D],b.set(K,q),O?O.children.push(q):d.push(q)),O=q}}return{roots:d,nodes:b}}function E(Y,G){const d=new Map,b=[];for(let j=0;j<Y.length;j++){const O=Y[j],D=G.keyOf(O),K=R(O,D);d.set(D,K);const le=G.parentOf(O);le!=null&&le!==""&&b.push({node:K,parent:String(le)})}let k=null;const p=new Map;for(const{node:j,parent:O}of b){const D=d.get(O);if(D){p.set(j.key,D);continue}G.orphans&&G.orphans!=="root"&&(k||(k=R(-1,`${m}orphans`),k.value=G.orphans),p.set(j.key,k))}const w=[];for(const j of d.values()){const O=p.get(j.key);O?O.children.push(j):w.push(j)}return k&&k.children.length&&w.push(k),{roots:L(w,d,G.orphans,k),nodes:d}}function L(Y,G,d,b){const k=new Set,p=[...Y];for(;p.length;){const K=p.pop();if(!k.has(K.key)){k.add(K.key);for(const le of K.children)p.push(le)}}const w=[];for(const K of G.values())k.has(K.key)||w.push(K);if(!w.length)return Y;const j=!!d&&d!=="root";T("tree.cycle",`tree.parentKey produced ${w.length} row(s) inside a parent cycle; `+(j?`they are shown under "${d}".`:"they are shown at the root."));for(const K of w)K.children=K.children.filter(le=>k.has(le.key));if(!j)return[...Y,...w];let O=b;const D=[...Y];return O||(O=R(-1,`${m}orphans`),O.value=d,D.push(O)),O.children.push(...w),D}function U(Y){let G=0;const d=(b,k)=>{for(const p of b)p.level=k,k>G&&(G=k),p.children.length&&d(p.children,k+1)};return d(Y,0),G}function P(Y,G){if(!Y||typeof Y!="object")return null;const d=Y.path,b=Y.parentKey,k=J(Y.hasChildren)?p=>!!Y.hasChildren(G.dataAt(p)):null;if(J(d))return{mode:"path",pathOf:p=>d(G.dataAt(p)),keyOf:G.keyOf,declaresChildren:k};if(b!=null){const p=J(b)?b:w=>w?.[b];return{mode:"parentKey",parentOf:w=>p(G.dataAt(w)),keyOf:G.keyOf,orphans:Y.orphans||"root",declaresChildren:k}}return T("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function F(Y,G){const d=G.mode==="path"?u(Y,G):E(Y,G),b=U(d.roots);return{...d,depth:b}}function _(Y,G){const d=new Map,b=k=>{for(let p=0;p<k.length;p++){const w=k[p];if(w.physical>=0){const j=G?G(w.physical):!1,O=j&&w.children.length===0;d.set(w.physical,{level:w.level,posinset:p+1,setsize:k.length,hasChildren:w.children.length>0||j,lazy:O})}w.children.length&&b(w.children)}};return b(Y),d}}),_e("packages/modules/kpi/tree.js",function(g,ce){"use strict";Object.defineProperty(g,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"worseOf",{enumerable:!0,get:function(){return F}}),Object.defineProperty(g,"resolveHierarchy",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"decorateNodes",{enumerable:!0,get:function(){return d}}),Object.defineProperty(g,"allNodes",{enumerable:!0,get:function(){return b}}),Object.defineProperty(g,"visibleNodes",{enumerable:!0,get:function(){return k}}),Object.defineProperty(g,"branchKeys",{enumerable:!0,get:function(){return p}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.isObject,A=X.warnOnce,m=ce("packages/core/src/source/tree.js"),R=m.resolveTree,u=m.buildTree,E=".",L=Object.freeze({good:1,warn:2,critical:3}),U=Object.freeze([null,"good","warn","critical"]);function P(w){return!!w&&w.kind!=="clock"&&(w.value===null||w.value===void 0)}function F(w,j){const O=Math.max(L[w]||0,L[j]||0);return U[O]}function _(w,j){if(!j.length||w===!1)return null;if(w==null)return j.some(h=>h.id.includes(E))&&A("kpi:tree:dotted-id","kpi: tile ids contain dots; set `tree` to render them as a hierarchy."),null;const O=T(w)?w:{},D=j.map((h,v)=>v),K=h=>j[h].id;if(J(O.path)||O.parentKey!==null&&O.parentKey!==void 0){const h=R(O,{dataAt:v=>j[v].spec,keyOf:K});return h?Y({...u(D,h),mode:h.mode},j):null}const le=typeof O.separator=="string"&&O.separator?O.separator:E;if(!j.some(h=>h.id.includes(le)))return null;const q=R({path:h=>String(h).split(le)},{dataAt:h=>j[h].id,keyOf:K});return Y({...u(D,q),mode:"id"},j)}function Y(w,j){const O=new Set,D=new Set(j.map(q=>q.id)),K=(q,h)=>{for(const v of q){const I=v.physical>=0?v.key:v.value===null||v.value===void 0?"":String(v.value),M=`${h}/${I}`;v.physical>=0?O.add(v.physical):D.has(M)||(v.key=M,D.add(M)),K(v.children,M)}};K(w.roots,"");const le=j.filter((q,h)=>!O.has(h)).map(q=>q.id);return le.length&&A("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 G(w,j){return w&&w.spec&&w.spec.label!==null&&w.spec.label!==void 0?String(w.spec.label):j!=null?String(j):w?w.label:""}function d(w,j,O,D){const K=(le,q,h,v)=>{const I=le.physical>=0?j[le.physical]:null,M=I?O.get(I.id):null,H=le.children.map((C,z)=>K(C,q+1,z,le.children.length)),ue=M?M.status:null;let ae=L[ue]?ue:null,ve=ue==="unknown"||P(M)?1:0,N=M?1:0;for(const C of H)ae=F(ae,C.rollup),ve+=C.unknown,N+=C.items;return{key:le.key,id:M?M.id:null,label:G(I,le.value),level:q,posinset:h+1,setsize:v,hasChildren:H.length>0,expanded:H.length>0&&D.has(le.key),children:H,tile:M,value:M?M.value:null,formatted:M?M.formatted:null,status:ue??null,rollup:ae,unknown:ve,items:N}};return w.roots.map((le,q)=>K(le,0,q,w.roots.length))}function b(w){const j=[],O=D=>{for(const K of D)j.push(K),O(K.children)};return O(w),j}function k(w){const j=[],O=D=>{for(const K of D)j.push(K),K.expanded&&O(K.children)};return O(w),j}function p(w){const j=[],O=D=>{for(const K of D)K.children.length&&(j.push(K.key),O(K.children))};return O(w),j}}),_e("packages/modules/kpi/messages.js",function(g,ce){"use strict";Object.defineProperty(g,"FALLBACK_EN",{enumerable:!0,get:function(){return A}}),Object.defineProperty(g,"resolveMessages",{enumerable:!0,get:function(){return R}}),Object.defineProperty(g,"fallbackT",{enumerable:!0,get:function(){return u}});const X=ce("packages/core/src/internal/util.js"),J=X.isFunction,T=X.isObject,A=Object.freeze({"kpi.status.good":"good","kpi.status.warn":"warn","kpi.status.critical":"critical","kpi.status.unknown":"No data","kpi.status.stale":"No recent data","kpi.engine":"computed by the data engine over every matching row","kpi.group.name":"KPI: {name}","kpi.group.unnamed":"KPI","kpi.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"});function m(E,L){return L?E.replace(/\{(\w+)\}/g,(U,P)=>P in L?String(L[P]):U):E}function R(E){const L=T(E.messages)&&J(E.messages.t)&&E.messages||T(E.grid)&&T(E.grid.messages)&&J(E.grid.messages.t)&&E.grid.messages||null;return(U,P)=>{if(L){let F;try{F=L.t(U,P)}catch{F=null}if(typeof F=="string"&&F&&F!==U)return F}return m(A[U]||U,P)}}const u=R({})}),_e("packages/modules/kpi/view.js",function(g,ce){"use strict";Object.defineProperty(g,"NS",{enumerable:!0,get:function(){return u}}),Object.defineProperty(g,"EMPTY_TEXT",{enumerable:!0,get:function(){return E}}),Object.defineProperty(g,"Emitter",{enumerable:!0,get:function(){return _}}),Object.defineProperty(g,"injectStyles",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(g,"sparkPoints",{enumerable:!0,get:function(){return G}}),Object.defineProperty(g,"tileMinFor",{enumerable:!0,get:function(){return p}}),Object.defineProperty(g,"renderKPI",{enumerable:!0,get:function(){return le}});const J=ce("packages/modules/kpi/aggregate.js").UNKNOWN_STATUS,A=ce("packages/modules/kpi/tree.js").visibleNodes,R=ce("packages/modules/kpi/messages.js").fallbackT,u="lat-kpi",E=R("kpi.status.unknown"),L=R,U=Object.freeze({good:"●",warn:"▲",critical:"■",unknown:"○"});function P(i,n){return n?i(`kpi.status.${n}`):""}function F(i){return i&&i.stale?"kpi.status.stale":"kpi.status.unknown"}class _{constructor(){this.map=new Map}on(n,s){return this.map.has(n)||this.map.set(n,new Set),this.map.get(n).add(s),()=>this.off(n,s)}off(n,s){this.map.get(n)?.delete(s)}emit(n,s){for(const c of this.map.get(n)||[])c(s)}}function Y(i){if(!i||i.getElementById&&i.getElementById(`${u}-styles`))return;const n=i.createElement("style");n.id=`${u}-styles`,n.setAttribute("id",`${u}-styles`),n.textContent=`
7
7
  .${u}{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(var(--${u}-tile-min,160px),1fr));font-family:var(--${u}-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(--${u}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));line-height:var(--${u}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)));color:var(--${u}-fg,var(--lattice-foreground));--${u}-meter-w:var(--${u}-meter-width,calc(34px * var(--lat-chrome-scale,1)))}
8
8
  /* The author display:grid above outranks the browser's own [hidden] rule,
9
9
  so a hidden host stays painted without this guard (BACKLOG-0001605). */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, layout module type declarations
2
+ * Lattice Grid 1.89.1, 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.89.0, layout module
2
+ * Lattice Grid 1.89.1, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var Re=Object.create(null),De=Object.create(null);function ye(a,G){Re[a]=G}function We(a){var G=De[a];if(G)return G;var Y=Object.create(null);De[a]=Y;var F=Re[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,We),Y}ye("packages/core/src/internal/util.js",function(a,G){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.0";async function F(){return Y}const U="1.89.0",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const de={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>de[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function fe(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let me=0;function le(i="l"){return`${i}${(++me).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,G){"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 g}});const Y=G("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),ye("packages/modules/shared/autosize.js",function(a,G){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=G("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ye("packages/modules/layout/length.js",function(a,G){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=G("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function I(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,G){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return 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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,G){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=G("packages/core/src/internal/util.js").isFunction,U=G("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=G("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.textContent=`
6
+ var Re=Object.create(null),De=Object.create(null);function ye(a,G){Re[a]=G}function We(a){var G=De[a];if(G)return G;var Y=Object.create(null);De[a]=Y;var F=Re[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,We),Y}ye("packages/core/src/internal/util.js",function(a,G){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.1";async function F(){return Y}const U="1.89.1",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const de={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>de[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function fe(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let me=0;function le(i="l"){return`${i}${(++me).toString(36)}`}}),ye("packages/modules/shared/emitter.js",function(a,G){"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 g}});const Y=G("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),ye("packages/modules/shared/autosize.js",function(a,G){"use strict";Object.defineProperty(a,"contentWidth",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"contentHeight",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"firstMeasured",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"watchSize",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"watchBox",{enumerable:!0,get:function(){return N}});const F=G("packages/core/src/internal/util.js").warnOnce;function U(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),ye("packages/modules/layout/length.js",function(a,G){"use strict";Object.defineProperty(a,"cssLength",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"tracks",{enumerable:!0,get:function(){return W}});const F=G("packages/core/src/internal/util.js").warnOnce,U=/^(?:\d+\.?\d*|\.\d+)(?:px|%|fr|em|rem|ch|vh|vw|vmin|vmax|pt|cm|mm|in)$/i;function I(N,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),ye("packages/modules/layout/model.js",function(a,G){"use strict";Object.defineProperty(a,"positiveInt",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(a,"overlaps",{enumerable:!0,get:function(){return 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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),ye("packages/modules/layout/view.js",function(a,G){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=G("packages/core/src/internal/util.js").isFunction,U=G("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=G("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.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.89.0, layout module
2
+ * Lattice Grid 1.89.1, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Te){"use strict";var Ne=Object.create(null),Ie=Object.create(null);function de(a,B){Ne[a]=B}function Fe(a){var B=Ie[a];if(B)return B;var Y=Object.create(null);Ie[a]=Y;var F=Ne[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Fe),Y}de("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.0";async function F(){return Y}const U="1.89.0",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const fe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>fe[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function me(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function le(i="l"){return`${i}${(++ye).toString(36)}`}}),de("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 g}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),de("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 L}}),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(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),de("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,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),de("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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),de("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.textContent=`
6
+ (function(Te){"use strict";var Ne=Object.create(null),Ie=Object.create(null);function de(a,B){Ne[a]=B}function Fe(a){var B=Ie[a];if(B)return B;var Y=Object.create(null);Ie[a]=Y;var F=Ne[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Fe),Y}de("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.1";async function F(){return Y}const U="1.89.1",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const fe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>fe[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function me(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function le(i="l"){return`${i}${(++ye).toString(36)}`}}),de("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 g}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),de("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 L}}),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(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),de("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,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),de("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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),de("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.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.89.0, layout module
2
+ * Lattice Grid 1.89.1, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Te){"use strict";var Ne=Object.create(null),Ie=Object.create(null);function de(a,B){Ne[a]=B}function Fe(a){var B=Ie[a];if(B)return B;var Y=Object.create(null);Ie[a]=Y;var F=Ne[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Fe),Y}de("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.0";async function F(){return Y}const U="1.89.0",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const fe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>fe[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function me(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function le(i="l"){return`${i}${(++ye).toString(36)}`}}),de("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 g}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),de("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 L}}),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(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),de("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,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),de("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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),de("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.textContent=`
6
+ (function(Te){"use strict";var Ne=Object.create(null),Ie=Object.create(null);function de(a,B){Ne[a]=B}function Fe(a){var B=Ie[a];if(B)return B;var Y=Object.create(null);Ie[a]=Y;var F=Ne[a];if(!F)throw new Error("[lattice] missing module: "+a);return F(Y,Fe),Y}de("packages/core/src/internal/util.js",function(a,B){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return U}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return h}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return _}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return O}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return u}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return p}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return le}});const Y="1.89.1";async function F(){return Y}const U="1.89.1",I=new Set,L=2e3;function W(i){if(I.add(i),I.size>L){const s=I.values().next().value;s!==void 0&&I.delete(s)}}const N=[],g=500;function E(i,s,c){N.push({key:i,level:s,message:c.map(S=>typeof S=="string"?S:n(S)).join(" "),at:Date.now()}),N.length>g&&N.shift()}function n(i){if(i instanceof Error)return i.message;try{return JSON.stringify(i)}catch{return String(i)}}function $(){return N.map(i=>({...i}))}function j(i){if(i.length===0||typeof i[0]!="string")return i;const s=i[0].replace(/^\[lattice\]\s*/,"");return s===i[0]?i:[s,...i.slice(1)]}function k(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"warn",c),console.warn("[lattice]",...c)}function h(i,...s){if(I.has(i))return;W(i);const c=j(s);E(i,"info",c),console.info("[lattice]",...c)}function v(){I.clear(),N.length=0}function P(i,s){const c=new Error(`[lattice] ${i}`);throw s!==void 0&&(c.cause=s),c}function z(i,s){i||P(s)}const _=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function w(i){return typeof i=="function"}function O(i){return i==null}function X(i){return i==null||i===""}function A(i){return typeof i!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(i))?!0:!!(i.prototype&&Object.getOwnPropertyNames(i.prototype).length>1)}const T=new Map;function J(i){let s=T.get(i);if(s)return s;if(!i.includes("."))s=c=>c?.[i];else{const c=i.split("."),S=c.length;s=q=>{let Q=q;for(let K=0;K<S;K++){if(Q==null)return;Q=Q[c[K]]}return Q}}return T.set(i,s),s}const Z=new Map;function ie(i){let s=Z.get(i);if(s)return s;if(!i.includes("."))s=(c,S)=>{c!=null&&(c[i]=S)};else{const c=i.split("."),S=c.length-1;s=(q,Q)=>{let K=q;for(let ee=0;ee<S;ee++){if(K==null)return;const he=c[ee];K[he]==null&&(K[he]={}),K=K[he]}K!=null&&(K[c[S]]=Q)}}return Z.set(i,s),s}function ue(i,s){return J(s)(i)}function ne(i,s,c){ie(s)(i,c)}function we(i){return i?(i.includes(".")?i.slice(i.lastIndexOf(".")+1):i).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(/^./,c=>c.toUpperCase()):""}const fe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ve(i){const s=i==null?"":String(i);return/[&<>"']/.test(s)?s.replace(/[&<>"']/g,c=>fe[c]):s}function xe(i){return String(i).replace(/\w\S*/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function pe(i,s,c){if(i!==void 0)return i===!0?{enabled:!0,...c}:i===!1?{enabled:!1}:C(i)?i:{[s]:i,enabled:!0}}function ae(i){return i==null?[]:Array.isArray(i)?i:[i]}const be=Object.freeze(new Set(["__proto__","constructor","prototype"]));function u(i,s){if(!C(i))return C(s)?{...s}:s;if(!C(s))return s===void 0?i:s;const c={...i};for(const S of Object.keys(s)){if(be.has(S))continue;const q=s[S];q!==void 0&&(c[S]=C(q)&&C(c[S])?u(c[S],q):q)}return c}function r(i,s){if(!C(i)||!C(s)||i===s)return s;const c=Object.create(Object.getPrototypeOf(i));return Object.assign(c,i,s),c}class d{#t;#e=new Map;#n;constructor(s=256,c=null){this.#t=s,this.#n=c}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 c=this.#e;if(!c.has(s))return;const S=c.get(s);return c.delete(s),c.set(s,S),S}peek(s){return this.#e.get(s)}set(s,c){const S=this.#e;return S.has(s)&&S.delete(s),S.set(s,c),this.#i(),c}delete(s){const c=this.#e.get(s);return this.#e.delete(s)&&this.#n&&this.#n(c,s),c}clear(){if(this.#n)for(const[s,c]of this.#e)this.#n(c,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 c=s.keys().next().value,S=s.get(c);s.delete(c),this.#n&&this.#n(S,c)}}}const y=new Map;function p(i,s){const c=`${i||""}|${s?JSON.stringify(s):""}`;let S=y.get(c);return S||(S=new Intl.Collator(i||void 0,{numeric:!0,sensitivity:"variant",...s}),y.set(c,S)),S}function M(i,s){if(i===s)return 0;if(i==null)return 1;if(s==null)return-1;if(typeof i=="number"&&typeof s=="number")return Number.isNaN(i)?Number.isNaN(s)?0:1:Number.isNaN(s)||i<s?-1:i>s?1:0;const c=String(i),S=String(s);return c<S?-1:c>S?1:0}function R(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const H=typeof requestAnimationFrame=="function";function re(i){return H?requestAnimationFrame(i):setTimeout(()=>i(R()),16)}function oe(i){i!=null&&(H?cancelAnimationFrame(i):clearTimeout(i))}function ce(i){let s=null,c=null;const S=()=>{s=null;const Q=c;c=null,i(...Q||[])},q=(...Q)=>{c=Q,s===null&&(s=re(S))};return q.cancel=()=>{oe(s),s=null,c=null},q.flush=()=>{s!==null&&(oe(s),S())},q}function me(i,s){let c=null,S=null;const q=()=>{if(c=null,S===null)return;const ee=S;S=null,i(...ee),Q()},Q=()=>{c=setTimeout(q,s),typeof c?.unref=="function"&&c.unref()},K=(...ee)=>{c===null?(i(...ee),Q()):(S=ee,clearTimeout(c),Q())};return K.flush=()=>{if(c!==null&&clearTimeout(c),c=null,S===null)return;const ee=S;S=null,i(...ee)},K.cancel=()=>{c!==null&&clearTimeout(c),c=null,S=null},K.pending=()=>c!==null||S!==null,K}function V(i,s=50){return typeof requestIdleCallback=="function"?requestIdleCallback(i,{timeout:s}):setTimeout(()=>i({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function le(i="l"){return`${i}${(++ye).toString(36)}`}}),de("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 g}});const Y=B("packages/core/src/internal/util.js"),F=Y.isFunction,U=Y.warnOnce,I="*",L=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,$){if(!F($))return()=>{};let j=this.#t.get(n);return j||(j=new Set,this.#t.set(n,j)),j.add($),()=>this.off(n,$)}off(n,$){const j=this.#t.get(n);j&&j.delete($)}count(n){const $=this.#t.get(n);return $?$.size:0}emit(n,$){const j=this.#t.get(n),k=this.#t.get(I);if((!j||j.size===0)&&(!k||k.size===0))return;const h={...$||null,type:n};j&&j.size&&this.#n([...j],h,n),k&&k.size&&this.#n([...k],h,I)}#n(n,$,j){for(let k=0;k<n.length;k++)try{n[k]($)}catch(h){U(`${this.#e}.emit.throw:${j}:${W(n[k],k)}`,`${this.#e}: a '${j}' handler threw; other handlers were unaffected.`,h)}}emitBefore(n,$,j){const k=j??($&&$.origin),h=L.has(k)?k:"user";let v=!1,P=null;const z=A=>{v=!0,A!=null&&P===null&&(P=String(A))},_={...$||null,type:n,origin:h,get defaultPrevented(){return v},get reason(){return P},preventDefault(A){z(A)}},C=this.#t.get(n);if(!C||C.size===0)return!0;const w=[...C],O=()=>(v&&P===null&&(P="prevented"),v&&$&&typeof $=="object"&&($.reason=P),!v),X=[];for(let A=0;A<w.length;A++){const T=w[A];try{const J=T(_);J&&F(J.then)?X.push(J):J===!1&&z("prevented")}catch(J){z("error"),U(`${this.#e}.beforeThrow:${n}:${W(T,A)}`,`${this.#e}: a '${n}' before-handler threw; the action was cancelled.`,J)}}return X.length===0?O():Promise.allSettled(X).then(A=>{for(const T of A)T.status==="rejected"?(z("error"),U(`${this.#e}.beforeReject:${n}`,`${this.#e}: a '${n}' before-handler rejected; the action was cancelled.`,T.reason)):T.value===!1&&z("prevented");return O()})}clear(){this.#t.clear()}}function g(E,n,$,j,k){const h=E.emitBefore(n,j,j.origin),v=()=>(E.emit($,{...j,reason:j.reason||"prevented"}),!1);return h===!1?v():h&&F(h.then)?h.then(P=>P?k():v()):k()}}),de("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 L}}),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(g){if(!g||typeof g!="object")return null;const E=Number(g.clientWidth);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.width);if(Number.isFinite($)&&$>0)return $}return null}function I(g){if(!g||typeof g!="object")return null;const E=Number(g.clientHeight);if(Number.isFinite(E)&&E>0)return E;if(typeof g.getBoundingClientRect=="function"){const n=g.getBoundingClientRect(),$=n&&Number(n.height);if(Number.isFinite($)&&$>0)return $}return null}function L(g,E=U){for(const n of g||[]){const $=E(n);if(Number.isFinite($)&&$>0)return $}return null}function W(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>null,$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=()=>{if(h)return!1;const w=n();if(!Number.isFinite(w)||w<=0||k!=null&&Math.abs(w-k)<j)return!1;k=w,h=!0;try{$(w)}finally{h=!1}return!0};v();const P=E[0],z=g&&g.view||P&&P.ownerDocument&&P.ownerDocument.defaultView||globalThis,_=z&&z.ResizeObserver;let C=null;if(typeof _=="function"&&E.length){C=new _(()=>{v()});for(const w of E)w&&typeof C.observe=="function"&&C.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 k},release(){if(C&&typeof C.disconnect=="function")try{C.disconnect()}catch{}C=null}}}function N(g){const E=(g&&Array.isArray(g.targets)?g.targets:[]).filter(Boolean),n=g&&typeof g.read=="function"?g.read:()=>({}),$=g&&typeof g.apply=="function"?g.apply:()=>{},j=Number.isFinite(g&&g.epsilon)?Number(g.epsilon):1;let k=null,h=!1;const v=O=>{if(k==null)return!0;for(const[X,A]of Object.entries(O)){if(!Number.isFinite(A)||A<=0)continue;const T=k[X];if(!Number.isFinite(T)||Math.abs(A-T)>=j)return!0}return!1},P=()=>{if(h)return!1;const O=n();if(!O||typeof O!="object"||!Object.values(O).some(A=>Number.isFinite(A)&&A>0)||!v(O))return!1;k={...k,...O},h=!0;try{$(O)}finally{h=!1}return!0};P();const z=E[0],_=g&&g.view||z&&z.ownerDocument&&z.ownerDocument.defaultView||globalThis,C=_&&_.ResizeObserver;let w=null;if(typeof C=="function"&&E.length){w=new C(()=>{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 k},release(){if(w&&typeof w.disconnect=="function")try{w.disconnect()}catch{}w=null}}}}),de("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,g,E){if(N==null)return g;if(typeof N=="number")return Number.isFinite(N)&&N>=0?`${N}px`:L(N,g,E);if(typeof N!="string")return L(N,g,E);const n=N.trim();if(n==="")return g;if(U.test(n))return n;const $=Number(n);return Number.isFinite($)&&$>=0?`${$}px`:L(N,g,E)}function L(N,g,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 ${g}.`),g}function W(N,g,E){return N==="scroll"?`repeat(${g}, ${E})`:`repeat(${g}, minmax(0, 1fr))`}}),de("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 g}}),Object.defineProperty(a,"pushRight",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"pullLeft",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"compact",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"firstFree",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"occupiedRows",{enumerable:!0,get:function(){return k}});function Y(h,v){const P=Math.trunc(Number(h));return Number.isFinite(P)&&P>0?P:v}function F(h,v){return h.xPos<v.xPos+v.xSize&&v.xPos<h.xPos+h.xSize&&h.yPos<v.yPos+v.ySize&&v.yPos<h.yPos+h.ySize}function U(h,v){const P=Math.max(1,Math.min(h.xSize,v));return{xPos:Math.max(1,Math.min(h.xPos,v-P+1)),yPos:Math.max(1,h.yPos),xSize:P,ySize:Math.max(1,h.ySize)}}function I(h,v){return h.yPos-v.yPos||h.xPos-v.xPos||L(h,v)}function L(h,v){const P=String(h.id),z=String(v.id);return P<z?-1:P>z?1:0}function W(h,v){return h.xPos-v.xPos||h.yPos-v.yPos||L(h,v)}function N(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(I),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.yPos=X.reduce((A,T)=>Math.max(A,T.yPos+T.ySize),w.yPos)}z.push(w)}return h}function g(h){const v=[];for(const P of[...h].sort(I)){for(;P.yPos>1;){const z={...P,yPos:P.yPos-1};if(v.some(_=>F(z,_)))break;P.yPos-=1}v.push(P)}return h}function E(h,v){const P=h.find(w=>w.id===v),z=P?[P]:[],_=h.filter(w=>w!==P).sort(W),C=h.length+2;for(const w of _){for(let O=0;O<C;O++){const X=z.filter(A=>F(w,A));if(X.length===0)break;w.xPos=X.reduce((A,T)=>Math.max(A,T.xPos+T.xSize),w.xPos)}z.push(w)}return h}function n(h){const v=[];for(const P of[...h].sort(W)){for(;P.xPos>1;){const z={...P,xPos:P.xPos-1};if(v.some(_=>F(z,_)))break;P.xPos-=1}v.push(P)}return h}function $(h,v,P){return v==="horizontal"?(E(h,P),n(h)):v!=="vertical"?h:(N(h,P),g(h))}function j(h,v,P,z){const _=Math.max(1,Math.min(P,v)),C=h.reduce((w,O)=>Math.max(w,O.yPos+O.ySize),1);for(let w=1;w<=C+z;w++)for(let O=1;O<=v-_+1;O++){const X={xPos:O,yPos:w,xSize:_,ySize:Math.max(1,z)};if(!h.some(A=>F(X,A)))return{xPos:O,yPos:w}}return{xPos:1,yPos:C}}function k(h,v){return h.reduce((P,z)=>Math.max(P,z.yPos+z.ySize-1),v)}}),de("packages/modules/layout/view.js",function(a,B){"use strict";Object.defineProperty(a,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(a,"injectStyles",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"renderShell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"applyGeometry",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"setModeState",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"renderWindow",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"syncAffordances",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"effective",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"project",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"placeWindow",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(a,"announce",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(a,"cellPitch",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"showGhost",{enumerable:!0,get:function(){return we}}),Object.defineProperty(a,"hideGhost",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"listen",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(a,"placementFromDelta",{enumerable:!0,get:function(){return xe}}),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 be}});const F=B("packages/core/src/internal/util.js").isFunction,U=B("packages/modules/layout/length.js"),I=U.cssLength,L=U.tracks,W=B("packages/modules/layout/model.js"),N=W.clampToColumns,g=W.compact,E=W.occupiedRows,n="lat-layout";function $(u){if(!u||u.getElementById&&u.getElementById(`${n}-styles`))return;const r=u.createElement("style");r.id=`${n}-styles`,r.setAttribute("id",`${n}-styles`),r.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.89.0, leaflet module type declarations
2
+ * Lattice Grid 1.89.1, leaflet module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */