@toclocoinc/lattice-grid 1.86.4 → 1.86.5

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 (306) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +4 -4
  5. package/docs/api/adapters.html +1 -1
  6. package/docs/api/ai.html +1 -1
  7. package/docs/api/alarms.html +1 -1
  8. package/docs/api/calendar.html +1 -1
  9. package/docs/api/charts.html +1 -1
  10. package/docs/api/dashboard.html +1 -1
  11. package/docs/api/data-router.html +1 -1
  12. package/docs/api/deckgl.html +1 -1
  13. package/docs/api/gantt.html +1 -1
  14. package/docs/api/geometry.html +1 -1
  15. package/docs/api/grid.html +2 -2
  16. package/docs/api/index.html +1 -1
  17. package/docs/api/kanban.html +1 -1
  18. package/docs/api/kpi.html +1 -1
  19. package/docs/api/layout.html +1 -1
  20. package/docs/api/leaflet.html +1 -1
  21. package/docs/api/list.html +1 -1
  22. package/docs/api/mapview.html +1 -1
  23. package/docs/api/mock-socket.html +1 -1
  24. package/docs/api/presets.html +1 -1
  25. package/docs/api/tabs.html +1 -1
  26. package/docs/api/types.html +1 -1
  27. package/docs/api-detail.html +4 -4
  28. package/docs/warnings.json +1 -1
  29. package/lattice-grid.d.ts +1 -1
  30. package/lattice-grid.esm.min.js +3 -3
  31. package/lattice-grid.min.cjs +3 -3
  32. package/lattice-grid.min.css +1 -1
  33. package/lattice-grid.min.js +3 -3
  34. package/modules/ai.d.ts +1 -1
  35. package/modules/ai.esm.min.js +2 -2
  36. package/modules/ai.min.cjs +2 -2
  37. package/modules/ai.min.js +2 -2
  38. package/modules/alarms.d.ts +1 -1
  39. package/modules/alarms.esm.min.js +2 -2
  40. package/modules/alarms.min.cjs +2 -2
  41. package/modules/alarms.min.js +2 -2
  42. package/modules/angular.d.ts +1 -1
  43. package/modules/angular.esm.min.js +2 -2
  44. package/modules/angular.min.cjs +2 -2
  45. package/modules/angular.min.js +2 -2
  46. package/modules/calendar.d.ts +1 -1
  47. package/modules/calendar.esm.min.js +2 -2
  48. package/modules/calendar.min.cjs +2 -2
  49. package/modules/calendar.min.js +2 -2
  50. package/modules/chart-alluvial.d.ts +1 -1
  51. package/modules/chart-alluvial.esm.min.js +1 -1
  52. package/modules/chart-alluvial.min.cjs +1 -1
  53. package/modules/chart-alluvial.min.js +1 -1
  54. package/modules/chart-arc.d.ts +1 -1
  55. package/modules/chart-arc.esm.min.js +1 -1
  56. package/modules/chart-arc.min.cjs +1 -1
  57. package/modules/chart-arc.min.js +1 -1
  58. package/modules/chart-barrace.d.ts +1 -1
  59. package/modules/chart-barrace.esm.min.js +1 -1
  60. package/modules/chart-barrace.min.cjs +1 -1
  61. package/modules/chart-barrace.min.js +1 -1
  62. package/modules/chart-bubblemap.d.ts +1 -1
  63. package/modules/chart-bubblemap.esm.min.js +1 -1
  64. package/modules/chart-bubblemap.min.cjs +1 -1
  65. package/modules/chart-bubblemap.min.js +1 -1
  66. package/modules/chart-bump.d.ts +1 -1
  67. package/modules/chart-bump.esm.min.js +1 -1
  68. package/modules/chart-bump.min.cjs +1 -1
  69. package/modules/chart-bump.min.js +1 -1
  70. package/modules/chart-calendar.d.ts +1 -1
  71. package/modules/chart-calendar.esm.min.js +1 -1
  72. package/modules/chart-calendar.min.cjs +1 -1
  73. package/modules/chart-calendar.min.js +1 -1
  74. package/modules/chart-choropleth.d.ts +1 -1
  75. package/modules/chart-choropleth.esm.min.js +1 -1
  76. package/modules/chart-choropleth.min.cjs +1 -1
  77. package/modules/chart-choropleth.min.js +1 -1
  78. package/modules/chart-decomposition.d.ts +1 -1
  79. package/modules/chart-decomposition.esm.min.js +1 -1
  80. package/modules/chart-decomposition.min.cjs +1 -1
  81. package/modules/chart-decomposition.min.js +1 -1
  82. package/modules/chart-diverging.d.ts +1 -1
  83. package/modules/chart-diverging.esm.min.js +1 -1
  84. package/modules/chart-diverging.min.cjs +1 -1
  85. package/modules/chart-diverging.min.js +1 -1
  86. package/modules/chart-dumbbell.d.ts +1 -1
  87. package/modules/chart-dumbbell.esm.min.js +1 -1
  88. package/modules/chart-dumbbell.min.cjs +1 -1
  89. package/modules/chart-dumbbell.min.js +1 -1
  90. package/modules/chart-fan.d.ts +1 -1
  91. package/modules/chart-fan.esm.min.js +1 -1
  92. package/modules/chart-fan.min.cjs +1 -1
  93. package/modules/chart-fan.min.js +1 -1
  94. package/modules/chart-forcetree.d.ts +1 -1
  95. package/modules/chart-forcetree.esm.min.js +2 -2
  96. package/modules/chart-forcetree.esm.min.js.map +2 -2
  97. package/modules/chart-forcetree.min.cjs +2 -2
  98. package/modules/chart-forcetree.min.js +2 -2
  99. package/modules/chart-forcetree.min.js.map +2 -2
  100. package/modules/chart-hexbin.d.ts +1 -1
  101. package/modules/chart-hexbin.esm.min.js +2 -2
  102. package/modules/chart-hexbin.esm.min.js.map +1 -1
  103. package/modules/chart-hexbin.min.cjs +2 -2
  104. package/modules/chart-hexbin.min.js +2 -2
  105. package/modules/chart-hexbin.min.js.map +1 -1
  106. package/modules/chart-hexmap.d.ts +1 -1
  107. package/modules/chart-hexmap.esm.min.js +1 -1
  108. package/modules/chart-hexmap.min.cjs +1 -1
  109. package/modules/chart-hexmap.min.js +1 -1
  110. package/modules/chart-icicle.d.ts +1 -1
  111. package/modules/chart-icicle.esm.min.js +1 -1
  112. package/modules/chart-icicle.min.cjs +1 -1
  113. package/modules/chart-icicle.min.js +1 -1
  114. package/modules/chart-markermap.d.ts +1 -1
  115. package/modules/chart-markermap.esm.min.js +1 -1
  116. package/modules/chart-markermap.min.cjs +1 -1
  117. package/modules/chart-markermap.min.js +1 -1
  118. package/modules/chart-motion.d.ts +1 -1
  119. package/modules/chart-motion.esm.min.js +1 -1
  120. package/modules/chart-motion.min.cjs +1 -1
  121. package/modules/chart-motion.min.js +1 -1
  122. package/modules/chart-pack.d.ts +1 -1
  123. package/modules/chart-pack.esm.min.js +1 -1
  124. package/modules/chart-pack.min.cjs +1 -1
  125. package/modules/chart-pack.min.js +1 -1
  126. package/modules/chart-parallel.d.ts +1 -1
  127. package/modules/chart-parallel.esm.min.js +1 -1
  128. package/modules/chart-parallel.min.cjs +1 -1
  129. package/modules/chart-parallel.min.js +1 -1
  130. package/modules/chart-pictorial.d.ts +1 -1
  131. package/modules/chart-pictorial.esm.min.js +1 -1
  132. package/modules/chart-pictorial.min.cjs +1 -1
  133. package/modules/chart-pictorial.min.js +1 -1
  134. package/modules/chart-polararea.d.ts +1 -1
  135. package/modules/chart-polararea.esm.min.js +1 -1
  136. package/modules/chart-polararea.min.cjs +1 -1
  137. package/modules/chart-polararea.min.js +1 -1
  138. package/modules/chart-polarscatter.d.ts +1 -1
  139. package/modules/chart-polarscatter.esm.min.js +1 -1
  140. package/modules/chart-polarscatter.min.cjs +1 -1
  141. package/modules/chart-polarscatter.min.js +1 -1
  142. package/modules/chart-pyramid.d.ts +1 -1
  143. package/modules/chart-pyramid.esm.min.js +1 -1
  144. package/modules/chart-pyramid.min.cjs +1 -1
  145. package/modules/chart-pyramid.min.js +1 -1
  146. package/modules/chart-radialbar.d.ts +1 -1
  147. package/modules/chart-radialbar.esm.min.js +1 -1
  148. package/modules/chart-radialbar.min.cjs +1 -1
  149. package/modules/chart-radialbar.min.js +1 -1
  150. package/modules/chart-ridgeline.d.ts +1 -1
  151. package/modules/chart-ridgeline.esm.min.js +1 -1
  152. package/modules/chart-ridgeline.min.cjs +1 -1
  153. package/modules/chart-ridgeline.min.js +1 -1
  154. package/modules/chart-roc.d.ts +1 -1
  155. package/modules/chart-roc.esm.min.js +1 -1
  156. package/modules/chart-roc.min.cjs +1 -1
  157. package/modules/chart-roc.min.js +1 -1
  158. package/modules/chart-serpentine.d.ts +1 -1
  159. package/modules/chart-serpentine.esm.min.js +1 -1
  160. package/modules/chart-serpentine.min.cjs +1 -1
  161. package/modules/chart-serpentine.min.js +1 -1
  162. package/modules/chart-slope.d.ts +1 -1
  163. package/modules/chart-slope.esm.min.js +1 -1
  164. package/modules/chart-slope.min.cjs +1 -1
  165. package/modules/chart-slope.min.js +1 -1
  166. package/modules/chart-spiral.d.ts +1 -1
  167. package/modules/chart-spiral.esm.min.js +1 -1
  168. package/modules/chart-spiral.min.cjs +1 -1
  169. package/modules/chart-spiral.min.js +1 -1
  170. package/modules/chart-splom.d.ts +1 -1
  171. package/modules/chart-splom.esm.min.js +1 -1
  172. package/modules/chart-splom.min.cjs +1 -1
  173. package/modules/chart-splom.min.js +1 -1
  174. package/modules/chart-tree.d.ts +1 -1
  175. package/modules/chart-tree.esm.min.js +2 -2
  176. package/modules/chart-tree.esm.min.js.map +2 -2
  177. package/modules/chart-tree.min.cjs +2 -2
  178. package/modules/chart-tree.min.js +2 -2
  179. package/modules/chart-tree.min.js.map +2 -2
  180. package/modules/chart-venn.d.ts +1 -1
  181. package/modules/chart-venn.esm.min.js +1 -1
  182. package/modules/chart-venn.min.cjs +1 -1
  183. package/modules/chart-venn.min.js +1 -1
  184. package/modules/chart-voronoi.d.ts +1 -1
  185. package/modules/chart-voronoi.esm.min.js +1 -1
  186. package/modules/chart-voronoi.min.cjs +1 -1
  187. package/modules/chart-voronoi.min.js +1 -1
  188. package/modules/chart-waffle.d.ts +1 -1
  189. package/modules/chart-waffle.esm.min.js +1 -1
  190. package/modules/chart-waffle.min.cjs +1 -1
  191. package/modules/chart-waffle.min.js +1 -1
  192. package/modules/chart-wordcloud.d.ts +1 -1
  193. package/modules/chart-wordcloud.esm.min.js +1 -1
  194. package/modules/chart-wordcloud.min.cjs +1 -1
  195. package/modules/chart-wordcloud.min.js +1 -1
  196. package/modules/charts.d.ts +1 -1
  197. package/modules/charts.esm.min.js +235 -235
  198. package/modules/charts.esm.min.js.map +2 -2
  199. package/modules/charts.min.cjs +235 -235
  200. package/modules/charts.min.js +235 -235
  201. package/modules/charts.min.js.map +2 -2
  202. package/modules/dashboard.d.ts +1 -1
  203. package/modules/dashboard.esm.min.js +2 -2
  204. package/modules/dashboard.min.cjs +2 -2
  205. package/modules/dashboard.min.js +2 -2
  206. package/modules/data-router.d.ts +1 -1
  207. package/modules/data-router.esm.min.js +2 -2
  208. package/modules/data-router.min.cjs +2 -2
  209. package/modules/data-router.min.js +2 -2
  210. package/modules/deckgl.d.ts +1 -1
  211. package/modules/deckgl.esm.min.js +2 -2
  212. package/modules/deckgl.min.cjs +2 -2
  213. package/modules/deckgl.min.js +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.d.ts +1 -1
  283. package/modules/presets.esm.min.js +2 -2
  284. package/modules/presets.min.cjs +2 -2
  285. package/modules/presets.min.js +2 -2
  286. package/modules/react.d.ts +1 -1
  287. package/modules/react.esm.min.js +2 -2
  288. package/modules/react.min.cjs +2 -2
  289. package/modules/react.min.js +2 -2
  290. package/modules/svelte.d.ts +1 -1
  291. package/modules/svelte.esm.min.js +2 -2
  292. package/modules/svelte.min.cjs +2 -2
  293. package/modules/svelte.min.js +2 -2
  294. package/modules/tabs.d.ts +1 -1
  295. package/modules/tabs.esm.min.js +2 -2
  296. package/modules/tabs.min.cjs +2 -2
  297. package/modules/tabs.min.js +2 -2
  298. package/modules/vue.d.ts +1 -1
  299. package/modules/vue.esm.min.js +2 -2
  300. package/modules/vue.min.cjs +2 -2
  301. package/modules/vue.min.js +2 -2
  302. package/modules/webcomponent.d.ts +1 -1
  303. package/modules/webcomponent.esm.min.js +3 -3
  304. package/modules/webcomponent.min.cjs +3 -3
  305. package/modules/webcomponent.min.js +3 -3
  306. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.86.4, vue module
