@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, tabs module
2
+ * Lattice Grid 1.89.1, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var $e=Object.create(null),Oe=Object.create(null);function re(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}re("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return be}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return ve}});const N="1.89.0";async function D(){return N}const y="1.89.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function be(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function ge(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function he(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ee(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?ee(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function pe(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function me(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function te(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ye(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function ve(n="l"){return`${n}${(++de).toString(36)}`}}),re("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ var $e=Object.create(null),Oe=Object.create(null);function re(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}re("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return be}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return ve}});const N="1.89.1";async function D(){return N}const y="1.89.1",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function be(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function ge(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function he(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ee(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?ee(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function pe(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function me(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function te(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ye(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function ve(n="l"){return`${n}${(++de).toString(36)}`}}),re("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-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(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, tabs module
2
+ * Lattice Grid 1.89.1, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.89.0";async function D(){return N}const y="1.89.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.89.1";async function D(){return N}const y="1.89.1",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-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(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, tabs module
2
+ * Lattice Grid 1.89.1, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.89.0";async function D(){return N}const y="1.89.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.89.1";async function D(){return N}const y="1.89.1",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).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 x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-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(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
package/modules/vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, vue module type declarations
2
+ * Lattice Grid 1.89.1, vue 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, vue module
2
+ * Lattice Grid 1.89.1, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var ve=Object.create(null),Oe=Object.create(null);function ue(i,B){ve[i]=B}function je(i){var B=Oe[i];if(B)return B;var X=Object.create(null);Oe[i]=X;var x=ve[i];if(!x)throw new Error("[lattice] missing module: "+i);return x(X,je),X}ue("packages/core/src/internal/util.js",function(i,B){"use strict";Object.defineProperty(i,"VERSION",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"reportedWarnings",{enumerable:!0,get:function(){return a}}),Object.defineProperty(i,"warnOnce",{enumerable:!0,get:function(){return T}}),Object.defineProperty(i,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(i,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(i,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(i,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(i,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(i,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(i,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(i,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(i,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"pathGetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"setPath",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(i,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(i,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(i,"merge",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(i,"mergeRow",{enumerable:!0,get:function(){return be}}),Object.defineProperty(i,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(i,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(i,"defaultCompare",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(i,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(i,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(i,"frameBatched",{enumerable:!0,get:function(){return N}}),Object.defineProperty(i,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(i,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(i,"uid",{enumerable:!0,get:function(){return w}});const X="1.89.0";async function x(){return X}const R="1.89.0",q=new Set,Z=2e3;function D(e){if(q.add(e),q.size>Z){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const _=[],L=500;function f(e,t,n){_.push({key:e,level:t,message:n.map(o=>typeof o=="string"?o:u(o)).join(" "),at:Date.now()}),_.length>L&&_.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function a(){return _.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function T(e,...t){if(q.has(e))return;D(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;D(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),_.length=0}function P(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||P(t)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ee(e){return typeof e=="function"}function V(e){return e==null}function k(e){return e==null||e===""}function W(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function I(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),o=n.length;t=b=>{let v=b;for(let h=0;h<o;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const H=new Map;function C(e){let t=H.get(e);if(t)return t;if(!e.includes("."))t=(n,o)=>{n!=null&&(n[e]=o)};else{const n=e.split("."),o=n.length-1;t=(b,v)=>{let h=b;for(let F=0;F<o;F++){if(h==null)return;const O=n[F];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[o]]=v)}}return H.set(e,t),t}function J(e,t){return I(t)(e)}function ae(e,t,n){C(t)(e,n)}function le(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const se={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>se[n]):t}function de(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function me(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:M(e)?e:{[t]:e,enabled:!0}}function pe(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function oe(e,t){if(!M(e))return M(t)?{...t}:t;if(!M(t))return t===void 0?e:t;const n={...e};for(const o of Object.keys(t)){if(ge.has(o))continue;const b=t[o];b!==void 0&&(n[o]=M(b)&&M(n[o])?oe(n[o],b):b)}return n}function be(e,t){if(!M(e)||!M(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const o=n.get(t);return n.delete(t),n.set(t,o),o}peek(t){return this.#e.get(t)}set(t,n){const o=this.#e;return o.has(t)&&o.delete(t),o.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,o=t.get(n);t.delete(n),this.#t&&this.#t(o,n)}}}const ye=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let o=ye.get(n);return o||(o=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),ye.set(n,o)),o}function c(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),o=String(t);return n<o?-1:n>o?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function N(e){let t=null,n=null;const o=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(o))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),o())},b}function ne(e,t){let n=null,o=null;const b=()=>{if(n=null,o===null)return;const F=o;o=null,e(...F),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...F)=>{n===null?(e(...F),v()):(o=F,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,o===null)return;const F=o;o=null,e(...F)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,o=null},h.pending=()=>n!==null||o!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(i,B){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(i,"handlerName",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"aliasConfigKey",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(i,"createGridController",{enumerable:!0,get:function(){return u}});const X=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),x=Object.freeze({sort:(a,s)=>a.sort.set(s||[]),filters:(a,s)=>a.filters.set(s||null),quickFilter:(a,s)=>{if(s&&typeof s=="object"){a.filters.quick(s.text||"",{mode:s.mode});return}a.filters.quick(typeof s=="string"?s:"")},selectedKeys:(a,s)=>a.selection.set(Array.isArray(s)?s:[])});function R(a){return`on${String(a).split(":").map(T=>T.charAt(0).toUpperCase()+T.slice(1)).join("")}`}function q(a){return String(a).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function D(a){return Object.hasOwn(Z,a)?Z[a]:a}const _=Object.freeze(Object.fromEntries(X.map(a=>[R(a),a])));function L(a){return Object.hasOwn(_,a)}function f(a){const s={},T={},E={};for(const[j,P]of Object.entries(a||{})){if(L(j)){E[j]=P;continue}if(Object.hasOwn(x,j)){T[j]=P;continue}s[j]=P}return{config:s,imperative:T,handlers:E}}function u(a){const s=a.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const T=f(a.props||{}),E=s(a.element,{...T.config});let j=T.handlers,P=T.config,z={};const Y=V=>{if(!V||typeof V.type!="string")return;const k=j[R(V.type)];typeof k=="function"&&k(V)},M=E.on("*",Y);for(const[V,k]of Object.entries(T.imperative))k!==void 0&&(x[V](E,k),z[V]=k);let ee=!1;return{grid:E,update(V){if(ee)return;const k=f(V||{});j=k.handlers;const W={};for(const[A,I]of Object.entries(k.config))Object.is(P[A],I)||(W[A]=I);for(const A of Object.keys(P))Object.hasOwn(k.config,A)||(W[A]=void 0);Object.keys(W).length&&E.setAll(W),P=k.config;for(const[A,I]of Object.entries(x)){const H=k.imperative[A];Object.is(z[A],H)||H===void 0&&!Object.hasOwn(z,A)||(I(E,H),z[A]=H)}},destroy(){ee||(ee=!0,M(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(i,B){"use strict";Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return f}});const x=B("packages/core/src/internal/util.js").warnOnce,R=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),q=Object.freeze({kpi:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[])}),kanban:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[]),quickFilter:(u,a)=>u.setQuickFilter(typeof a=="string"?a:""),sprint:(u,a)=>u.setSprint(a),epic:(u,a)=>u.setEpic(a),loading:(u,a)=>u.setLoading(!!a),error:(u,a)=>u.setError(a??null)}),gantt:Object.freeze({tasks:(u,a)=>u.setTasks(Array.isArray(a)?a:[]),dependencies:(u,a)=>u.setDependencies(Array.isArray(a)?a:[])}),tabs:Object.freeze({active:(u,a)=>{typeof a=="string"&&u.activate(a)}}),calendar:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[]),view:(u,a)=>u.setView(a),date:(u,a)=>u.goTo(a),move:(u,a,s)=>u.move(a,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function D(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(R).map(([u,a])=>[u,Object.freeze(Object.fromEntries(a.map(s=>[D(s),s])))])));function L(u,a){const s=_[u]||{},T=q[u]||{},E={},j={},P={};for(const[z,Y]of Object.entries(a||{})){if(Object.hasOwn(s,z)){P[z]=Y;continue}if(Object.hasOwn(T,z)){j[z]=Y,E[z]=Y;continue}E[z]=Y}return{config:E,live:j,handlers:P}}function f(u){const a=String(u.viewer),s=u.mount,T=u.name||a;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${a}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const E=L(a,u.props||{}),j=s(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${T} factory returned no instance; nothing can be driven.`);let P=E.handlers,z=E.config;const Y={...E.live},M=[];if(typeof j.on=="function")for(const W of R[a]||[]){const A=D(W),I=j.on(W,H=>{const C=P[A];typeof C=="function"&&C(H)});typeof I=="function"&&M.push(I)}const ee=Z[a],V=q[a]||{};let k=!1;return{instance:j,update(W){if(k)return;const A=L(a,W||{});P=A.handlers;const I={};for(const[C,J]of Object.entries(A.config))Object.is(z[C],J)||(I[C]=J);if(z=A.config,!Object.keys(I).length)return;const H=[];for(const C of Object.keys(I)){const J=V[C];if(J){J(j,I[C]),Y[C]=I[C];continue}ee&&typeof j[ee]=="function"||H.push(C)}if(ee&&typeof j[ee]=="function"){const C={};for(const J of Object.keys(I))V[J]||(C[J]=I[J]);Object.keys(C).length&&j[ee](C)}H.length&&x(`react.viewer.${a}.mountOnly.${H.join(".")}`,`${T}: ${H.map(C=>`\`${C}\``).join(", ")} changed, but ${T} takes ${H.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const W of M)try{W()}catch{}M.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ue("packages/modules/presets/index.js",function(i,B){"use strict";Object.defineProperty(i,"themeFromMui",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return _}});const x=B("packages/core/src/internal/util.js").warnOnce;function R(L,f){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const a=u[1],s=parseInt(a.slice(0,2),16),T=parseInt(a.slice(2,4),16),E=parseInt(a.slice(4,6),16);return`rgba(${s}, ${T}, ${E}, ${f})`}function q(L){const f=L.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":R(f.primary.main,.12),"--lattice-hovered-background":R(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":R(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":R(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":R(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":R(f.info.main,.12),"--lattice-radius":`${L.shape.borderRadius}px`,"--lattice-font-family":L.typography.fontFamily,"--lattice-font-size":`${L.typography.body2.fontSize}`,"--lattice-header-font-weight":String(L.typography.fontWeightMedium)}}function Z(L){return`.lattice {
6
+ var ve=Object.create(null),Oe=Object.create(null);function ue(i,B){ve[i]=B}function je(i){var B=Oe[i];if(B)return B;var X=Object.create(null);Oe[i]=X;var x=ve[i];if(!x)throw new Error("[lattice] missing module: "+i);return x(X,je),X}ue("packages/core/src/internal/util.js",function(i,B){"use strict";Object.defineProperty(i,"VERSION",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"reportedWarnings",{enumerable:!0,get:function(){return a}}),Object.defineProperty(i,"warnOnce",{enumerable:!0,get:function(){return T}}),Object.defineProperty(i,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(i,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(i,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(i,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(i,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(i,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(i,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(i,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(i,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"pathGetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"setPath",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(i,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(i,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(i,"merge",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(i,"mergeRow",{enumerable:!0,get:function(){return be}}),Object.defineProperty(i,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(i,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(i,"defaultCompare",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(i,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(i,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(i,"frameBatched",{enumerable:!0,get:function(){return N}}),Object.defineProperty(i,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(i,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(i,"uid",{enumerable:!0,get:function(){return w}});const X="1.89.1";async function x(){return X}const R="1.89.1",q=new Set,Z=2e3;function D(e){if(q.add(e),q.size>Z){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const _=[],L=500;function f(e,t,n){_.push({key:e,level:t,message:n.map(o=>typeof o=="string"?o:u(o)).join(" "),at:Date.now()}),_.length>L&&_.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function a(){return _.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function T(e,...t){if(q.has(e))return;D(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;D(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),_.length=0}function P(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||P(t)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function M(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ee(e){return typeof e=="function"}function V(e){return e==null}function k(e){return e==null||e===""}function W(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function I(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),o=n.length;t=b=>{let v=b;for(let h=0;h<o;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const H=new Map;function C(e){let t=H.get(e);if(t)return t;if(!e.includes("."))t=(n,o)=>{n!=null&&(n[e]=o)};else{const n=e.split("."),o=n.length-1;t=(b,v)=>{let h=b;for(let F=0;F<o;F++){if(h==null)return;const O=n[F];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[o]]=v)}}return H.set(e,t),t}function J(e,t){return I(t)(e)}function ae(e,t,n){C(t)(e,n)}function le(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const se={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function fe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>se[n]):t}function de(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function me(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:M(e)?e:{[t]:e,enabled:!0}}function pe(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function oe(e,t){if(!M(e))return M(t)?{...t}:t;if(!M(t))return t===void 0?e:t;const n={...e};for(const o of Object.keys(t)){if(ge.has(o))continue;const b=t[o];b!==void 0&&(n[o]=M(b)&&M(n[o])?oe(n[o],b):b)}return n}function be(e,t){if(!M(e)||!M(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const o=n.get(t);return n.delete(t),n.set(t,o),o}peek(t){return this.#e.get(t)}set(t,n){const o=this.#e;return o.has(t)&&o.delete(t),o.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,o=t.get(n);t.delete(n),this.#t&&this.#t(o,n)}}}const ye=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let o=ye.get(n);return o||(o=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),ye.set(n,o)),o}function c(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),o=String(t);return n<o?-1:n>o?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function N(e){let t=null,n=null;const o=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(o))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),o())},b}function ne(e,t){let n=null,o=null;const b=()=>{if(n=null,o===null)return;const F=o;o=null,e(...F),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...F)=>{n===null?(e(...F),v()):(o=F,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,o===null)return;const F=o;o=null,e(...F)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,o=null},h.pending=()=>n!==null||o!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(i,B){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(i,"handlerName",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"aliasConfigKey",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(i,"createGridController",{enumerable:!0,get:function(){return u}});const X=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),x=Object.freeze({sort:(a,s)=>a.sort.set(s||[]),filters:(a,s)=>a.filters.set(s||null),quickFilter:(a,s)=>{if(s&&typeof s=="object"){a.filters.quick(s.text||"",{mode:s.mode});return}a.filters.quick(typeof s=="string"?s:"")},selectedKeys:(a,s)=>a.selection.set(Array.isArray(s)?s:[])});function R(a){return`on${String(a).split(":").map(T=>T.charAt(0).toUpperCase()+T.slice(1)).join("")}`}function q(a){return String(a).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function D(a){return Object.hasOwn(Z,a)?Z[a]:a}const _=Object.freeze(Object.fromEntries(X.map(a=>[R(a),a])));function L(a){return Object.hasOwn(_,a)}function f(a){const s={},T={},E={};for(const[j,P]of Object.entries(a||{})){if(L(j)){E[j]=P;continue}if(Object.hasOwn(x,j)){T[j]=P;continue}s[j]=P}return{config:s,imperative:T,handlers:E}}function u(a){const s=a.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const T=f(a.props||{}),E=s(a.element,{...T.config});let j=T.handlers,P=T.config,z={};const Y=V=>{if(!V||typeof V.type!="string")return;const k=j[R(V.type)];typeof k=="function"&&k(V)},M=E.on("*",Y);for(const[V,k]of Object.entries(T.imperative))k!==void 0&&(x[V](E,k),z[V]=k);let ee=!1;return{grid:E,update(V){if(ee)return;const k=f(V||{});j=k.handlers;const W={};for(const[A,I]of Object.entries(k.config))Object.is(P[A],I)||(W[A]=I);for(const A of Object.keys(P))Object.hasOwn(k.config,A)||(W[A]=void 0);Object.keys(W).length&&E.setAll(W),P=k.config;for(const[A,I]of Object.entries(x)){const H=k.imperative[A];Object.is(z[A],H)||H===void 0&&!Object.hasOwn(z,A)||(I(E,H),z[A]=H)}},destroy(){ee||(ee=!0,M(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(i,B){"use strict";Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return R}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return f}});const x=B("packages/core/src/internal/util.js").warnOnce,R=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),q=Object.freeze({kpi:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[])}),kanban:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[]),quickFilter:(u,a)=>u.setQuickFilter(typeof a=="string"?a:""),sprint:(u,a)=>u.setSprint(a),epic:(u,a)=>u.setEpic(a),loading:(u,a)=>u.setLoading(!!a),error:(u,a)=>u.setError(a??null)}),gantt:Object.freeze({tasks:(u,a)=>u.setTasks(Array.isArray(a)?a:[]),dependencies:(u,a)=>u.setDependencies(Array.isArray(a)?a:[])}),tabs:Object.freeze({active:(u,a)=>{typeof a=="string"&&u.activate(a)}}),calendar:Object.freeze({rows:(u,a)=>u.setRows(Array.isArray(a)?a:[]),view:(u,a)=>u.setView(a),date:(u,a)=>u.goTo(a),move:(u,a,s)=>u.move(a,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function D(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(R).map(([u,a])=>[u,Object.freeze(Object.fromEntries(a.map(s=>[D(s),s])))])));function L(u,a){const s=_[u]||{},T=q[u]||{},E={},j={},P={};for(const[z,Y]of Object.entries(a||{})){if(Object.hasOwn(s,z)){P[z]=Y;continue}if(Object.hasOwn(T,z)){j[z]=Y,E[z]=Y;continue}E[z]=Y}return{config:E,live:j,handlers:P}}function f(u){const a=String(u.viewer),s=u.mount,T=u.name||a;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${a}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const E=L(a,u.props||{}),j=s(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${T} factory returned no instance; nothing can be driven.`);let P=E.handlers,z=E.config;const Y={...E.live},M=[];if(typeof j.on=="function")for(const W of R[a]||[]){const A=D(W),I=j.on(W,H=>{const C=P[A];typeof C=="function"&&C(H)});typeof I=="function"&&M.push(I)}const ee=Z[a],V=q[a]||{};let k=!1;return{instance:j,update(W){if(k)return;const A=L(a,W||{});P=A.handlers;const I={};for(const[C,J]of Object.entries(A.config))Object.is(z[C],J)||(I[C]=J);if(z=A.config,!Object.keys(I).length)return;const H=[];for(const C of Object.keys(I)){const J=V[C];if(J){J(j,I[C]),Y[C]=I[C];continue}ee&&typeof j[ee]=="function"||H.push(C)}if(ee&&typeof j[ee]=="function"){const C={};for(const J of Object.keys(I))V[J]||(C[J]=I[J]);Object.keys(C).length&&j[ee](C)}H.length&&x(`react.viewer.${a}.mountOnly.${H.join(".")}`,`${T}: ${H.map(C=>`\`${C}\``).join(", ")} changed, but ${T} takes ${H.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const W of M)try{W()}catch{}M.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ue("packages/modules/presets/index.js",function(i,B){"use strict";Object.defineProperty(i,"themeFromMui",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return _}});const x=B("packages/core/src/internal/util.js").warnOnce;function R(L,f){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const a=u[1],s=parseInt(a.slice(0,2),16),T=parseInt(a.slice(2,4),16),E=parseInt(a.slice(4,6),16);return`rgba(${s}, ${T}, ${E}, ${f})`}function q(L){const f=L.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":R(f.primary.main,.12),"--lattice-hovered-background":R(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":R(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":R(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":R(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":R(f.info.main,.12),"--lattice-radius":`${L.shape.borderRadius}px`,"--lattice-font-family":L.typography.fontFamily,"--lattice-font-size":`${L.typography.body2.fontSize}`,"--lattice-header-font-weight":String(L.typography.fontWeightMedium)}}function Z(L){return`.lattice {
7
7
  ${Object.entries(L).map(([u,a])=>` ${u}: ${a};`).join(`
8
8
  `)}
9
9
  }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, vue module
2
+ * Lattice Grid 1.89.1, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Pe){"use strict";var ve=Object.create(null),Oe=Object.create(null);function ce(c,q){ve[c]=q}function je(c){var q=Oe[c];if(q)return q;var Q=Object.create(null);Oe[c]=Q;var X=ve[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,je),Q}ce("packages/core/src/internal/util.js",function(c,q){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return se}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return de}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return S}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.89.0";async function X(){return Q}const T="1.89.0",U=new Set,Y=2e3;function z(e){if(U.add(e),U.size>Y){const t=U.values().next().value;t!==void 0&&U.delete(t)}}const x=[],P=500;function f(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).join(" "),at:Date.now()}),x.length>P&&x.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return x.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function R(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){U.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function K(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function I(e){return e==null}function k(e){return e==null||e===""}function F(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function V(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=b=>{let v=b;for(let h=0;h<a;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const W=new Map;function C(e){let t=W.get(e);if(t)return t;if(!e.includes("."))t=(n,a)=>{n!=null&&(n[e]=a)};else{const n=e.split("."),a=n.length-1;t=(b,v)=>{let h=b;for(let M=0;M<a;M++){if(h==null)return;const O=n[M];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[a]]=v)}}return W.set(e,t),t}function Z(e,t){return V(t)(e)}function re(e,t,n){C(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function me(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const b=t[a];b!==void 0&&(n[a]=D(b)&&D(n[a])?ae(n[a],b):b)}return n}function pe(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const be=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=be.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),be.set(n,a)),a}function o(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),a=String(t);return n<a?-1:n>a?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function S(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(a))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),a())},b}function te(e,t){let n=null,a=null;const b=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...M)=>{n===null?(e(...M),v()):(a=M,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const M=a;a=null,e(...M)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},h.pending=()=>n!==null||a!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,q){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(c,"createGridController",{enumerable:!0,get:function(){return u}});const Q=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(i,s)=>i.sort.set(s||[]),filters:(i,s)=>i.filters.set(s||null),quickFilter:(i,s)=>{if(s&&typeof s=="object"){i.filters.quick(s.text||"",{mode:s.mode});return}i.filters.quick(typeof s=="string"?s:"")},selectedKeys:(i,s)=>i.selection.set(Array.isArray(s)?s:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function U(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function P(i){return Object.hasOwn(x,i)}function f(i){const s={},R={},L={};for(const[j,E]of Object.entries(i||{})){if(P(j)){L[j]=E;continue}if(Object.hasOwn(X,j)){R[j]=E;continue}s[j]=E}return{config:s,imperative:R,handlers:L}}function u(i){const s=i.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(i.props||{}),L=s(i.element,{...R.config});let j=R.handlers,E=R.config,K={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[T(I.type)];typeof k=="function"&&k(I)},D=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),K[I]=k);let _=!1;return{grid:L,update(I){if(_)return;const k=f(I||{});j=k.handlers;const F={};for(const[A,V]of Object.entries(k.config))Object.is(E[A],V)||(F[A]=V);for(const A of Object.keys(E))Object.hasOwn(k.config,A)||(F[A]=void 0);Object.keys(F).length&&L.setAll(F),E=k.config;for(const[A,V]of Object.entries(X)){const W=k.imperative[A];Object.is(K[A],W)||W===void 0&&!Object.hasOwn(K,A)||(V(L,W),K[A]=W)}},destroy(){_||(_=!0,D(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,q){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=q("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),U=Object.freeze({kpi:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),quickFilter:(u,i)=>u.setQuickFilter(typeof i=="string"?i:""),sprint:(u,i)=>u.setSprint(i),epic:(u,i)=>u.setEpic(i),loading:(u,i)=>u.setLoading(!!i),error:(u,i)=>u.setError(i??null)}),gantt:Object.freeze({tasks:(u,i)=>u.setTasks(Array.isArray(i)?i:[]),dependencies:(u,i)=>u.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(u,i)=>{typeof i=="string"&&u.activate(i)}}),calendar:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),view:(u,i)=>u.setView(i),date:(u,i)=>u.goTo(i),move:(u,i,s)=>u.move(i,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(T).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[z(s),s])))])));function P(u,i){const s=x[u]||{},R=U[u]||{},L={},j={},E={};for(const[K,B]of Object.entries(i||{})){if(Object.hasOwn(s,K)){E[K]=B;continue}if(Object.hasOwn(R,K)){j[K]=B,L[K]=B;continue}L[K]=B}return{config:L,live:j,handlers:E}}function f(u){const i=String(u.viewer),s=u.mount,R=u.name||i;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${i}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=P(i,u.props||{}),j=s(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let E=L.handlers,K=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of T[i]||[]){const A=z(F),V=j.on(F,W=>{const C=E[A];typeof C=="function"&&C(W)});typeof V=="function"&&D.push(V)}const _=Y[i],I=U[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[C,Z]of Object.entries(A.config))Object.is(K[C],Z)||(V[C]=Z);if(K=A.config,!Object.keys(V).length)return;const W=[];for(const C of Object.keys(V)){const Z=I[C];if(Z){Z(j,V[C]),B[C]=V[C];continue}_&&typeof j[_]=="function"||W.push(C)}if(_&&typeof j[_]=="function"){const C={};for(const Z of Object.keys(V))I[Z]||(C[Z]=V[Z]);Object.keys(C).length&&j[_](C)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(C=>`\`${C}\``).join(", ")} changed, but ${R} takes ${W.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,q){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=q("packages/core/src/internal/util.js").warnOnce;function T(P,f){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],s=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${s}, ${R}, ${L}, ${f})`}function U(P){const f=P.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":T(f.primary.main,.12),"--lattice-hovered-background":T(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":T(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":T(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":T(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":T(f.info.main,.12),"--lattice-radius":`${P.shape.borderRadius}px`,"--lattice-font-family":P.typography.fontFamily,"--lattice-font-size":`${P.typography.body2.fontSize}`,"--lattice-header-font-weight":String(P.typography.fontWeightMedium)}}function Y(P){return`.lattice {
6
+ (function(Pe){"use strict";var ve=Object.create(null),Oe=Object.create(null);function ce(c,q){ve[c]=q}function je(c){var q=Oe[c];if(q)return q;var Q=Object.create(null);Oe[c]=Q;var X=ve[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,je),Q}ce("packages/core/src/internal/util.js",function(c,q){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return se}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return de}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return S}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.89.1";async function X(){return Q}const T="1.89.1",U=new Set,Y=2e3;function z(e){if(U.add(e),U.size>Y){const t=U.values().next().value;t!==void 0&&U.delete(t)}}const x=[],P=500;function f(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).join(" "),at:Date.now()}),x.length>P&&x.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return x.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function R(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){U.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function K(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function I(e){return e==null}function k(e){return e==null||e===""}function F(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function V(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=b=>{let v=b;for(let h=0;h<a;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const W=new Map;function C(e){let t=W.get(e);if(t)return t;if(!e.includes("."))t=(n,a)=>{n!=null&&(n[e]=a)};else{const n=e.split("."),a=n.length-1;t=(b,v)=>{let h=b;for(let M=0;M<a;M++){if(h==null)return;const O=n[M];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[a]]=v)}}return W.set(e,t),t}function Z(e,t){return V(t)(e)}function re(e,t,n){C(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function me(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const b=t[a];b!==void 0&&(n[a]=D(b)&&D(n[a])?ae(n[a],b):b)}return n}function pe(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const be=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=be.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),be.set(n,a)),a}function o(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),a=String(t);return n<a?-1:n>a?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function S(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(a))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),a())},b}function te(e,t){let n=null,a=null;const b=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...M)=>{n===null?(e(...M),v()):(a=M,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const M=a;a=null,e(...M)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},h.pending=()=>n!==null||a!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,q){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(c,"createGridController",{enumerable:!0,get:function(){return u}});const Q=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(i,s)=>i.sort.set(s||[]),filters:(i,s)=>i.filters.set(s||null),quickFilter:(i,s)=>{if(s&&typeof s=="object"){i.filters.quick(s.text||"",{mode:s.mode});return}i.filters.quick(typeof s=="string"?s:"")},selectedKeys:(i,s)=>i.selection.set(Array.isArray(s)?s:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function U(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function P(i){return Object.hasOwn(x,i)}function f(i){const s={},R={},L={};for(const[j,E]of Object.entries(i||{})){if(P(j)){L[j]=E;continue}if(Object.hasOwn(X,j)){R[j]=E;continue}s[j]=E}return{config:s,imperative:R,handlers:L}}function u(i){const s=i.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(i.props||{}),L=s(i.element,{...R.config});let j=R.handlers,E=R.config,K={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[T(I.type)];typeof k=="function"&&k(I)},D=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),K[I]=k);let _=!1;return{grid:L,update(I){if(_)return;const k=f(I||{});j=k.handlers;const F={};for(const[A,V]of Object.entries(k.config))Object.is(E[A],V)||(F[A]=V);for(const A of Object.keys(E))Object.hasOwn(k.config,A)||(F[A]=void 0);Object.keys(F).length&&L.setAll(F),E=k.config;for(const[A,V]of Object.entries(X)){const W=k.imperative[A];Object.is(K[A],W)||W===void 0&&!Object.hasOwn(K,A)||(V(L,W),K[A]=W)}},destroy(){_||(_=!0,D(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,q){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=q("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),U=Object.freeze({kpi:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),quickFilter:(u,i)=>u.setQuickFilter(typeof i=="string"?i:""),sprint:(u,i)=>u.setSprint(i),epic:(u,i)=>u.setEpic(i),loading:(u,i)=>u.setLoading(!!i),error:(u,i)=>u.setError(i??null)}),gantt:Object.freeze({tasks:(u,i)=>u.setTasks(Array.isArray(i)?i:[]),dependencies:(u,i)=>u.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(u,i)=>{typeof i=="string"&&u.activate(i)}}),calendar:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),view:(u,i)=>u.setView(i),date:(u,i)=>u.goTo(i),move:(u,i,s)=>u.move(i,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(T).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[z(s),s])))])));function P(u,i){const s=x[u]||{},R=U[u]||{},L={},j={},E={};for(const[K,B]of Object.entries(i||{})){if(Object.hasOwn(s,K)){E[K]=B;continue}if(Object.hasOwn(R,K)){j[K]=B,L[K]=B;continue}L[K]=B}return{config:L,live:j,handlers:E}}function f(u){const i=String(u.viewer),s=u.mount,R=u.name||i;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${i}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=P(i,u.props||{}),j=s(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let E=L.handlers,K=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of T[i]||[]){const A=z(F),V=j.on(F,W=>{const C=E[A];typeof C=="function"&&C(W)});typeof V=="function"&&D.push(V)}const _=Y[i],I=U[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[C,Z]of Object.entries(A.config))Object.is(K[C],Z)||(V[C]=Z);if(K=A.config,!Object.keys(V).length)return;const W=[];for(const C of Object.keys(V)){const Z=I[C];if(Z){Z(j,V[C]),B[C]=V[C];continue}_&&typeof j[_]=="function"||W.push(C)}if(_&&typeof j[_]=="function"){const C={};for(const Z of Object.keys(V))I[Z]||(C[Z]=V[Z]);Object.keys(C).length&&j[_](C)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(C=>`\`${C}\``).join(", ")} changed, but ${R} takes ${W.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,q){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=q("packages/core/src/internal/util.js").warnOnce;function T(P,f){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],s=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${s}, ${R}, ${L}, ${f})`}function U(P){const f=P.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":T(f.primary.main,.12),"--lattice-hovered-background":T(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":T(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":T(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":T(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":T(f.info.main,.12),"--lattice-radius":`${P.shape.borderRadius}px`,"--lattice-font-family":P.typography.fontFamily,"--lattice-font-size":`${P.typography.body2.fontSize}`,"--lattice-header-font-weight":String(P.typography.fontWeightMedium)}}function Y(P){return`.lattice {
7
7
  ${Object.entries(P).map(([u,i])=>` ${u}: ${i};`).join(`
8
8
  `)}
9
9
  }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.89.0, vue module
2
+ * Lattice Grid 1.89.1, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Pe){"use strict";var ve=Object.create(null),Oe=Object.create(null);function ce(c,q){ve[c]=q}function je(c){var q=Oe[c];if(q)return q;var Q=Object.create(null);Oe[c]=Q;var X=ve[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,je),Q}ce("packages/core/src/internal/util.js",function(c,q){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return se}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return de}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return S}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.89.0";async function X(){return Q}const T="1.89.0",U=new Set,Y=2e3;function z(e){if(U.add(e),U.size>Y){const t=U.values().next().value;t!==void 0&&U.delete(t)}}const x=[],P=500;function f(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).join(" "),at:Date.now()}),x.length>P&&x.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return x.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function R(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){U.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function K(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function I(e){return e==null}function k(e){return e==null||e===""}function F(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function V(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=b=>{let v=b;for(let h=0;h<a;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const W=new Map;function C(e){let t=W.get(e);if(t)return t;if(!e.includes("."))t=(n,a)=>{n!=null&&(n[e]=a)};else{const n=e.split("."),a=n.length-1;t=(b,v)=>{let h=b;for(let M=0;M<a;M++){if(h==null)return;const O=n[M];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[a]]=v)}}return W.set(e,t),t}function Z(e,t){return V(t)(e)}function re(e,t,n){C(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function me(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const b=t[a];b!==void 0&&(n[a]=D(b)&&D(n[a])?ae(n[a],b):b)}return n}function pe(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const be=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=be.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),be.set(n,a)),a}function o(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),a=String(t);return n<a?-1:n>a?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function S(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(a))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),a())},b}function te(e,t){let n=null,a=null;const b=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...M)=>{n===null?(e(...M),v()):(a=M,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const M=a;a=null,e(...M)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},h.pending=()=>n!==null||a!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,q){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(c,"createGridController",{enumerable:!0,get:function(){return u}});const Q=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(i,s)=>i.sort.set(s||[]),filters:(i,s)=>i.filters.set(s||null),quickFilter:(i,s)=>{if(s&&typeof s=="object"){i.filters.quick(s.text||"",{mode:s.mode});return}i.filters.quick(typeof s=="string"?s:"")},selectedKeys:(i,s)=>i.selection.set(Array.isArray(s)?s:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function U(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function P(i){return Object.hasOwn(x,i)}function f(i){const s={},R={},L={};for(const[j,E]of Object.entries(i||{})){if(P(j)){L[j]=E;continue}if(Object.hasOwn(X,j)){R[j]=E;continue}s[j]=E}return{config:s,imperative:R,handlers:L}}function u(i){const s=i.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(i.props||{}),L=s(i.element,{...R.config});let j=R.handlers,E=R.config,K={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[T(I.type)];typeof k=="function"&&k(I)},D=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),K[I]=k);let _=!1;return{grid:L,update(I){if(_)return;const k=f(I||{});j=k.handlers;const F={};for(const[A,V]of Object.entries(k.config))Object.is(E[A],V)||(F[A]=V);for(const A of Object.keys(E))Object.hasOwn(k.config,A)||(F[A]=void 0);Object.keys(F).length&&L.setAll(F),E=k.config;for(const[A,V]of Object.entries(X)){const W=k.imperative[A];Object.is(K[A],W)||W===void 0&&!Object.hasOwn(K,A)||(V(L,W),K[A]=W)}},destroy(){_||(_=!0,D(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,q){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=q("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),U=Object.freeze({kpi:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),quickFilter:(u,i)=>u.setQuickFilter(typeof i=="string"?i:""),sprint:(u,i)=>u.setSprint(i),epic:(u,i)=>u.setEpic(i),loading:(u,i)=>u.setLoading(!!i),error:(u,i)=>u.setError(i??null)}),gantt:Object.freeze({tasks:(u,i)=>u.setTasks(Array.isArray(i)?i:[]),dependencies:(u,i)=>u.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(u,i)=>{typeof i=="string"&&u.activate(i)}}),calendar:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),view:(u,i)=>u.setView(i),date:(u,i)=>u.goTo(i),move:(u,i,s)=>u.move(i,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(T).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[z(s),s])))])));function P(u,i){const s=x[u]||{},R=U[u]||{},L={},j={},E={};for(const[K,B]of Object.entries(i||{})){if(Object.hasOwn(s,K)){E[K]=B;continue}if(Object.hasOwn(R,K)){j[K]=B,L[K]=B;continue}L[K]=B}return{config:L,live:j,handlers:E}}function f(u){const i=String(u.viewer),s=u.mount,R=u.name||i;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${i}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=P(i,u.props||{}),j=s(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let E=L.handlers,K=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of T[i]||[]){const A=z(F),V=j.on(F,W=>{const C=E[A];typeof C=="function"&&C(W)});typeof V=="function"&&D.push(V)}const _=Y[i],I=U[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[C,Z]of Object.entries(A.config))Object.is(K[C],Z)||(V[C]=Z);if(K=A.config,!Object.keys(V).length)return;const W=[];for(const C of Object.keys(V)){const Z=I[C];if(Z){Z(j,V[C]),B[C]=V[C];continue}_&&typeof j[_]=="function"||W.push(C)}if(_&&typeof j[_]=="function"){const C={};for(const Z of Object.keys(V))I[Z]||(C[Z]=V[Z]);Object.keys(C).length&&j[_](C)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(C=>`\`${C}\``).join(", ")} changed, but ${R} takes ${W.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,q){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=q("packages/core/src/internal/util.js").warnOnce;function T(P,f){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],s=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${s}, ${R}, ${L}, ${f})`}function U(P){const f=P.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":T(f.primary.main,.12),"--lattice-hovered-background":T(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":T(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":T(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":T(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":T(f.info.main,.12),"--lattice-radius":`${P.shape.borderRadius}px`,"--lattice-font-family":P.typography.fontFamily,"--lattice-font-size":`${P.typography.body2.fontSize}`,"--lattice-header-font-weight":String(P.typography.fontWeightMedium)}}function Y(P){return`.lattice {
6
+ (function(Pe){"use strict";var ve=Object.create(null),Oe=Object.create(null);function ce(c,q){ve[c]=q}function je(c){var q=Oe[c];if(q)return q;var Q=Object.create(null);Oe[c]=Q;var X=ve[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,je),Q}ce("packages/core/src/internal/util.js",function(c,q){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return se}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return de}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return S}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.89.1";async function X(){return Q}const T="1.89.1",U=new Set,Y=2e3;function z(e){if(U.add(e),U.size>Y){const t=U.values().next().value;t!==void 0&&U.delete(t)}}const x=[],P=500;function f(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).join(" "),at:Date.now()}),x.length>P&&x.shift()}function u(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return x.map(e=>({...e}))}function s(e){if(e.length===0||typeof e[0]!="string")return e;const t=e[0].replace(/^\[lattice\]\s*/,"");return t===e[0]?e:[t,...e.slice(1)]}function R(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(U.has(e))return;z(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){U.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function K(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function I(e){return e==null}function k(e){return e==null||e===""}function F(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const A=new Map;function V(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=b=>{let v=b;for(let h=0;h<a;h++){if(v==null)return;v=v[n[h]]}return v}}return A.set(e,t),t}const W=new Map;function C(e){let t=W.get(e);if(t)return t;if(!e.includes("."))t=(n,a)=>{n!=null&&(n[e]=a)};else{const n=e.split("."),a=n.length-1;t=(b,v)=>{let h=b;for(let M=0;M<a;M++){if(h==null)return;const O=n[M];h[O]==null&&(h[O]={}),h=h[O]}h!=null&&(h[n[a]]=v)}}return W.set(e,t),t}function Z(e,t){return V(t)(e)}function re(e,t,n){C(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).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(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function me(e){return e==null?[]:Array.isArray(e)?e:[e]}const ge=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const b=t[a];b!==void 0&&(n[a]=D(b)&&D(n[a])?ae(n[a],b):b)}return n}function pe(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const be=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=be.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),be.set(n,a)),a}function o(e,t){if(e===t)return 0;if(e==null)return 1;if(t==null)return-1;if(typeof e=="number"&&typeof t=="number")return Number.isNaN(e)?Number.isNaN(t)?0:1:Number.isNaN(t)||e<t?-1:e>t?1:0;const n=String(e),a=String(t);return n<a?-1:n>a?1:0}function l(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const m=typeof requestAnimationFrame=="function";function g(e){return m?requestAnimationFrame(e):setTimeout(()=>e(l()),16)}function d(e){e!=null&&(m?cancelAnimationFrame(e):clearTimeout(e))}function S(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},b=(...v)=>{n=v,t===null&&(t=g(a))};return b.cancel=()=>{d(t),t=null,n=null},b.flush=()=>{t!==null&&(d(t),a())},b}function te(e,t){let n=null,a=null;const b=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(b,t),typeof n?.unref=="function"&&n.unref()},h=(...M)=>{n===null?(e(...M),v()):(a=M,clearTimeout(n),v())};return h.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const M=a;a=null,e(...M)},h.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},h.pending=()=>n!==null||a!==null,h}function $(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let p=0;function w(e="l"){return`${e}${(++p).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,q){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(c,"createGridController",{enumerable:!0,get:function(){return u}});const Q=Object.freeze(["ready","destroy","render:first","render:done","config:changed","licence:changed","model:changed","rows:changed","rows:queued","rows:deferred","rows:paused","rows:resumed","row:received","row:sent","row:copied","row:moved","source:error","source:total","stream:chunk","stream:end","stream:evicted","rowDrag:started","rowDrag:moved","rowDrag:left","rowDrag:ended","cell:changed","cell:pending","cell:confirmed","cell:reverted","cell:conflict","cell:clicked","cell:dblclicked","cell:contextmenu","cell:mouseover","cell:mouseout","cell:mousedown","cell:mouseup","cell:edit:start","cell:edit:end","row:edit:start","row:edit:end","row:clicked","row:dblclicked","row:pending","row:confirmed","row:reverted","row:conflict","form:opened","form:closed","form:saved","form:error","sort:changed","filter:changed","group:toggled","facet:computed","facet:filtered","facet:expanded","facet:failed","column:moved","column:resized","column:visible","column:pinned","column:grouped","column:pivoted","column:filter:open","column:profile:open","column:menu:open","columns:changed","columns:tagged","columngroup:changed","header:contextmenu","pivot:drill","selection:changed","range:changed","clipboard:copy","page:changed","scroll","scroll:end","size:changed","detail:toggled","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(i,s)=>i.sort.set(s||[]),filters:(i,s)=>i.filters.set(s||null),quickFilter:(i,s)=>{if(s&&typeof s=="object"){i.filters.quick(s.text||"",{mode:s.mode});return}i.filters.quick(typeof s=="string"?s:"")},selectedKeys:(i,s)=>i.selection.set(Array.isArray(s)?s:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function U(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function P(i){return Object.hasOwn(x,i)}function f(i){const s={},R={},L={};for(const[j,E]of Object.entries(i||{})){if(P(j)){L[j]=E;continue}if(Object.hasOwn(X,j)){R[j]=E;continue}s[j]=E}return{config:s,imperative:R,handlers:L}}function u(i){const s=i.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(i.props||{}),L=s(i.element,{...R.config});let j=R.handlers,E=R.config,K={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[T(I.type)];typeof k=="function"&&k(I)},D=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),K[I]=k);let _=!1;return{grid:L,update(I){if(_)return;const k=f(I||{});j=k.handlers;const F={};for(const[A,V]of Object.entries(k.config))Object.is(E[A],V)||(F[A]=V);for(const A of Object.keys(E))Object.hasOwn(k.config,A)||(F[A]=void 0);Object.keys(F).length&&L.setAll(F),E=k.config;for(const[A,V]of Object.entries(X)){const W=k.imperative[A];Object.is(K[A],W)||W===void 0&&!Object.hasOwn(K,A)||(V(L,W),K[A]=W)}},destroy(){_||(_=!0,D(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,q){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=q("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),calendar:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),chart:Object.freeze(["click","hover","leave","draw","legend"]),gantt:Object.freeze(["schedule","error","history","columnResize","workload:click","task:filtered","draw","dependencies","cell:click","zoomChange","visibleRangeChange","taskExpand","taskCollapse","resourceExpand","resourceCollapse","selectionChange","rowMove","taskAdd","taskRemove","taskUpdate","dependencyAdd","dependencyRemove","dependencyUpdate","assignmentChange","datesChanged","change","schedulingConflict","taskDragStart","taskDrag","taskResizeStart","taskPartialResize","taskResizeEnd","percentBarDragStart","percentBarDrag","percentBarDrop","taskClick","taskDblClick","taskMouseOver","taskMouseOut","dirtyChange"]),layout:Object.freeze(["layout:changed","window:moved","window:resized","window:closed","beforeWindowClose","windowClose:cancelled"]),router:Object.freeze(["metrics","fields:changed"])}),U=Object.freeze({kpi:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),quickFilter:(u,i)=>u.setQuickFilter(typeof i=="string"?i:""),sprint:(u,i)=>u.setSprint(i),epic:(u,i)=>u.setEpic(i),loading:(u,i)=>u.setLoading(!!i),error:(u,i)=>u.setError(i??null)}),gantt:Object.freeze({tasks:(u,i)=>u.setTasks(Array.isArray(i)?i:[]),dependencies:(u,i)=>u.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(u,i)=>{typeof i=="string"&&u.activate(i)}}),calendar:Object.freeze({rows:(u,i)=>u.setRows(Array.isArray(i)?i:[]),view:(u,i)=>u.setView(i),date:(u,i)=>u.goTo(i),move:(u,i,s)=>u.move(i,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(T).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[z(s),s])))])));function P(u,i){const s=x[u]||{},R=U[u]||{},L={},j={},E={};for(const[K,B]of Object.entries(i||{})){if(Object.hasOwn(s,K)){E[K]=B;continue}if(Object.hasOwn(R,K)){j[K]=B,L[K]=B;continue}L[K]=B}return{config:L,live:j,handlers:E}}function f(u){const i=String(u.viewer),s=u.mount,R=u.name||i;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${i}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=P(i,u.props||{}),j=s(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let E=L.handlers,K=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of T[i]||[]){const A=z(F),V=j.on(F,W=>{const C=E[A];typeof C=="function"&&C(W)});typeof V=="function"&&D.push(V)}const _=Y[i],I=U[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[C,Z]of Object.entries(A.config))Object.is(K[C],Z)||(V[C]=Z);if(K=A.config,!Object.keys(V).length)return;const W=[];for(const C of Object.keys(V)){const Z=I[C];if(Z){Z(j,V[C]),B[C]=V[C];continue}_&&typeof j[_]=="function"||W.push(C)}if(_&&typeof j[_]=="function"){const C={};for(const Z of Object.keys(V))I[Z]||(C[Z]=V[Z]);Object.keys(C).length&&j[_](C)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(C=>`\`${C}\``).join(", ")} changed, but ${R} takes ${W.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,q){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=q("packages/core/src/internal/util.js").warnOnce;function T(P,f){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],s=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${s}, ${R}, ${L}, ${f})`}function U(P){const f=P.palette,u=f.mode==="dark";return{"--lattice-background":f.background.default,"--lattice-surface":f.background.paper,"--lattice-surface-alt":u?"#2a2a2a":f.grey[50],"--lattice-border-color":f.divider,"--lattice-border-strong":u?f.grey[600]:f.grey[400],"--lattice-foreground":f.text.primary,"--lattice-foreground-muted":f.text.secondary,"--lattice-header-foreground":f.text.primary,"--lattice-accent":f.primary.main,"--lattice-accent-contrast":f.primary.contrastText,"--lattice-link-color":f.primary.main,"--lattice-selected-background":T(f.primary.main,.12),"--lattice-hovered-background":T(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":T(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":T(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":T(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":T(f.info.main,.12),"--lattice-radius":`${P.shape.borderRadius}px`,"--lattice-font-family":P.typography.fontFamily,"--lattice-font-size":`${P.typography.body2.fontSize}`,"--lattice-header-font-weight":String(P.typography.fontWeightMedium)}}function Y(P){return`.lattice {
7
7
  ${Object.entries(P).map(([u,i])=>` ${u}: ${i};`).join(`
8
8
  `)}
9
9
  }