2
+ * Lattice Grid 1.86.5, 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(a,Y){ve[a]=Y}function je(a){var Y=Oe[a];if(Y)return Y;var X=Object.create(null);Oe[a]=X;var x=ve[a];if(!x)throw new Error("[lattice] missing module: "+a);return x(X,je),X}ue("packages/core/src/internal/util.js",function(a,Y){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return c}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return w}});const X="1.86.4";async function x(){return X}const k="1.86.4",q=new Set,Z=2e3;function z(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 c(){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 R(e,...t){if(q.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;z(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 D(e,t){e||P(t)}const B=(()=>{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 C(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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 ce(e,t,n){T(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 be(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 p=t[o];p!==void 0&&(n[o]=M(p)&&M(n[o])?oe(n[o],p):p)}return n}function pe(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 i(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||[])},p=(...v)=>{n=v,t===null&&(t=g(o))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),o())},p}function ne(e,t){let n=null,o=null;const p=()=>{if(n=null,o===null)return;const F=o;o=null,e(...F),v()},v=()=>{n=setTimeout(p,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 b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(a,Y){"use strict";Object.defineProperty(a,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"handlerName",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(a,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(a,"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:(c,s)=>c.sort.set(s||[]),filters:(c,s)=>c.filters.set(s||null),quickFilter:(c,s)=>{if(s&&typeof s=="object"){c.filters.quick(s.text||"",{mode:s.mode});return}c.filters.quick(typeof s=="string"?s:"")},selectedKeys:(c,s)=>c.selection.set(Array.isArray(s)?s:[])});function k(c){return`on${String(c).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(c){return String(c).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(c){return Object.hasOwn(Z,c)?Z[c]:c}const _=Object.freeze(Object.fromEntries(X.map(c=>[k(c),c])));function L(c){return Object.hasOwn(_,c)}function f(c){const s={},R={},E={};for(const[j,P]of Object.entries(c||{})){if(L(j)){E[j]=P;continue}if(Object.hasOwn(x,j)){R[j]=P;continue}s[j]=P}return{config:s,imperative:R,handlers:E}}function u(c){const s=c.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(c.props||{}),E=s(c.element,{...R.config});let j=R.handlers,P=R.config,D={};const B=V=>{if(!V||typeof V.type!="string")return;const C=j[k(V.type)];typeof C=="function"&&C(V)},M=E.on("*",B);for(const[V,C]of Object.entries(R.imperative))C!==void 0&&(x[V](E,C),D[V]=C);let ee=!1;return{grid:E,update(V){if(ee)return;const C=f(V||{});j=C.handlers;const W={};for(const[A,I]of Object.entries(C.config))Object.is(P[A],I)||(W[A]=I);for(const A of Object.keys(P))Object.hasOwn(C.config,A)||(W[A]=void 0);Object.keys(W).length&&E.setAll(W),P=C.config;for(const[A,I]of Object.entries(x)){const H=C.imperative[A];Object.is(D[A],H)||H===void 0&&!Object.hasOwn(D,A)||(I(E,H),D[A]=H)}},destroy(){ee||(ee=!0,M(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(a,Y){"use strict";Object.defineProperty(a,"VIEWER_EVENTS",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(a,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"createViewerController",{enumerable:!0,get:function(){return f}});const x=Y("packages/core/src/internal/util.js").warnOnce,k=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"]),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,c)=>u.setRows(Array.isArray(c)?c:[])}),kanban:Object.freeze({rows:(u,c)=>u.setRows(Array.isArray(c)?c:[]),quickFilter:(u,c)=>u.setQuickFilter(typeof c=="string"?c:""),sprint:(u,c)=>u.setSprint(c),epic:(u,c)=>u.setEpic(c),loading:(u,c)=>u.setLoading(!!c),error:(u,c)=>u.setError(c??null)}),gantt:Object.freeze({tasks:(u,c)=>u.setTasks(Array.isArray(c)?c:[]),dependencies:(u,c)=>u.setDependencies(Array.isArray(c)?c:[])}),tabs:Object.freeze({active:(u,c)=>{typeof c=="string"&&u.activate(c)}}),calendar:Object.freeze({rows:(u,c)=>u.setRows(Array.isArray(c)?c:[]),view:(u,c)=>u.setView(c),date:(u,c)=>u.goTo(c),move:(u,c,s)=>u.move(c,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(k).map(([u,c])=>[u,Object.freeze(Object.fromEntries(c.map(s=>[z(s),s])))])));function L(u,c){const s=_[u]||{},R=q[u]||{},E={},j={},P={};for(const[D,B]of Object.entries(c||{})){if(Object.hasOwn(s,D)){P[D]=B;continue}if(Object.hasOwn(R,D)){j[D]=B,E[D]=B;continue}E[D]=B}return{config:E,live:j,handlers:P}}function f(u){const c=String(u.viewer),s=u.mount,R=u.name||c;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${c}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const E=L(c,u.props||{}),j=s(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let P=E.handlers,D=E.config;const B={...E.live},M=[];if(typeof j.on=="function")for(const W of k[c]||[]){const A=z(W),I=j.on(W,H=>{const T=P[A];typeof T=="function"&&T(H)});typeof I=="function"&&M.push(I)}const ee=Z[c],V=q[c]||{};let C=!1;return{instance:j,update(W){if(C)return;const A=L(c,W||{});P=A.handlers;const I={};for(const[T,J]of Object.entries(A.config))Object.is(D[T],J)||(I[T]=J);if(D=A.config,!Object.keys(I).length)return;const H=[];for(const T of Object.keys(I)){const J=V[T];if(J){J(j,I[T]),B[T]=I[T];continue}ee&&typeof j[ee]=="function"||H.push(T)}if(ee&&typeof j[ee]=="function"){const T={};for(const J of Object.keys(I))V[J]||(T[J]=I[J]);Object.keys(T).length&&j[ee](T)}H.length&&x(`react.viewer.${c}.mountOnly.${H.join(".")}`,`${R}: ${H.map(T=>`\`${T}\``).join(", ")} changed, but ${R} 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(!C){C=!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(a,Y){"use strict";Object.defineProperty(a,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return _}});const x=Y("packages/core/src/internal/util.js").warnOnce;function k(L,f){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const c=u[1],s=parseInt(c.slice(0,2),16),R=parseInt(c.slice(2,4),16),E=parseInt(c.slice(4,6),16);return`rgba(${s}, ${R}, ${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":k(f.primary.main,.12),"--lattice-hovered-background":k(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":k(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":k(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":k(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":k(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(a,Y){ve[a]=Y}function je(a){var Y=Oe[a];if(Y)return Y;var X=Object.create(null);Oe[a]=X;var x=ve[a];if(!x)throw new Error("[lattice] missing module: "+a);return x(X,je),X}ue("packages/core/src/internal/util.js",function(a,Y){"use strict";Object.defineProperty(a,"VERSION",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"reportedWarnings",{enumerable:!0,get:function(){return c}}),Object.defineProperty(a,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(a,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(a,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(a,"fail",{enumerable:!0,get:function(){return P}}),Object.defineProperty(a,"invariant",{enumerable:!0,get:function(){return D}}),Object.defineProperty(a,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(a,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(a,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(a,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(a,"isBlank",{enumerable:!0,get:function(){return C}}),Object.defineProperty(a,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(a,"pathGetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(a,"pathSetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(a,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(a,"setPath",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(a,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(a,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(a,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(a,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(a,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(a,"merge",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(a,"mergeRow",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(a,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(a,"collator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(a,"defaultCompare",{enumerable:!0,get:function(){return i}}),Object.defineProperty(a,"now",{enumerable:!0,get:function(){return l}}),Object.defineProperty(a,"nextFrame",{enumerable:!0,get:function(){return g}}),Object.defineProperty(a,"cancelFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(a,"frameBatched",{enumerable:!0,get:function(){return N}}),Object.defineProperty(a,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(a,"whenIdle",{enumerable:!0,get:function(){return $}}),Object.defineProperty(a,"uid",{enumerable:!0,get:function(){return w}});const X="1.86.5";async function x(){return X}const k="1.86.5",q=new Set,Z=2e3;function z(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 c(){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 R(e,...t){if(q.has(e))return;z(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;z(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 D(e,t){e||P(t)}const B=(()=>{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 C(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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 ce(e,t,n){T(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 be(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 p=t[o];p!==void 0&&(n[o]=M(p)&&M(n[o])?oe(n[o],p):p)}return n}function pe(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 i(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||[])},p=(...v)=>{n=v,t===null&&(t=g(o))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),o())},p}function ne(e,t){let n=null,o=null;const p=()=>{if(n=null,o===null)return;const F=o;o=null,e(...F),v()},v=()=>{n=setTimeout(p,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 b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(a,Y){"use strict";Object.defineProperty(a,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(a,"handlerName",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(a,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"partition",{enumerable:!0,get:function(){return f}}),Object.defineProperty(a,"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:(c,s)=>c.sort.set(s||[]),filters:(c,s)=>c.filters.set(s||null),quickFilter:(c,s)=>{if(s&&typeof s=="object"){c.filters.quick(s.text||"",{mode:s.mode});return}c.filters.quick(typeof s=="string"?s:"")},selectedKeys:(c,s)=>c.selection.set(Array.isArray(s)?s:[])});function k(c){return`on${String(c).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(c){return String(c).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(c){return Object.hasOwn(Z,c)?Z[c]:c}const _=Object.freeze(Object.fromEntries(X.map(c=>[k(c),c])));function L(c){return Object.hasOwn(_,c)}function f(c){const s={},R={},E={};for(const[j,P]of Object.entries(c||{})){if(L(j)){E[j]=P;continue}if(Object.hasOwn(x,j)){R[j]=P;continue}s[j]=P}return{config:s,imperative:R,handlers:E}}function u(c){const s=c.createGrid;if(typeof s!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=f(c.props||{}),E=s(c.element,{...R.config});let j=R.handlers,P=R.config,D={};const B=V=>{if(!V||typeof V.type!="string")return;const C=j[k(V.type)];typeof C=="function"&&C(V)},M=E.on("*",B);for(const[V,C]of Object.entries(R.imperative))C!==void 0&&(x[V](E,C),D[V]=C);let ee=!1;return{grid:E,update(V){if(ee)return;const C=f(V||{});j=C.handlers;const W={};for(const[A,I]of Object.entries(C.config))Object.is(P[A],I)||(W[A]=I);for(const A of Object.keys(P))Object.hasOwn(C.config,A)||(W[A]=void 0);Object.keys(W).length&&E.setAll(W),P=C.config;for(const[A,I]of Object.entries(x)){const H=C.imperative[A];Object.is(D[A],H)||H===void 0&&!Object.hasOwn(D,A)||(I(E,H),D[A]=H)}},destroy(){ee||(ee=!0,M(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(a,Y){"use strict";Object.defineProperty(a,"VIEWER_EVENTS",{enumerable:!0,get:function(){return k}}),Object.defineProperty(a,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(a,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(a,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(a,"createViewerController",{enumerable:!0,get:function(){return f}});const x=Y("packages/core/src/internal/util.js").warnOnce,k=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"]),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,c)=>u.setRows(Array.isArray(c)?c:[])}),kanban:Object.freeze({rows:(u,c)=>u.setRows(Array.isArray(c)?c:[]),quickFilter:(u,c)=>u.setQuickFilter(typeof c=="string"?c:""),sprint:(u,c)=>u.setSprint(c),epic:(u,c)=>u.setEpic(c),loading:(u,c)=>u.setLoading(!!c),error:(u,c)=>u.setError(c??null)}),gantt:Object.freeze({tasks:(u,c)=>u.setTasks(Array.isArray(c)?c:[]),dependencies:(u,c)=>u.setDependencies(Array.isArray(c)?c:[])}),tabs:Object.freeze({active:(u,c)=>{typeof c=="string"&&u.activate(c)}}),calendar:Object.freeze({rows:(u,c)=>u.setRows(Array.isArray(c)?c:[]),view:(u,c)=>u.setView(c),date:(u,c)=>u.goTo(c),move:(u,c,s)=>u.move(c,s)}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(k).map(([u,c])=>[u,Object.freeze(Object.fromEntries(c.map(s=>[z(s),s])))])));function L(u,c){const s=_[u]||{},R=q[u]||{},E={},j={},P={};for(const[D,B]of Object.entries(c||{})){if(Object.hasOwn(s,D)){P[D]=B;continue}if(Object.hasOwn(R,D)){j[D]=B,E[D]=B;continue}E[D]=B}return{config:E,live:j,handlers:P}}function f(u){const c=String(u.viewer),s=u.mount,R=u.name||c;if(typeof s!="function")throw new TypeError(`createViewerController needs a mount factory for "${c}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const E=L(c,u.props||{}),j=s(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let P=E.handlers,D=E.config;const B={...E.live},M=[];if(typeof j.on=="function")for(const W of k[c]||[]){const A=z(W),I=j.on(W,H=>{const T=P[A];typeof T=="function"&&T(H)});typeof I=="function"&&M.push(I)}const ee=Z[c],V=q[c]||{};let C=!1;return{instance:j,update(W){if(C)return;const A=L(c,W||{});P=A.handlers;const I={};for(const[T,J]of Object.entries(A.config))Object.is(D[T],J)||(I[T]=J);if(D=A.config,!Object.keys(I).length)return;const H=[];for(const T of Object.keys(I)){const J=V[T];if(J){J(j,I[T]),B[T]=I[T];continue}ee&&typeof j[ee]=="function"||H.push(T)}if(ee&&typeof j[ee]=="function"){const T={};for(const J of Object.keys(I))V[J]||(T[J]=I[J]);Object.keys(T).length&&j[ee](T)}H.length&&x(`react.viewer.${c}.mountOnly.${H.join(".")}`,`${R}: ${H.map(T=>`\`${T}\``).join(", ")} changed, but ${R} 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(!C){C=!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(a,Y){"use strict";Object.defineProperty(a,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return _}});const x=Y("packages/core/src/internal/util.js").warnOnce;function k(L,f){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const c=u[1],s=parseInt(c.slice(0,2),16),R=parseInt(c.slice(2,4),16),E=parseInt(c.slice(4,6),16);return`rgba(${s}, ${R}, ${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":k(f.primary.main,.12),"--lattice-hovered-background":k(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":k(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":k(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":k(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":k(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,c])=>` ${u}: ${c};`).join(`
8
8
  `)}
9
9
  }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.86.4, vue module
2
+ * Lattice Grid 1.86.5, 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,U){ve[c]=U}function je(c){var U=Oe[c];if(U)return U;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,U){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return C}}),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 z}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return $}}),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 T}}),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 be}}),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 G}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.86.4";async function X(){return Q}const C="1.86.4",q=new Set,Y=2e3;function K(e){if(q.add(e),q.size>Y){const t=q.values().next().value;t!==void 0&&q.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(q.has(e))return;K(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;K(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function $(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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){T(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}:$(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(!$(e))return $(t)?{...t}:t;if(!$(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const p=t[a];p!==void 0&&(n[a]=$(p)&&$(n[a])?ae(n[a],p):p)}return n}function be(e,t){if(!$(e)||!$(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 pe=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=pe.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),pe.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 G(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},p=(...v)=>{n=v,t===null&&(t=g(a))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),a())},p}function te(e,t){let n=null,a=null;const p=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(p,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 D(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,U){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return K}}),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 C(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function K(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[C(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,z={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[C(I.type)];typeof k=="function"&&k(I)},$=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),z[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(z[A],W)||W===void 0&&!Object.hasOwn(z,A)||(V(L,W),z[A]=W)}},destroy(){_||(_=!0,$(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,U){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=U("packages/core/src/internal/util.js").warnOnce,C=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"]),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,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 K(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[K(s),s])))])));function P(u,i){const s=x[u]||{},R=q[u]||{},L={},j={},E={};for(const[z,B]of Object.entries(i||{})){if(Object.hasOwn(s,z)){E[z]=B;continue}if(Object.hasOwn(R,z)){j[z]=B,L[z]=B;continue}L[z]=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,z=L.config;const B={...L.live},$=[];if(typeof j.on=="function")for(const F of C[i]||[]){const A=K(F),V=j.on(F,W=>{const T=E[A];typeof T=="function"&&T(W)});typeof V=="function"&&$.push(V)}const _=Y[i],I=q[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[T,Z]of Object.entries(A.config))Object.is(z[T],Z)||(V[T]=Z);if(z=A.config,!Object.keys(V).length)return;const W=[];for(const T of Object.keys(V)){const Z=I[T];if(Z){Z(j,V[T]),B[T]=V[T];continue}_&&typeof j[_]=="function"||W.push(T)}if(_&&typeof j[_]=="function"){const T={};for(const Z of Object.keys(V))I[Z]||(T[Z]=V[Z]);Object.keys(T).length&&j[_](T)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(T=>`\`${T}\``).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 $)try{F()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(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 q(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":C(f.primary.main,.12),"--lattice-hovered-background":C(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":C(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":C(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":C(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":C(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,U){ve[c]=U}function je(c){var U=Oe[c];if(U)return U;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,U){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return C}}),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 z}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return $}}),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 T}}),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 be}}),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 G}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.86.5";async function X(){return Q}const C="1.86.5",q=new Set,Y=2e3;function K(e){if(q.add(e),q.size>Y){const t=q.values().next().value;t!==void 0&&q.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(q.has(e))return;K(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;K(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function $(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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){T(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}:$(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(!$(e))return $(t)?{...t}:t;if(!$(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const p=t[a];p!==void 0&&(n[a]=$(p)&&$(n[a])?ae(n[a],p):p)}return n}function be(e,t){if(!$(e)||!$(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 pe=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=pe.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),pe.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 G(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},p=(...v)=>{n=v,t===null&&(t=g(a))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),a())},p}function te(e,t){let n=null,a=null;const p=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(p,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 D(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,U){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return K}}),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 C(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function K(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[C(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,z={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[C(I.type)];typeof k=="function"&&k(I)},$=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),z[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(z[A],W)||W===void 0&&!Object.hasOwn(z,A)||(V(L,W),z[A]=W)}},destroy(){_||(_=!0,$(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,U){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=U("packages/core/src/internal/util.js").warnOnce,C=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"]),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,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 K(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[K(s),s])))])));function P(u,i){const s=x[u]||{},R=q[u]||{},L={},j={},E={};for(const[z,B]of Object.entries(i||{})){if(Object.hasOwn(s,z)){E[z]=B;continue}if(Object.hasOwn(R,z)){j[z]=B,L[z]=B;continue}L[z]=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,z=L.config;const B={...L.live},$=[];if(typeof j.on=="function")for(const F of C[i]||[]){const A=K(F),V=j.on(F,W=>{const T=E[A];typeof T=="function"&&T(W)});typeof V=="function"&&$.push(V)}const _=Y[i],I=q[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[T,Z]of Object.entries(A.config))Object.is(z[T],Z)||(V[T]=Z);if(z=A.config,!Object.keys(V).length)return;const W=[];for(const T of Object.keys(V)){const Z=I[T];if(Z){Z(j,V[T]),B[T]=V[T];continue}_&&typeof j[_]=="function"||W.push(T)}if(_&&typeof j[_]=="function"){const T={};for(const Z of Object.keys(V))I[Z]||(T[Z]=V[Z]);Object.keys(T).length&&j[_](T)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(T=>`\`${T}\``).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 $)try{F()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(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 q(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":C(f.primary.main,.12),"--lattice-hovered-background":C(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":C(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":C(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":C(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":C(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.86.4, vue module
2
+ * Lattice Grid 1.86.5, 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,U){ve[c]=U}function je(c){var U=Oe[c];if(U)return U;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,U){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return C}}),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 z}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return $}}),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 T}}),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 be}}),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 G}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.86.4";async function X(){return Q}const C="1.86.4",q=new Set,Y=2e3;function K(e){if(q.add(e),q.size>Y){const t=q.values().next().value;t!==void 0&&q.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(q.has(e))return;K(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;K(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function $(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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){T(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}:$(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(!$(e))return $(t)?{...t}:t;if(!$(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const p=t[a];p!==void 0&&(n[a]=$(p)&&$(n[a])?ae(n[a],p):p)}return n}function be(e,t){if(!$(e)||!$(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 pe=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=pe.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),pe.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 G(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},p=(...v)=>{n=v,t===null&&(t=g(a))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),a())},p}function te(e,t){let n=null,a=null;const p=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(p,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 D(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,U){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return K}}),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 C(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function K(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[C(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,z={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[C(I.type)];typeof k=="function"&&k(I)},$=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),z[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(z[A],W)||W===void 0&&!Object.hasOwn(z,A)||(V(L,W),z[A]=W)}},destroy(){_||(_=!0,$(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,U){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=U("packages/core/src/internal/util.js").warnOnce,C=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"]),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,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 K(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[K(s),s])))])));function P(u,i){const s=x[u]||{},R=q[u]||{},L={},j={},E={};for(const[z,B]of Object.entries(i||{})){if(Object.hasOwn(s,z)){E[z]=B;continue}if(Object.hasOwn(R,z)){j[z]=B,L[z]=B;continue}L[z]=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,z=L.config;const B={...L.live},$=[];if(typeof j.on=="function")for(const F of C[i]||[]){const A=K(F),V=j.on(F,W=>{const T=E[A];typeof T=="function"&&T(W)});typeof V=="function"&&$.push(V)}const _=Y[i],I=q[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[T,Z]of Object.entries(A.config))Object.is(z[T],Z)||(V[T]=Z);if(z=A.config,!Object.keys(V).length)return;const W=[];for(const T of Object.keys(V)){const Z=I[T];if(Z){Z(j,V[T]),B[T]=V[T];continue}_&&typeof j[_]=="function"||W.push(T)}if(_&&typeof j[_]=="function"){const T={};for(const Z of Object.keys(V))I[Z]||(T[Z]=V[Z]);Object.keys(T).length&&j[_](T)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(T=>`\`${T}\``).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 $)try{F()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(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 q(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":C(f.primary.main,.12),"--lattice-hovered-background":C(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":C(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":C(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":C(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":C(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,U){ve[c]=U}function je(c){var U=Oe[c];if(U)return U;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,U){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return C}}),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 z}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return $}}),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 T}}),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 be}}),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 G}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return w}});const Q="1.86.5";async function X(){return Q}const C="1.86.5",q=new Set,Y=2e3;function K(e){if(q.add(e),q.size>Y){const t=q.values().next().value;t!==void 0&&q.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(q.has(e))return;K(e);const n=s(t);f(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;K(e);const n=s(t);f(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function E(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||E(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function $(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=p=>{let v=p;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 T(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=(p,v)=>{let h=p;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){T(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}:$(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(!$(e))return $(t)?{...t}:t;if(!$(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(ge.has(a))continue;const p=t[a];p!==void 0&&(n[a]=$(p)&&$(n[a])?ae(n[a],p):p)}return n}function be(e,t){if(!$(e)||!$(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 pe=new Map;function r(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=pe.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),pe.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 G(e){let t=null,n=null;const a=()=>{t=null;const v=n;n=null,e(...v||[])},p=(...v)=>{n=v,t===null&&(t=g(a))};return p.cancel=()=>{d(t),t=null,n=null},p.flush=()=>{t!==null&&(d(t),a())},p}function te(e,t){let n=null,a=null;const p=()=>{if(n=null,a===null)return;const M=a;a=null,e(...M),v()},v=()=>{n=setTimeout(p,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 D(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let b=0;function w(e="l"){return`${e}${(++b).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(c,U){"use strict";Object.defineProperty(c,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"handlerName",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"aliasConfigKey",{enumerable:!0,get:function(){return K}}),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 C(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Y=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function K(i){return Object.hasOwn(Y,i)?Y[i]:i}const x=Object.freeze(Object.fromEntries(Q.map(i=>[C(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,z={};const B=I=>{if(!I||typeof I.type!="string")return;const k=j[C(I.type)];typeof k=="function"&&k(I)},$=L.on("*",B);for(const[I,k]of Object.entries(R.imperative))k!==void 0&&(X[I](L,k),z[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(z[A],W)||W===void 0&&!Object.hasOwn(z,A)||(V(L,W),z[A]=W)}},destroy(){_||(_=!0,$(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(c,U){"use strict";Object.defineProperty(c,"VIEWER_EVENTS",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(c,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"viewerHandlerName",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return f}});const X=U("packages/core/src/internal/util.js").warnOnce,C=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"]),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,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 K(u){return`on${String(u).split(":").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(s=>[K(s),s])))])));function P(u,i){const s=x[u]||{},R=q[u]||{},L={},j={},E={};for(const[z,B]of Object.entries(i||{})){if(Object.hasOwn(s,z)){E[z]=B;continue}if(Object.hasOwn(R,z)){j[z]=B,L[z]=B;continue}L[z]=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,z=L.config;const B={...L.live},$=[];if(typeof j.on=="function")for(const F of C[i]||[]){const A=K(F),V=j.on(F,W=>{const T=E[A];typeof T=="function"&&T(W)});typeof V=="function"&&$.push(V)}const _=Y[i],I=q[i]||{};let k=!1;return{instance:j,update(F){if(k)return;const A=P(i,F||{});E=A.handlers;const V={};for(const[T,Z]of Object.entries(A.config))Object.is(z[T],Z)||(V[T]=Z);if(z=A.config,!Object.keys(V).length)return;const W=[];for(const T of Object.keys(V)){const Z=I[T];if(Z){Z(j,V[T]),B[T]=V[T];continue}_&&typeof j[_]=="function"||W.push(T)}if(_&&typeof j[_]=="function"){const T={};for(const Z of Object.keys(V))I[Z]||(T[Z]=V[Z]);Object.keys(T).length&&j[_](T)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${R}: ${W.map(T=>`\`${T}\``).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 $)try{F()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(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 q(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":C(f.primary.main,.12),"--lattice-hovered-background":C(f.text.primary,.06),"--lattice-focus-color":f.primary.main,"--lattice-variant-danger-solid":f.error.main,"--lattice-variant-danger-fill":C(f.error.main,.12),"--lattice-variant-warning-solid":f.warning.main,"--lattice-variant-warning-fill":C(f.warning.main,.12),"--lattice-variant-success-solid":f.success.main,"--lattice-variant-success-fill":C(f.success.main,.12),"--lattice-variant-info-solid":f.info.main,"--lattice-variant-info-fill":C(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,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.86.4, webcomponent module type declarations
2
+ * Lattice Grid 1.86.5, webcomponent module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */