@toclocoinc/lattice-grid 1.80.0 → 1.81.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +4 -4
  5. package/docs/THEMING.md +6 -3
  6. package/docs/api/adapters.html +1 -1
  7. package/docs/api/ai.html +1 -1
  8. package/docs/api/alarms.html +1 -1
  9. package/docs/api/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/mock-socket.html +1 -1
  23. package/docs/api/presets.html +1 -1
  24. package/docs/api/tabs.html +1 -1
  25. package/docs/api/types.html +1 -1
  26. package/docs/api-detail.html +4 -4
  27. package/docs/warnings.json +1 -1
  28. package/lattice-grid.d.ts +1 -1
  29. package/lattice-grid.esm.min.js +3 -3
  30. package/lattice-grid.min.cjs +3 -3
  31. package/lattice-grid.min.css +1 -1
  32. package/lattice-grid.min.js +3 -3
  33. package/modules/ai.d.ts +1 -1
  34. package/modules/ai.esm.min.js +2 -2
  35. package/modules/ai.min.cjs +2 -2
  36. package/modules/ai.min.js +2 -2
  37. package/modules/alarms.d.ts +1 -1
  38. package/modules/alarms.esm.min.js +2 -2
  39. package/modules/alarms.min.cjs +2 -2
  40. package/modules/alarms.min.js +2 -2
  41. package/modules/angular.d.ts +1 -1
  42. package/modules/angular.esm.min.js +2 -2
  43. package/modules/angular.min.cjs +2 -2
  44. package/modules/angular.min.js +2 -2
  45. package/modules/chart-alluvial.d.ts +1 -1
  46. package/modules/chart-alluvial.esm.min.js +1 -1
  47. package/modules/chart-alluvial.min.cjs +1 -1
  48. package/modules/chart-alluvial.min.js +1 -1
  49. package/modules/chart-arc.d.ts +1 -1
  50. package/modules/chart-arc.esm.min.js +1 -1
  51. package/modules/chart-arc.min.cjs +1 -1
  52. package/modules/chart-arc.min.js +1 -1
  53. package/modules/chart-bubblemap.d.ts +1 -1
  54. package/modules/chart-bubblemap.esm.min.js +1 -1
  55. package/modules/chart-bubblemap.min.cjs +1 -1
  56. package/modules/chart-bubblemap.min.js +1 -1
  57. package/modules/chart-bump.d.ts +1 -1
  58. package/modules/chart-bump.esm.min.js +1 -1
  59. package/modules/chart-bump.min.cjs +1 -1
  60. package/modules/chart-bump.min.js +1 -1
  61. package/modules/chart-calendar.d.ts +1 -1
  62. package/modules/chart-calendar.esm.min.js +1 -1
  63. package/modules/chart-calendar.min.cjs +1 -1
  64. package/modules/chart-calendar.min.js +1 -1
  65. package/modules/chart-choropleth.d.ts +1 -1
  66. package/modules/chart-choropleth.esm.min.js +1 -1
  67. package/modules/chart-choropleth.min.cjs +1 -1
  68. package/modules/chart-choropleth.min.js +1 -1
  69. package/modules/chart-decomposition.d.ts +1 -1
  70. package/modules/chart-decomposition.esm.min.js +1 -1
  71. package/modules/chart-decomposition.min.cjs +1 -1
  72. package/modules/chart-decomposition.min.js +1 -1
  73. package/modules/chart-diverging.d.ts +1 -1
  74. package/modules/chart-diverging.esm.min.js +1 -1
  75. package/modules/chart-diverging.min.cjs +1 -1
  76. package/modules/chart-diverging.min.js +1 -1
  77. package/modules/chart-dumbbell.d.ts +1 -1
  78. package/modules/chart-dumbbell.esm.min.js +1 -1
  79. package/modules/chart-dumbbell.min.cjs +1 -1
  80. package/modules/chart-dumbbell.min.js +1 -1
  81. package/modules/chart-fan.d.ts +1 -1
  82. package/modules/chart-fan.esm.min.js +1 -1
  83. package/modules/chart-fan.min.cjs +1 -1
  84. package/modules/chart-fan.min.js +1 -1
  85. package/modules/chart-hexbin.d.ts +1 -1
  86. package/modules/chart-hexbin.esm.min.js +1 -1
  87. package/modules/chart-hexbin.min.cjs +1 -1
  88. package/modules/chart-hexbin.min.js +1 -1
  89. package/modules/chart-hexmap.d.ts +1 -1
  90. package/modules/chart-hexmap.esm.min.js +1 -1
  91. package/modules/chart-hexmap.min.cjs +1 -1
  92. package/modules/chart-hexmap.min.js +1 -1
  93. package/modules/chart-icicle.d.ts +1 -1
  94. package/modules/chart-icicle.esm.min.js +1 -1
  95. package/modules/chart-icicle.min.cjs +1 -1
  96. package/modules/chart-icicle.min.js +1 -1
  97. package/modules/chart-markermap.d.ts +1 -1
  98. package/modules/chart-markermap.esm.min.js +1 -1
  99. package/modules/chart-markermap.min.cjs +1 -1
  100. package/modules/chart-markermap.min.js +1 -1
  101. package/modules/chart-parallel.d.ts +1 -1
  102. package/modules/chart-parallel.esm.min.js +1 -1
  103. package/modules/chart-parallel.min.cjs +1 -1
  104. package/modules/chart-parallel.min.js +1 -1
  105. package/modules/chart-ridgeline.d.ts +1 -1
  106. package/modules/chart-ridgeline.esm.min.js +1 -1
  107. package/modules/chart-ridgeline.min.cjs +1 -1
  108. package/modules/chart-ridgeline.min.js +1 -1
  109. package/modules/chart-roc.d.ts +1 -1
  110. package/modules/chart-roc.esm.min.js +1 -1
  111. package/modules/chart-roc.min.cjs +1 -1
  112. package/modules/chart-roc.min.js +1 -1
  113. package/modules/chart-slope.d.ts +1 -1
  114. package/modules/chart-slope.esm.min.js +1 -1
  115. package/modules/chart-slope.min.cjs +1 -1
  116. package/modules/chart-slope.min.js +1 -1
  117. package/modules/chart-splom.d.ts +1 -1
  118. package/modules/chart-splom.esm.min.js +1 -1
  119. package/modules/chart-splom.min.cjs +1 -1
  120. package/modules/chart-splom.min.js +1 -1
  121. package/modules/chart-waffle.d.ts +1 -1
  122. package/modules/chart-waffle.esm.min.js +1 -1
  123. package/modules/chart-waffle.min.cjs +1 -1
  124. package/modules/chart-waffle.min.js +1 -1
  125. package/modules/charts.d.ts +1 -1
  126. package/modules/charts.esm.min.js +2 -2
  127. package/modules/charts.min.cjs +2 -2
  128. package/modules/charts.min.js +2 -2
  129. package/modules/dashboard.d.ts +1 -1
  130. package/modules/dashboard.esm.min.js +2 -2
  131. package/modules/dashboard.min.cjs +2 -2
  132. package/modules/dashboard.min.js +2 -2
  133. package/modules/data-router.d.ts +1 -1
  134. package/modules/data-router.esm.min.js +2 -2
  135. package/modules/data-router.min.cjs +2 -2
  136. package/modules/data-router.min.js +2 -2
  137. package/modules/deckgl.d.ts +1 -1
  138. package/modules/deckgl.esm.min.js +2 -2
  139. package/modules/deckgl.min.cjs +2 -2
  140. package/modules/deckgl.min.js +2 -2
  141. package/modules/devtools.d.ts +1 -1
  142. package/modules/devtools.esm.min.js +1 -1
  143. package/modules/devtools.min.cjs +1 -1
  144. package/modules/devtools.min.js +1 -1
  145. package/modules/dhtmlx-compat.d.ts +1 -1
  146. package/modules/dhtmlx-compat.esm.min.js +2 -2
  147. package/modules/dhtmlx-compat.min.cjs +2 -2
  148. package/modules/dhtmlx-compat.min.js +2 -2
  149. package/modules/gantt.d.ts +1 -1
  150. package/modules/gantt.esm.min.js +2 -2
  151. package/modules/gantt.min.cjs +2 -2
  152. package/modules/gantt.min.js +2 -2
  153. package/modules/geo-europe-nuts.d.ts +1 -1
  154. package/modules/geo-europe-nuts.esm.min.js +1 -1
  155. package/modules/geo-europe-nuts.min.cjs +1 -1
  156. package/modules/geo-europe-nuts.min.js +1 -1
  157. package/modules/geo-uk.d.ts +1 -1
  158. package/modules/geo-uk.esm.min.js +1 -1
  159. package/modules/geo-uk.min.cjs +1 -1
  160. package/modules/geo-uk.min.js +1 -1
  161. package/modules/geo-us-states.d.ts +1 -1
  162. package/modules/geo-us-states.esm.min.js +1 -1
  163. package/modules/geo-us-states.min.cjs +1 -1
  164. package/modules/geo-us-states.min.js +1 -1
  165. package/modules/geo-world-110m.d.ts +1 -1
  166. package/modules/geo-world-110m.esm.min.js +1 -1
  167. package/modules/geo-world-110m.min.cjs +1 -1
  168. package/modules/geo-world-110m.min.js +1 -1
  169. package/modules/geo-world-50m.d.ts +1 -1
  170. package/modules/geo-world-50m.esm.min.js +1 -1
  171. package/modules/geo-world-50m.min.cjs +1 -1
  172. package/modules/geo-world-50m.min.js +1 -1
  173. package/modules/geometry.d.ts +1 -1
  174. package/modules/geometry.esm.min.js +2 -2
  175. package/modules/geometry.min.cjs +2 -2
  176. package/modules/geometry.min.js +2 -2
  177. package/modules/htmx.d.ts +1 -1
  178. package/modules/htmx.esm.min.js +3 -3
  179. package/modules/htmx.min.cjs +3 -3
  180. package/modules/htmx.min.js +3 -3
  181. package/modules/kanban.d.ts +1 -1
  182. package/modules/kanban.esm.min.js +2 -2
  183. package/modules/kanban.min.cjs +2 -2
  184. package/modules/kanban.min.js +2 -2
  185. package/modules/kpi.d.ts +1 -1
  186. package/modules/kpi.esm.min.js +2 -2
  187. package/modules/kpi.min.cjs +2 -2
  188. package/modules/kpi.min.js +2 -2
  189. package/modules/layout.d.ts +1 -1
  190. package/modules/layout.esm.min.js +2 -2
  191. package/modules/layout.min.cjs +2 -2
  192. package/modules/layout.min.js +2 -2
  193. package/modules/leaflet.d.ts +1 -1
  194. package/modules/leaflet.esm.min.js +2 -2
  195. package/modules/leaflet.min.cjs +2 -2
  196. package/modules/leaflet.min.js +2 -2
  197. package/modules/list.d.ts +1 -1
  198. package/modules/list.esm.min.js +2 -2
  199. package/modules/list.min.cjs +2 -2
  200. package/modules/list.min.js +2 -2
  201. package/modules/mock-socket.d.ts +1 -1
  202. package/modules/mock-socket.esm.min.js +1 -1
  203. package/modules/mock-socket.min.cjs +1 -1
  204. package/modules/mock-socket.min.js +1 -1
  205. package/modules/presets/antd5.css +23 -0
  206. package/modules/presets/bootstrap5.css +46 -5
  207. package/modules/presets/fluent2.css +31 -4
  208. package/modules/presets/material3.css +53 -5
  209. package/modules/presets.d.ts +1 -1
  210. package/modules/presets.esm.min.js +2 -2
  211. package/modules/presets.min.cjs +2 -2
  212. package/modules/presets.min.js +2 -2
  213. package/modules/react.d.ts +1 -1
  214. package/modules/react.esm.min.js +2 -2
  215. package/modules/react.min.cjs +2 -2
  216. package/modules/react.min.js +2 -2
  217. package/modules/svelte.d.ts +1 -1
  218. package/modules/svelte.esm.min.js +2 -2
  219. package/modules/svelte.min.cjs +2 -2
  220. package/modules/svelte.min.js +2 -2
  221. package/modules/tabs.d.ts +1 -1
  222. package/modules/tabs.esm.min.js +2 -2
  223. package/modules/tabs.min.cjs +2 -2
  224. package/modules/tabs.min.js +2 -2
  225. package/modules/vue.d.ts +1 -1
  226. package/modules/vue.esm.min.js +2 -2
  227. package/modules/vue.min.cjs +2 -2
  228. package/modules/vue.min.js +2 -2
  229. package/modules/webcomponent.d.ts +1 -1
  230. package/modules/webcomponent.esm.min.js +3 -3
  231. package/modules/webcomponent.min.cjs +3 -3
  232. package/modules/webcomponent.min.js +3 -3
  233. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, svelte module
2
+ * Lattice Grid 1.81.0, svelte module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(be){"use strict";var le=Object.create(null),fe=Object.create(null);function te(r,U){le[r]=U}function de(r){var U=fe[r];if(U)return U;var Q=Object.create(null);fe[r]=Q;var q=le[r];if(!q)throw new Error("[lattice] missing module: "+r);return q(Q,de),Q}te("packages/core/src/internal/util.js",function(r,U){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return O}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return F}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return l}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const Q="1.80.0";async function q(){return Q}const T="1.80.0",D=new Set,K=2e3;function Y(e){if(D.add(e),D.size>K){const t=D.values().next().value;t!==void 0&&D.delete(t)}}const X=[],k=500;function d(e,t,n){X.push({key:e,level:t,message:n.map(f=>typeof f=="string"?f:a(f)).join(" "),at:Date.now()}),X.length>k&&X.shift()}function a(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 p(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(D.has(e))return;Y(e);const n=p(t);d(e,"warn",n),console.warn("[lattice]",...n)}function N(e,...t){if(D.has(e))return;Y(e);const n=p(t);d(e,"info",n),console.info("[lattice]",...n)}function O(){D.clear(),X.length=0}function V(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function L(e,t){e||V(t)}const x=(()=>{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 $(e){return typeof e=="function"}function F(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 j=new Map;function z(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),f=n.length;t=Z=>{let J=Z;for(let H=0;H<f;H++){if(J==null)return;J=J[n[H]]}return J}}return j.set(e,t),t}const A=new Map;function S(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=(n,f)=>{n!=null&&(n[e]=f)};else{const n=e.split("."),f=n.length-1;t=(Z,J)=>{let H=Z;for(let _=0;_<f;_++){if(H==null)return;const se=n[_];H[se]==null&&(H[se]={}),H=H[se]}H!=null&&(H[n[f]]=J)}}return A.set(e,t),t}function B(e,t){return z(t)(e)}function ie(e,t,n){S(t)(e,n)}function ee(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 ne={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ce(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ae(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 ue(e){return e==null?[]:Array.isArray(e)?e:[e]}const o=Object.freeze(new Set(["__proto__","constructor","prototype"]));function b(e,t){if(!M(e))return M(t)?{...t}:t;if(!M(t))return t===void 0?e:t;const n={...e};for(const f of Object.keys(t)){if(o.has(f))continue;const Z=t[f];Z!==void 0&&(n[f]=M(Z)&&M(n[f])?b(n[f],Z):Z)}return n}function l(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 u{#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 f=n.get(t);return n.delete(t),n.set(t,f),f}peek(t){return this.#e.get(t)}set(t,n){const f=this.#e;return f.has(t)&&f.delete(t),f.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,f=t.get(n);t.delete(n),this.#t&&this.#t(f,n)}}}const c=new Map;function m(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let f=c.get(n);return f||(f=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,f)),f}function s(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),f=String(t);return n<f?-1:n>f?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const P=typeof requestAnimationFrame=="function";function I(e){return P?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(P?cancelAnimationFrame(e):clearTimeout(e))}function g(e){let t=null,n=null;const f=()=>{t=null;const J=n;n=null,e(...J||[])},Z=(...J)=>{n=J,t===null&&(t=I(f))};return Z.cancel=()=>{h(t),t=null,n=null},Z.flush=()=>{t!==null&&(h(t),f())},Z}function v(e,t){let n=null,f=null;const Z=()=>{if(n=null,f===null)return;const _=f;f=null,e(..._),J()},J=()=>{n=setTimeout(Z,t),typeof n?.unref=="function"&&n.unref()},H=(..._)=>{n===null?(e(..._),J()):(f=_,clearTimeout(n),J())};return H.flush=()=>{if(n!==null&&clearTimeout(n),n=null,f===null)return;const _=f;f=null,e(..._)},H.cancel=()=>{n!==null&&clearTimeout(n),n=null,f=null},H.pending=()=>n!==null||f!==null,H}function y(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let E=0;function G(e="l"){return`${e}${(++E).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,U){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return a}});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"]),q=Object.freeze({sort:(i,p)=>i.sort.set(p||[]),filters:(i,p)=>i.filters.set(p||null),quickFilter:(i,p)=>{if(p&&typeof p=="object"){i.filters.quick(p.text||"",{mode:p.mode});return}i.filters.quick(typeof p=="string"?p:"")},selectedKeys:(i,p)=>i.selection.set(Array.isArray(p)?p:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function D(i){return String(i).replace(/:/g,"-")}const K=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Y(i){return Object.hasOwn(K,i)?K[i]:i}const X=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function k(i){return Object.hasOwn(X,i)}function d(i){const p={},R={},N={};for(const[O,V]of Object.entries(i||{})){if(k(O)){N[O]=V;continue}if(Object.hasOwn(q,O)){R[O]=V;continue}p[O]=V}return{config:p,imperative:R,handlers:N}}function a(i){const p=i.createGrid;if(typeof p!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=d(i.props||{}),N=p(i.element,{...R.config});let O=R.handlers,V=R.config,L={};const x=F=>{if(!F||typeof F.type!="string")return;const C=O[T(F.type)];typeof C=="function"&&C(F)},M=N.on("*",x);for(const[F,C]of Object.entries(R.imperative))C!==void 0&&(q[F](N,C),L[F]=C);let $=!1;return{grid:N,update(F){if($)return;const C=d(F||{});O=C.handlers;const W={};for(const[j,z]of Object.entries(C.config))Object.is(V[j],z)||(W[j]=z);for(const j of Object.keys(V))Object.hasOwn(C.config,j)||(W[j]=void 0);Object.keys(W).length&&N.setAll(W),V=C.config;for(const[j,z]of Object.entries(q)){const A=C.imperative[j];Object.is(L[j],A)||A===void 0&&!Object.hasOwn(L,j)||(z(N,A),L[j]=A)}},destroy(){$||($=!0,M(),N.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,U){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return d}});const q=U("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),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"])}),D=Object.freeze({kpi:Object.freeze({rows:(a,i)=>a.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(a,i)=>a.setRows(Array.isArray(i)?i:[]),quickFilter:(a,i)=>a.setQuickFilter(typeof i=="string"?i:""),sprint:(a,i)=>a.setSprint(i),epic:(a,i)=>a.setEpic(i),loading:(a,i)=>a.setLoading(!!i),error:(a,i)=>a.setError(i??null)}),gantt:Object.freeze({tasks:(a,i)=>a.setTasks(Array.isArray(i)?i:[]),dependencies:(a,i)=>a.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(a,i)=>{typeof i=="string"&&a.activate(i)}}),chart:Object.freeze({}),layout:Object.freeze({})}),K=Object.freeze({chart:"update"});function Y(a){return`on${String(a).split(":").map(p=>p.charAt(0).toUpperCase()+p.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(T).map(([a,i])=>[a,Object.freeze(Object.fromEntries(i.map(p=>[Y(p),p])))])));function k(a,i){const p=X[a]||{},R=D[a]||{},N={},O={},V={};for(const[L,x]of Object.entries(i||{})){if(Object.hasOwn(p,L)){V[L]=x;continue}if(Object.hasOwn(R,L)){O[L]=x,N[L]=x;continue}N[L]=x}return{config:N,live:O,handlers:V}}function d(a){const i=String(a.viewer),p=a.mount,R=a.name||i;if(typeof p!="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 N=k(i,a.props||{}),O=p(a.element,{...N.config});if(!O||typeof O!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let V=N.handlers,L=N.config;const x={...N.live},M=[];if(typeof O.on=="function")for(const W of T[i]||[]){const j=Y(W),z=O.on(W,A=>{const S=V[j];typeof S=="function"&&S(A)});typeof z=="function"&&M.push(z)}const $=K[i],F=D[i]||{};let C=!1;return{instance:O,update(W){if(C)return;const j=k(i,W||{});V=j.handlers;const z={};for(const[S,B]of Object.entries(j.config))Object.is(L[S],B)||(z[S]=B);if(L=j.config,!Object.keys(z).length)return;const A=[];for(const S of Object.keys(z)){const B=F[S];if(B){B(O,z[S]),x[S]=z[S];continue}$&&typeof O[$]=="function"||A.push(S)}if($&&typeof O[$]=="function"){const S={};for(const B of Object.keys(z))F[B]||(S[B]=z[B]);Object.keys(S).length&&O[$](S)}A.length&&q(`react.viewer.${i}.mountOnly.${A.join(".")}`,`${R}: ${A.map(S=>`\`${S}\``).join(", ")} changed, but ${R} takes ${A.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 O.destroy=="function"&&O.destroy()}}}}}),te("packages/modules/presets/index.js",function(r,U){"use strict";Object.defineProperty(r,"themeFromMui",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return X}});const q=U("packages/core/src/internal/util.js").warnOnce;function T(k,d){if(typeof k!="string")return k;const a=k.trim().match(/^#([0-9a-f]{6})$/i);if(!a)return k;const i=a[1],p=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),N=parseInt(i.slice(4,6),16);return`rgba(${p}, ${R}, ${N}, ${d})`}function D(k){const d=k.palette,a=d.mode==="dark";return{"--lattice-background":d.background.default,"--lattice-surface":d.background.paper,"--lattice-surface-alt":a?"#2a2a2a":d.grey[50],"--lattice-border-color":d.divider,"--lattice-border-strong":a?d.grey[600]:d.grey[400],"--lattice-foreground":d.text.primary,"--lattice-foreground-muted":d.text.secondary,"--lattice-header-foreground":d.text.primary,"--lattice-accent":d.primary.main,"--lattice-accent-contrast":d.primary.contrastText,"--lattice-link-color":d.primary.main,"--lattice-selected-background":T(d.primary.main,.12),"--lattice-hovered-background":T(d.text.primary,.06),"--lattice-focus-color":d.primary.main,"--lattice-variant-danger-solid":d.error.main,"--lattice-variant-danger-fill":T(d.error.main,.12),"--lattice-variant-warning-solid":d.warning.main,"--lattice-variant-warning-fill":T(d.warning.main,.12),"--lattice-variant-success-solid":d.success.main,"--lattice-variant-success-fill":T(d.success.main,.12),"--lattice-variant-info-solid":d.info.main,"--lattice-variant-info-fill":T(d.info.main,.12),"--lattice-radius":`${k.shape.borderRadius}px`,"--lattice-font-family":k.typography.fontFamily,"--lattice-font-size":`${k.typography.body2.fontSize}`,"--lattice-header-font-weight":String(k.typography.fontWeightMedium)}}function K(k){return`.lattice {
6
+ (function(be){"use strict";var le=Object.create(null),fe=Object.create(null);function te(r,U){le[r]=U}function de(r){var U=fe[r];if(U)return U;var Q=Object.create(null);fe[r]=Q;var q=le[r];if(!q)throw new Error("[lattice] missing module: "+r);return q(Q,de),Q}te("packages/core/src/internal/util.js",function(r,U){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return O}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return F}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return l}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const Q="1.81.0";async function q(){return Q}const T="1.81.0",D=new Set,K=2e3;function Y(e){if(D.add(e),D.size>K){const t=D.values().next().value;t!==void 0&&D.delete(t)}}const X=[],k=500;function d(e,t,n){X.push({key:e,level:t,message:n.map(f=>typeof f=="string"?f:a(f)).join(" "),at:Date.now()}),X.length>k&&X.shift()}function a(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 p(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(D.has(e))return;Y(e);const n=p(t);d(e,"warn",n),console.warn("[lattice]",...n)}function N(e,...t){if(D.has(e))return;Y(e);const n=p(t);d(e,"info",n),console.info("[lattice]",...n)}function O(){D.clear(),X.length=0}function V(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function L(e,t){e||V(t)}const x=(()=>{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 $(e){return typeof e=="function"}function F(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 j=new Map;function z(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),f=n.length;t=Z=>{let J=Z;for(let H=0;H<f;H++){if(J==null)return;J=J[n[H]]}return J}}return j.set(e,t),t}const A=new Map;function S(e){let t=A.get(e);if(t)return t;if(!e.includes("."))t=(n,f)=>{n!=null&&(n[e]=f)};else{const n=e.split("."),f=n.length-1;t=(Z,J)=>{let H=Z;for(let _=0;_<f;_++){if(H==null)return;const se=n[_];H[se]==null&&(H[se]={}),H=H[se]}H!=null&&(H[n[f]]=J)}}return A.set(e,t),t}function B(e,t){return z(t)(e)}function ie(e,t,n){S(t)(e,n)}function ee(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 ne={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ce(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ae(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 ue(e){return e==null?[]:Array.isArray(e)?e:[e]}const o=Object.freeze(new Set(["__proto__","constructor","prototype"]));function b(e,t){if(!M(e))return M(t)?{...t}:t;if(!M(t))return t===void 0?e:t;const n={...e};for(const f of Object.keys(t)){if(o.has(f))continue;const Z=t[f];Z!==void 0&&(n[f]=M(Z)&&M(n[f])?b(n[f],Z):Z)}return n}function l(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 u{#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 f=n.get(t);return n.delete(t),n.set(t,f),f}peek(t){return this.#e.get(t)}set(t,n){const f=this.#e;return f.has(t)&&f.delete(t),f.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,f=t.get(n);t.delete(n),this.#t&&this.#t(f,n)}}}const c=new Map;function m(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let f=c.get(n);return f||(f=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,f)),f}function s(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),f=String(t);return n<f?-1:n>f?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const P=typeof requestAnimationFrame=="function";function I(e){return P?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(P?cancelAnimationFrame(e):clearTimeout(e))}function g(e){let t=null,n=null;const f=()=>{t=null;const J=n;n=null,e(...J||[])},Z=(...J)=>{n=J,t===null&&(t=I(f))};return Z.cancel=()=>{h(t),t=null,n=null},Z.flush=()=>{t!==null&&(h(t),f())},Z}function v(e,t){let n=null,f=null;const Z=()=>{if(n=null,f===null)return;const _=f;f=null,e(..._),J()},J=()=>{n=setTimeout(Z,t),typeof n?.unref=="function"&&n.unref()},H=(..._)=>{n===null?(e(..._),J()):(f=_,clearTimeout(n),J())};return H.flush=()=>{if(n!==null&&clearTimeout(n),n=null,f===null)return;const _=f;f=null,e(..._)},H.cancel=()=>{n!==null&&clearTimeout(n),n=null,f=null},H.pending=()=>n!==null||f!==null,H}function y(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let E=0;function G(e="l"){return`${e}${(++E).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,U){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return a}});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"]),q=Object.freeze({sort:(i,p)=>i.sort.set(p||[]),filters:(i,p)=>i.filters.set(p||null),quickFilter:(i,p)=>{if(p&&typeof p=="object"){i.filters.quick(p.text||"",{mode:p.mode});return}i.filters.quick(typeof p=="string"?p:"")},selectedKeys:(i,p)=>i.selection.set(Array.isArray(p)?p:[])});function T(i){return`on${String(i).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function D(i){return String(i).replace(/:/g,"-")}const K=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Y(i){return Object.hasOwn(K,i)?K[i]:i}const X=Object.freeze(Object.fromEntries(Q.map(i=>[T(i),i])));function k(i){return Object.hasOwn(X,i)}function d(i){const p={},R={},N={};for(const[O,V]of Object.entries(i||{})){if(k(O)){N[O]=V;continue}if(Object.hasOwn(q,O)){R[O]=V;continue}p[O]=V}return{config:p,imperative:R,handlers:N}}function a(i){const p=i.createGrid;if(typeof p!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=d(i.props||{}),N=p(i.element,{...R.config});let O=R.handlers,V=R.config,L={};const x=F=>{if(!F||typeof F.type!="string")return;const C=O[T(F.type)];typeof C=="function"&&C(F)},M=N.on("*",x);for(const[F,C]of Object.entries(R.imperative))C!==void 0&&(q[F](N,C),L[F]=C);let $=!1;return{grid:N,update(F){if($)return;const C=d(F||{});O=C.handlers;const W={};for(const[j,z]of Object.entries(C.config))Object.is(V[j],z)||(W[j]=z);for(const j of Object.keys(V))Object.hasOwn(C.config,j)||(W[j]=void 0);Object.keys(W).length&&N.setAll(W),V=C.config;for(const[j,z]of Object.entries(q)){const A=C.imperative[j];Object.is(L[j],A)||A===void 0&&!Object.hasOwn(L,j)||(z(N,A),L[j]=A)}},destroy(){$||($=!0,M(),N.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,U){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return d}});const q=U("packages/core/src/internal/util.js").warnOnce,T=Object.freeze({kpi:Object.freeze(["tile:click","tile:dblclick","tile:contextmenu","node:toggle","change","tile:status"]),kanban:Object.freeze(["card:click","card:dblclick","card:contextmenu","card:move","card:reverted","card:confirmed","selection:changed","column:collapse","card:add","drag:start","drag:end","swimlane:collapse","swimlane:reorder","column:reorder","filter:changed","sprint:changed","epic:changed","card:expand","card:drill","card:edit","card:sla","beforeMove","beforeAdd","beforeEdit","beforeLaneReorder","beforeColumnReorder","beforeColumnChange","move:cancelled","add:cancelled","edit:cancelled","laneReorder:cancelled","columnReorder:cancelled","columnChange:cancelled"]),tabs:Object.freeze(["beforeTabChange","tab:changed","tabChange:cancelled"]),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"])}),D=Object.freeze({kpi:Object.freeze({rows:(a,i)=>a.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(a,i)=>a.setRows(Array.isArray(i)?i:[]),quickFilter:(a,i)=>a.setQuickFilter(typeof i=="string"?i:""),sprint:(a,i)=>a.setSprint(i),epic:(a,i)=>a.setEpic(i),loading:(a,i)=>a.setLoading(!!i),error:(a,i)=>a.setError(i??null)}),gantt:Object.freeze({tasks:(a,i)=>a.setTasks(Array.isArray(i)?i:[]),dependencies:(a,i)=>a.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(a,i)=>{typeof i=="string"&&a.activate(i)}}),chart:Object.freeze({}),layout:Object.freeze({})}),K=Object.freeze({chart:"update"});function Y(a){return`on${String(a).split(":").map(p=>p.charAt(0).toUpperCase()+p.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(T).map(([a,i])=>[a,Object.freeze(Object.fromEntries(i.map(p=>[Y(p),p])))])));function k(a,i){const p=X[a]||{},R=D[a]||{},N={},O={},V={};for(const[L,x]of Object.entries(i||{})){if(Object.hasOwn(p,L)){V[L]=x;continue}if(Object.hasOwn(R,L)){O[L]=x,N[L]=x;continue}N[L]=x}return{config:N,live:O,handlers:V}}function d(a){const i=String(a.viewer),p=a.mount,R=a.name||i;if(typeof p!="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 N=k(i,a.props||{}),O=p(a.element,{...N.config});if(!O||typeof O!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let V=N.handlers,L=N.config;const x={...N.live},M=[];if(typeof O.on=="function")for(const W of T[i]||[]){const j=Y(W),z=O.on(W,A=>{const S=V[j];typeof S=="function"&&S(A)});typeof z=="function"&&M.push(z)}const $=K[i],F=D[i]||{};let C=!1;return{instance:O,update(W){if(C)return;const j=k(i,W||{});V=j.handlers;const z={};for(const[S,B]of Object.entries(j.config))Object.is(L[S],B)||(z[S]=B);if(L=j.config,!Object.keys(z).length)return;const A=[];for(const S of Object.keys(z)){const B=F[S];if(B){B(O,z[S]),x[S]=z[S];continue}$&&typeof O[$]=="function"||A.push(S)}if($&&typeof O[$]=="function"){const S={};for(const B of Object.keys(z))F[B]||(S[B]=z[B]);Object.keys(S).length&&O[$](S)}A.length&&q(`react.viewer.${i}.mountOnly.${A.join(".")}`,`${R}: ${A.map(S=>`\`${S}\``).join(", ")} changed, but ${R} takes ${A.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 O.destroy=="function"&&O.destroy()}}}}}),te("packages/modules/presets/index.js",function(r,U){"use strict";Object.defineProperty(r,"themeFromMui",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return X}});const q=U("packages/core/src/internal/util.js").warnOnce;function T(k,d){if(typeof k!="string")return k;const a=k.trim().match(/^#([0-9a-f]{6})$/i);if(!a)return k;const i=a[1],p=parseInt(i.slice(0,2),16),R=parseInt(i.slice(2,4),16),N=parseInt(i.slice(4,6),16);return`rgba(${p}, ${R}, ${N}, ${d})`}function D(k){const d=k.palette,a=d.mode==="dark";return{"--lattice-background":d.background.default,"--lattice-surface":d.background.paper,"--lattice-surface-alt":a?"#2a2a2a":d.grey[50],"--lattice-border-color":d.divider,"--lattice-border-strong":a?d.grey[600]:d.grey[400],"--lattice-foreground":d.text.primary,"--lattice-foreground-muted":d.text.secondary,"--lattice-header-foreground":d.text.primary,"--lattice-accent":d.primary.main,"--lattice-accent-contrast":d.primary.contrastText,"--lattice-link-color":d.primary.main,"--lattice-selected-background":T(d.primary.main,.12),"--lattice-hovered-background":T(d.text.primary,.06),"--lattice-focus-color":d.primary.main,"--lattice-variant-danger-solid":d.error.main,"--lattice-variant-danger-fill":T(d.error.main,.12),"--lattice-variant-warning-solid":d.warning.main,"--lattice-variant-warning-fill":T(d.warning.main,.12),"--lattice-variant-success-solid":d.success.main,"--lattice-variant-success-fill":T(d.success.main,.12),"--lattice-variant-info-solid":d.info.main,"--lattice-variant-info-fill":T(d.info.main,.12),"--lattice-radius":`${k.shape.borderRadius}px`,"--lattice-font-family":k.typography.fontFamily,"--lattice-font-size":`${k.typography.body2.fontSize}`,"--lattice-header-font-weight":String(k.typography.fontWeightMedium)}}function K(k){return`.lattice {
7
7
  ${Object.entries(k).map(([a,i])=>` ${a}: ${i};`).join(`
8
8
  `)}
9
9
  }
package/modules/tabs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, tabs module type declarations
2
+ * Lattice Grid 1.81.0, tabs module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, tabs module
2
+ * Lattice Grid 1.81.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var $e=Object.create(null),Oe=Object.create(null);function re(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}re("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return be}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return ve}});const N="1.80.0";async function D(){return N}const y="1.80.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function be(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function ge(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function he(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ee(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?ee(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function pe(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function me(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function te(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ye(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function ve(n="l"){return`${n}${(++de).toString(36)}`}}),re("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ var $e=Object.create(null),Oe=Object.create(null);function re(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}re("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return be}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return ve}});const N="1.81.0";async function D(){return N}const y="1.81.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function be(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function ge(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function he(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ee(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?ee(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function pe(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function me(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function te(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ye(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function ve(n="l"){return`${n}${(++de).toString(36)}`}}),re("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
9
9
  font-size:var(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, tabs module
2
+ * Lattice Grid 1.81.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.80.0";async function D(){return N}const y="1.80.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.81.0";async function D(){return N}const y="1.81.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
9
9
  font-size:var(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, tabs module
2
+ * Lattice Grid 1.81.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.80.0";async function D(){return N}const y="1.80.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
6
+ (function(Ee){"use strict";var $e=Object.create(null),Oe=Object.create(null);function ee(u,H){$e[u]=H}function je(u){var H=Oe[u];if(H)return H;var N=Object.create(null);Oe[u]=N;var D=$e[u];if(!D)throw new Error("[lattice] missing module: "+u);return D(N,je),N}ee("packages/core/src/internal/util.js",function(u,H){"use strict";Object.defineProperty(u,"VERSION",{enumerable:!0,get:function(){return y}}),Object.defineProperty(u,"reportedWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"infoOnce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(u,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"fail",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"invariant",{enumerable:!0,get:function(){return J}}),Object.defineProperty(u,"DEV",{enumerable:!0,get:function(){return s}}),Object.defineProperty(u,"isObject",{enumerable:!0,get:function(){return l}}),Object.defineProperty(u,"isFunction",{enumerable:!0,get:function(){return w}}),Object.defineProperty(u,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(u,"isBlank",{enumerable:!0,get:function(){return j}}),Object.defineProperty(u,"isCtor",{enumerable:!0,get:function(){return b}}),Object.defineProperty(u,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(u,"pathSetter",{enumerable:!0,get:function(){return W}}),Object.defineProperty(u,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(u,"setPath",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(u,"humanise",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(u,"escapeHtml",{enumerable:!0,get:function(){return _}}),Object.defineProperty(u,"titleCase",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(u,"expand",{enumerable:!0,get:function(){return he}}),Object.defineProperty(u,"toArray",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(u,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(u,"mergeRow",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(u,"Lru",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(u,"collator",{enumerable:!0,get:function(){return me}}),Object.defineProperty(u,"defaultCompare",{enumerable:!0,get:function(){return se}}),Object.defineProperty(u,"now",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(u,"nextFrame",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(u,"cancelFrame",{enumerable:!0,get:function(){return X}}),Object.defineProperty(u,"frameBatched",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(u,"settleDebounce",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(u,"whenIdle",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(u,"uid",{enumerable:!0,get:function(){return we}});const N="1.81.0";async function D(){return N}const y="1.81.0",i=new Set,$=2e3;function P(n){if(i.add(n),i.size>$){const r=i.values().next().value;r!==void 0&&i.delete(r)}}const I=[],M=500;function C(n,r,c){I.push({key:n,level:r,message:c.map(g=>typeof g=="string"?g:O(g)).join(" "),at:Date.now()}),I.length>M&&I.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function E(){return I.map(n=>({...n}))}function v(n){if(n.length===0||typeof n[0]!="string")return n;const r=n[0].replace(/^\[lattice\]\s*/,"");return r===n[0]?n:[r,...n.slice(1)]}function k(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"warn",c),console.warn("[lattice]",...c)}function F(n,...r){if(i.has(n))return;P(n);const c=v(r);C(n,"info",c),console.info("[lattice]",...c)}function V(){i.clear(),I.length=0}function z(n,r){const c=new Error(`[lattice] ${n}`);throw r!==void 0&&(c.cause=r),c}function J(n,r){n||z(r)}const s=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function l(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function w(n){return typeof n=="function"}function d(n){return n==null}function j(n){return n==null||n===""}function b(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const p=new Map;function A(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=c=>c?.[n];else{const c=n.split("."),g=c.length;r=L=>{let R=L;for(let B=0;B<g;B++){if(R==null)return;R=R[c[B]]}return R}}return p.set(n,r),r}const G=new Map;function W(n){let r=G.get(n);if(r)return r;if(!n.includes("."))r=(c,g)=>{c!=null&&(c[n]=g)};else{const c=n.split("."),g=c.length-1;r=(L,R)=>{let B=L;for(let U=0;U<g;U++){if(B==null)return;const e=c[U];B[e]==null&&(B[e]={}),B=B[e]}B!=null&&(B[c[g]]=R)}}return G.set(n,r),r}function Z(n,r){return A(r)(n)}function Q(n,r,c){W(r)(n,c)}function Y(n){return n?(n.includes(".")?n.slice(n.lastIndexOf(".")+1):n).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,c=>c.toUpperCase()):""}const x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,c=>x[c]):r}function ge(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function he(n,r,c){if(n!==void 0)return n===!0?{enabled:!0,...c}:n===!1?{enabled:!1}:l(n)?n:{[r]:n,enabled:!0}}function pe(n){return n==null?[]:Array.isArray(n)?n:[n]}const ie=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!l(n))return l(r)?{...r}:r;if(!l(r))return r===void 0?n:r;const c={...n};for(const g of Object.keys(r)){if(ie.has(g))continue;const L=r[g];L!==void 0&&(c[g]=l(L)&&l(c[g])?te(c[g],L):L)}return c}function oe(n,r){if(!l(n)||!l(r)||n===r)return r;const c=Object.create(Object.getPrototypeOf(n));return Object.assign(c,n,r),c}class ae{#t;#e=new Map;#n;constructor(r=256,c=null){this.#t=r,this.#n=c}get size(){return this.#e.size}get max(){return this.#t}set max(r){this.#t=r,this.#r()}has(r){return this.#e.has(r)}get(r){const c=this.#e;if(!c.has(r))return;const g=c.get(r);return c.delete(r),c.set(r,g),g}peek(r){return this.#e.get(r)}set(r,c){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,c),this.#r(),c}delete(r){const c=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(c,r),c}clear(){if(this.#n)for(const[r,c]of this.#e)this.#n(c,r);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const r=this.#e;for(;r.size>this.#t;){const c=r.keys().next().value,g=r.get(c);r.delete(c),this.#n&&this.#n(g,c)}}}const ce=new Map;function me(n,r){const c=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(c);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(c,g)),g}function se(n,r){if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;if(typeof n=="number"&&typeof r=="number")return Number.isNaN(n)?Number.isNaN(r)?0:1:Number.isNaN(r)||n<r?-1:n>r?1:0;const c=String(n),g=String(r);return c<g?-1:c>g?1:0}function ue(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const le=typeof requestAnimationFrame=="function";function fe(n){return le?requestAnimationFrame(n):setTimeout(()=>n(ue()),16)}function X(n){n!=null&&(le?cancelAnimationFrame(n):clearTimeout(n))}function ye(n){let r=null,c=null;const g=()=>{r=null;const R=c;c=null,n(...R||[])},L=(...R)=>{c=R,r===null&&(r=fe(g))};return L.cancel=()=>{X(r),r=null,c=null},L.flush=()=>{r!==null&&(X(r),g())},L}function ne(n,r){let c=null,g=null;const L=()=>{if(c=null,g===null)return;const U=g;g=null,n(...U),R()},R=()=>{c=setTimeout(L,r),typeof c?.unref=="function"&&c.unref()},B=(...U)=>{c===null?(n(...U),R()):(g=U,clearTimeout(c),R())};return B.flush=()=>{if(c!==null&&clearTimeout(c),c=null,g===null)return;const U=g;g=null,n(...U)},B.cancel=()=>{c!==null&&clearTimeout(c),c=null,g=null},B.pending=()=>c!==null||g!==null,B}function ve(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let de=0;function we(n="l"){return`${n}${(++de).toString(36)}`}}),ee("packages/modules/tabs/view.js",function(u,H){"use strict";Object.defineProperty(u,"NS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(u,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(u,"injectStyles",{enumerable:!0,get:function(){return P}}),Object.defineProperty(u,"renderShell",{enumerable:!0,get:function(){return I}}),Object.defineProperty(u,"paintBadge",{enumerable:!0,get:function(){return E}}),Object.defineProperty(u,"setRoving",{enumerable:!0,get:function(){return v}}),Object.defineProperty(u,"wireKeyboard",{enumerable:!0,get:function(){return k}}),Object.defineProperty(u,"paintActive",{enumerable:!0,get:function(){return V}}),Object.defineProperty(u,"revealPanel",{enumerable:!0,get:function(){return z}}),Object.defineProperty(u,"announce",{enumerable:!0,get:function(){return J}});const N=H("packages/core/src/internal/util.js"),D=N.isFunction,y=N.warnOnce,i="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);function P(s){if(!s||s.getElementById&&s.getElementById(`${i}-styles`))return;const l=s.createElement("style");l.id=`${i}-styles`,l.setAttribute("id",`${i}-styles`),l.textContent=`
7
7
  :where(.${i}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${i}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
9
9
  font-size:var(--${i}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
package/modules/vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, vue module type declarations
2
+ * Lattice Grid 1.81.0, vue module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, vue module
2
+ * Lattice Grid 1.81.0, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var we=Object.create(null),Oe=Object.create(null);function ue(o,Y){we[o]=Y}function ve(o){var Y=Oe[o];if(Y)return Y;var X=Object.create(null);Oe[o]=X;var x=we[o];if(!x)throw new Error("[lattice] missing module: "+o);return x(X,ve),X}ue("packages/core/src/internal/util.js",function(o,Y){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return k}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return M}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return $}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return d}});const X="1.80.0";async function x(){return X}const N="1.80.0",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 s(e,t,n){_.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).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 i(){return _.map(e=>({...e}))}function f(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 C(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),_.length=0}function k(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function M(e,t){e||k(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 ee(e){return typeof e=="function"}function I(e){return e==null}function R(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 G=new Map;function K(e){let t=G.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=v=>{let O=v;for(let T=0;T<a;T++){if(O==null)return;O=O[n[T]]}return O}}return G.set(e,t),t}const H=new Map;function A(e){let t=H.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=(v,O)=>{let T=v;for(let g=0;g<a;g++){if(T==null)return;const m=n[g];T[m]==null&&(T[m]={}),T=T[m]}T!=null&&(T[n[a]]=O)}}return H.set(e,t),t}function J(e,t){return K(t)(e)}function ce(e,t,n){A(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}:$(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const pe=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(pe.has(a))continue;const v=t[a];v!==void 0&&(n[a]=$(v)&&$(n[a])?ae(n[a],v):v)}return n}function ye(e,t){if(!$(e)||!$(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class ge{#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 r=new Map;function c(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=r.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),r.set(n,a)),a}function l(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 y(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const h=typeof requestAnimationFrame=="function";function p(e){return h?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function P(e){e!=null&&(h?cancelAnimationFrame(e):clearTimeout(e))}function ne(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=p(a))};return v.cancel=()=>{P(t),t=null,n=null},v.flush=()=>{t!==null&&(P(t),a())},v}function F(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const g=a;a=null,e(...g),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},T=(...g)=>{n===null?(e(...g),O()):(a=g,clearTimeout(n),O())};return T.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const g=a;a=null,e(...g)},T.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},T.pending=()=>n!==null||a!==null,T}function b(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function d(e="l"){return`${e}${(++w).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(o,Y){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(o,"handlerName",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"partition",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"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:(i,f)=>i.sort.set(f||[]),filters:(i,f)=>i.filters.set(f||null),quickFilter:(i,f)=>{if(f&&typeof f=="object"){i.filters.quick(f.text||"",{mode:f.mode});return}i.filters.quick(typeof f=="string"?f:"")},selectedKeys:(i,f)=>i.selection.set(Array.isArray(f)?f:[])});function N(i){return`on${String(i).split(":").map(C=>C.charAt(0).toUpperCase()+C.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Z,i)?Z[i]:i}const _=Object.freeze(Object.fromEntries(X.map(i=>[N(i),i])));function L(i){return Object.hasOwn(_,i)}function s(i){const f={},C={},E={};for(const[j,k]of Object.entries(i||{})){if(L(j)){E[j]=k;continue}if(Object.hasOwn(x,j)){C[j]=k;continue}f[j]=k}return{config:f,imperative:C,handlers:E}}function u(i){const f=i.createGrid;if(typeof f!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const C=s(i.props||{}),E=f(i.element,{...C.config});let j=C.handlers,k=C.config,M={};const B=I=>{if(!I||typeof I.type!="string")return;const R=j[N(I.type)];typeof R=="function"&&R(I)},$=E.on("*",B);for(const[I,R]of Object.entries(C.imperative))R!==void 0&&(x[I](E,R),M[I]=R);let ee=!1;return{grid:E,update(I){if(ee)return;const R=s(I||{});j=R.handlers;const W={};for(const[G,K]of Object.entries(R.config))Object.is(k[G],K)||(W[G]=K);for(const G of Object.keys(k))Object.hasOwn(R.config,G)||(W[G]=void 0);Object.keys(W).length&&E.setAll(W),k=R.config;for(const[G,K]of Object.entries(x)){const H=R.imperative[G];Object.is(M[G],H)||H===void 0&&!Object.hasOwn(M,G)||(K(E,H),M[G]=H)}},destroy(){ee||(ee=!0,$(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(o,Y){"use strict";Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return s}});const x=Y("packages/core/src/internal/util.js").warnOnce,N=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"]),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"])}),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)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(N).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(f=>[z(f),f])))])));function L(u,i){const f=_[u]||{},C=q[u]||{},E={},j={},k={};for(const[M,B]of Object.entries(i||{})){if(Object.hasOwn(f,M)){k[M]=B;continue}if(Object.hasOwn(C,M)){j[M]=B,E[M]=B;continue}E[M]=B}return{config:E,live:j,handlers:k}}function s(u){const i=String(u.viewer),f=u.mount,C=u.name||i;if(typeof f!="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 E=L(i,u.props||{}),j=f(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${C} factory returned no instance; nothing can be driven.`);let k=E.handlers,M=E.config;const B={...E.live},$=[];if(typeof j.on=="function")for(const W of N[i]||[]){const G=z(W),K=j.on(W,H=>{const A=k[G];typeof A=="function"&&A(H)});typeof K=="function"&&$.push(K)}const ee=Z[i],I=q[i]||{};let R=!1;return{instance:j,update(W){if(R)return;const G=L(i,W||{});k=G.handlers;const K={};for(const[A,J]of Object.entries(G.config))Object.is(M[A],J)||(K[A]=J);if(M=G.config,!Object.keys(K).length)return;const H=[];for(const A of Object.keys(K)){const J=I[A];if(J){J(j,K[A]),B[A]=K[A];continue}ee&&typeof j[ee]=="function"||H.push(A)}if(ee&&typeof j[ee]=="function"){const A={};for(const J of Object.keys(K))I[J]||(A[J]=K[J]);Object.keys(A).length&&j[ee](A)}H.length&&x(`react.viewer.${i}.mountOnly.${H.join(".")}`,`${C}: ${H.map(A=>`\`${A}\``).join(", ")} changed, but ${C} 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(!R){R=!0;for(const W of $)try{W()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ue("packages/modules/presets/index.js",function(o,Y){"use strict";Object.defineProperty(o,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return _}});const x=Y("packages/core/src/internal/util.js").warnOnce;function N(L,s){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const i=u[1],f=parseInt(i.slice(0,2),16),C=parseInt(i.slice(2,4),16),E=parseInt(i.slice(4,6),16);return`rgba(${f}, ${C}, ${E}, ${s})`}function q(L){const s=L.palette,u=s.mode==="dark";return{"--lattice-background":s.background.default,"--lattice-surface":s.background.paper,"--lattice-surface-alt":u?"#2a2a2a":s.grey[50],"--lattice-border-color":s.divider,"--lattice-border-strong":u?s.grey[600]:s.grey[400],"--lattice-foreground":s.text.primary,"--lattice-foreground-muted":s.text.secondary,"--lattice-header-foreground":s.text.primary,"--lattice-accent":s.primary.main,"--lattice-accent-contrast":s.primary.contrastText,"--lattice-link-color":s.primary.main,"--lattice-selected-background":N(s.primary.main,.12),"--lattice-hovered-background":N(s.text.primary,.06),"--lattice-focus-color":s.primary.main,"--lattice-variant-danger-solid":s.error.main,"--lattice-variant-danger-fill":N(s.error.main,.12),"--lattice-variant-warning-solid":s.warning.main,"--lattice-variant-warning-fill":N(s.warning.main,.12),"--lattice-variant-success-solid":s.success.main,"--lattice-variant-success-fill":N(s.success.main,.12),"--lattice-variant-info-solid":s.info.main,"--lattice-variant-info-fill":N(s.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 we=Object.create(null),Oe=Object.create(null);function ue(o,Y){we[o]=Y}function ve(o){var Y=Oe[o];if(Y)return Y;var X=Object.create(null);Oe[o]=X;var x=we[o];if(!x)throw new Error("[lattice] missing module: "+o);return x(X,ve),X}ue("packages/core/src/internal/util.js",function(o,Y){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return k}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return M}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return $}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return me}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return F}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return d}});const X="1.81.0";async function x(){return X}const N="1.81.0",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 s(e,t,n){_.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:u(a)).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 i(){return _.map(e=>({...e}))}function f(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 C(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"warn",n),console.warn("[lattice]",...n)}function E(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),_.length=0}function k(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function M(e,t){e||k(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 ee(e){return typeof e=="function"}function I(e){return e==null}function R(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 G=new Map;function K(e){let t=G.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=v=>{let O=v;for(let T=0;T<a;T++){if(O==null)return;O=O[n[T]]}return O}}return G.set(e,t),t}const H=new Map;function A(e){let t=H.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=(v,O)=>{let T=v;for(let g=0;g<a;g++){if(T==null)return;const m=n[g];T[m]==null&&(T[m]={}),T=T[m]}T!=null&&(T[n[a]]=O)}}return H.set(e,t),t}function J(e,t){return K(t)(e)}function ce(e,t,n){A(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}:$(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const pe=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(pe.has(a))continue;const v=t[a];v!==void 0&&(n[a]=$(v)&&$(n[a])?ae(n[a],v):v)}return n}function ye(e,t){if(!$(e)||!$(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class ge{#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 r=new Map;function c(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=r.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),r.set(n,a)),a}function l(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 y(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const h=typeof requestAnimationFrame=="function";function p(e){return h?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function P(e){e!=null&&(h?cancelAnimationFrame(e):clearTimeout(e))}function ne(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=p(a))};return v.cancel=()=>{P(t),t=null,n=null},v.flush=()=>{t!==null&&(P(t),a())},v}function F(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const g=a;a=null,e(...g),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},T=(...g)=>{n===null?(e(...g),O()):(a=g,clearTimeout(n),O())};return T.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const g=a;a=null,e(...g)},T.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},T.pending=()=>n!==null||a!==null,T}function b(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function d(e="l"){return`${e}${(++w).toString(36)}`}}),ue("packages/modules/shared/adapter.js",function(o,Y){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return X}}),Object.defineProperty(o,"handlerName",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"aliasConfigKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"isHandlerProp",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"partition",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"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:(i,f)=>i.sort.set(f||[]),filters:(i,f)=>i.filters.set(f||null),quickFilter:(i,f)=>{if(f&&typeof f=="object"){i.filters.quick(f.text||"",{mode:f.mode});return}i.filters.quick(typeof f=="string"?f:"")},selectedKeys:(i,f)=>i.selection.set(Array.isArray(f)?f:[])});function N(i){return`on${String(i).split(":").map(C=>C.charAt(0).toUpperCase()+C.slice(1)).join("")}`}function q(i){return String(i).replace(/:/g,"-")}const Z=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function z(i){return Object.hasOwn(Z,i)?Z[i]:i}const _=Object.freeze(Object.fromEntries(X.map(i=>[N(i),i])));function L(i){return Object.hasOwn(_,i)}function s(i){const f={},C={},E={};for(const[j,k]of Object.entries(i||{})){if(L(j)){E[j]=k;continue}if(Object.hasOwn(x,j)){C[j]=k;continue}f[j]=k}return{config:f,imperative:C,handlers:E}}function u(i){const f=i.createGrid;if(typeof f!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const C=s(i.props||{}),E=f(i.element,{...C.config});let j=C.handlers,k=C.config,M={};const B=I=>{if(!I||typeof I.type!="string")return;const R=j[N(I.type)];typeof R=="function"&&R(I)},$=E.on("*",B);for(const[I,R]of Object.entries(C.imperative))R!==void 0&&(x[I](E,R),M[I]=R);let ee=!1;return{grid:E,update(I){if(ee)return;const R=s(I||{});j=R.handlers;const W={};for(const[G,K]of Object.entries(R.config))Object.is(k[G],K)||(W[G]=K);for(const G of Object.keys(k))Object.hasOwn(R.config,G)||(W[G]=void 0);Object.keys(W).length&&E.setAll(W),k=R.config;for(const[G,K]of Object.entries(x)){const H=R.imperative[G];Object.is(M[G],H)||H===void 0&&!Object.hasOwn(M,G)||(K(E,H),M[G]=H)}},destroy(){ee||(ee=!0,$(),E.destroy())}}}}),ue("packages/modules/react/viewers.js",function(o,Y){"use strict";Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"partitionViewerProps",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return s}});const x=Y("packages/core/src/internal/util.js").warnOnce,N=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"]),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"])}),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)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Z=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(N).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(f=>[z(f),f])))])));function L(u,i){const f=_[u]||{},C=q[u]||{},E={},j={},k={};for(const[M,B]of Object.entries(i||{})){if(Object.hasOwn(f,M)){k[M]=B;continue}if(Object.hasOwn(C,M)){j[M]=B,E[M]=B;continue}E[M]=B}return{config:E,live:j,handlers:k}}function s(u){const i=String(u.viewer),f=u.mount,C=u.name||i;if(typeof f!="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 E=L(i,u.props||{}),j=f(u.element,{...E.config});if(!j||typeof j!="object")throw new TypeError(`the ${C} factory returned no instance; nothing can be driven.`);let k=E.handlers,M=E.config;const B={...E.live},$=[];if(typeof j.on=="function")for(const W of N[i]||[]){const G=z(W),K=j.on(W,H=>{const A=k[G];typeof A=="function"&&A(H)});typeof K=="function"&&$.push(K)}const ee=Z[i],I=q[i]||{};let R=!1;return{instance:j,update(W){if(R)return;const G=L(i,W||{});k=G.handlers;const K={};for(const[A,J]of Object.entries(G.config))Object.is(M[A],J)||(K[A]=J);if(M=G.config,!Object.keys(K).length)return;const H=[];for(const A of Object.keys(K)){const J=I[A];if(J){J(j,K[A]),B[A]=K[A];continue}ee&&typeof j[ee]=="function"||H.push(A)}if(ee&&typeof j[ee]=="function"){const A={};for(const J of Object.keys(K))I[J]||(A[J]=K[J]);Object.keys(A).length&&j[ee](A)}H.length&&x(`react.viewer.${i}.mountOnly.${H.join(".")}`,`${C}: ${H.map(A=>`\`${A}\``).join(", ")} changed, but ${C} 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(!R){R=!0;for(const W of $)try{W()}catch{}$.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ue("packages/modules/presets/index.js",function(o,Y){"use strict";Object.defineProperty(o,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return _}});const x=Y("packages/core/src/internal/util.js").warnOnce;function N(L,s){if(typeof L!="string")return L;const u=L.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return L;const i=u[1],f=parseInt(i.slice(0,2),16),C=parseInt(i.slice(2,4),16),E=parseInt(i.slice(4,6),16);return`rgba(${f}, ${C}, ${E}, ${s})`}function q(L){const s=L.palette,u=s.mode==="dark";return{"--lattice-background":s.background.default,"--lattice-surface":s.background.paper,"--lattice-surface-alt":u?"#2a2a2a":s.grey[50],"--lattice-border-color":s.divider,"--lattice-border-strong":u?s.grey[600]:s.grey[400],"--lattice-foreground":s.text.primary,"--lattice-foreground-muted":s.text.secondary,"--lattice-header-foreground":s.text.primary,"--lattice-accent":s.primary.main,"--lattice-accent-contrast":s.primary.contrastText,"--lattice-link-color":s.primary.main,"--lattice-selected-background":N(s.primary.main,.12),"--lattice-hovered-background":N(s.text.primary,.06),"--lattice-focus-color":s.primary.main,"--lattice-variant-danger-solid":s.error.main,"--lattice-variant-danger-fill":N(s.error.main,.12),"--lattice-variant-warning-solid":s.warning.main,"--lattice-variant-warning-fill":N(s.warning.main,.12),"--lattice-variant-success-solid":s.success.main,"--lattice-variant-success-fill":N(s.success.main,.12),"--lattice-variant-info-solid":s.info.main,"--lattice-variant-info-fill":N(s.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,i])=>` ${u}: ${i};`).join(`
8
8
  `)}
9
9
  }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.80.0, vue module
2
+ * Lattice Grid 1.81.0, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(je){"use strict";var we=Object.create(null),Oe=Object.create(null);function ce(c,U){we[c]=U}function ve(c){var U=Oe[c];if(U)return U;var Q=Object.create(null);Oe[c]=Q;var X=we[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,ve),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 G}}),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 T}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return ie}}),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 be}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return p}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return d}});const Q="1.80.0";async function X(){return Q}const C="1.80.0",q=new Set,Y=2e3;function z(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 s(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 f(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 G(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function T(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function $(e,t){e||T(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function V(e){return e==null}function R(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 S=new Map;function K(e){let t=S.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=v=>{let O=v;for(let k=0;k<a;k++){if(O==null)return;O=O[n[k]]}return O}}return S.set(e,t),t}const W=new Map;function A(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=(v,O)=>{let k=v;for(let g=0;g<a;g++){if(k==null)return;const m=n[g];k[m]==null&&(k[m]={}),k=k[m]}k!=null&&(k[n[a]]=O)}}return W.set(e,t),t}function Z(e,t){return K(t)(e)}function ie(e,t,n){A(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const me=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(me.has(a))continue;const v=t[a];v!==void 0&&(n[a]=D(v)&&D(n[a])?ae(n[a],v):v)}return n}function ye(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class ge{#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 r=new Map;function o(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=r.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),r.set(n,a)),a}function l(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 y(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const h=typeof requestAnimationFrame=="function";function p(e){return h?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function E(e){e!=null&&(h?cancelAnimationFrame(e):clearTimeout(e))}function te(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=p(a))};return v.cancel=()=>{E(t),t=null,n=null},v.flush=()=>{t!==null&&(E(t),a())},v}function M(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const g=a;a=null,e(...g),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},k=(...g)=>{n===null?(e(...g),O()):(a=g,clearTimeout(n),O())};return k.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const g=a;a=null,e(...g)},k.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},k.pending=()=>n!==null||a!==null,k}function b(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function d(e="l"){return`${e}${(++w).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 z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return s}}),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,f)=>i.sort.set(f||[]),filters:(i,f)=>i.filters.set(f||null),quickFilter:(i,f)=>{if(f&&typeof f=="object"){i.filters.quick(f.text||"",{mode:f.mode});return}i.filters.quick(typeof f=="string"?f:"")},selectedKeys:(i,f)=>i.selection.set(Array.isArray(f)?f:[])});function C(i){return`on${String(i).split(":").map(G=>G.charAt(0).toUpperCase()+G.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 z(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 s(i){const f={},G={},L={};for(const[j,T]of Object.entries(i||{})){if(P(j)){L[j]=T;continue}if(Object.hasOwn(X,j)){G[j]=T;continue}f[j]=T}return{config:f,imperative:G,handlers:L}}function u(i){const f=i.createGrid;if(typeof f!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=s(i.props||{}),L=f(i.element,{...G.config});let j=G.handlers,T=G.config,$={};const B=V=>{if(!V||typeof V.type!="string")return;const R=j[C(V.type)];typeof R=="function"&&R(V)},D=L.on("*",B);for(const[V,R]of Object.entries(G.imperative))R!==void 0&&(X[V](L,R),$[V]=R);let _=!1;return{grid:L,update(V){if(_)return;const R=s(V||{});j=R.handlers;const F={};for(const[S,K]of Object.entries(R.config))Object.is(T[S],K)||(F[S]=K);for(const S of Object.keys(T))Object.hasOwn(R.config,S)||(F[S]=void 0);Object.keys(F).length&&L.setAll(F),T=R.config;for(const[S,K]of Object.entries(X)){const W=R.imperative[S];Object.is($[S],W)||W===void 0&&!Object.hasOwn($,S)||(K(L,W),$[S]=W)}},destroy(){_||(_=!0,D(),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 z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return s}});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"]),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"])}),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)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(f=>[z(f),f])))])));function P(u,i){const f=x[u]||{},G=q[u]||{},L={},j={},T={};for(const[$,B]of Object.entries(i||{})){if(Object.hasOwn(f,$)){T[$]=B;continue}if(Object.hasOwn(G,$)){j[$]=B,L[$]=B;continue}L[$]=B}return{config:L,live:j,handlers:T}}function s(u){const i=String(u.viewer),f=u.mount,G=u.name||i;if(typeof f!="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=f(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let T=L.handlers,$=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of C[i]||[]){const S=z(F),K=j.on(F,W=>{const A=T[S];typeof A=="function"&&A(W)});typeof K=="function"&&D.push(K)}const _=Y[i],V=q[i]||{};let R=!1;return{instance:j,update(F){if(R)return;const S=P(i,F||{});T=S.handlers;const K={};for(const[A,Z]of Object.entries(S.config))Object.is($[A],Z)||(K[A]=Z);if($=S.config,!Object.keys(K).length)return;const W=[];for(const A of Object.keys(K)){const Z=V[A];if(Z){Z(j,K[A]),B[A]=K[A];continue}_&&typeof j[_]=="function"||W.push(A)}if(_&&typeof j[_]=="function"){const A={};for(const Z of Object.keys(K))V[Z]||(A[Z]=K[Z]);Object.keys(A).length&&j[_](A)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${G}: ${W.map(A=>`\`${A}\``).join(", ")} changed, but ${G} 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(!R){R=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(P,s){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],f=parseInt(i.slice(0,2),16),G=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${f}, ${G}, ${L}, ${s})`}function q(P){const s=P.palette,u=s.mode==="dark";return{"--lattice-background":s.background.default,"--lattice-surface":s.background.paper,"--lattice-surface-alt":u?"#2a2a2a":s.grey[50],"--lattice-border-color":s.divider,"--lattice-border-strong":u?s.grey[600]:s.grey[400],"--lattice-foreground":s.text.primary,"--lattice-foreground-muted":s.text.secondary,"--lattice-header-foreground":s.text.primary,"--lattice-accent":s.primary.main,"--lattice-accent-contrast":s.primary.contrastText,"--lattice-link-color":s.primary.main,"--lattice-selected-background":C(s.primary.main,.12),"--lattice-hovered-background":C(s.text.primary,.06),"--lattice-focus-color":s.primary.main,"--lattice-variant-danger-solid":s.error.main,"--lattice-variant-danger-fill":C(s.error.main,.12),"--lattice-variant-warning-solid":s.warning.main,"--lattice-variant-warning-fill":C(s.warning.main,.12),"--lattice-variant-success-solid":s.success.main,"--lattice-variant-success-fill":C(s.success.main,.12),"--lattice-variant-info-solid":s.info.main,"--lattice-variant-info-fill":C(s.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(je){"use strict";var we=Object.create(null),Oe=Object.create(null);function ce(c,U){we[c]=U}function ve(c){var U=Oe[c];if(U)return U;var Q=Object.create(null);Oe[c]=Q;var X=we[c];if(!X)throw new Error("[lattice] missing module: "+c);return X(Q,ve),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 G}}),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 T}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return B}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return D}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return _}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return R}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return F}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return K}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return ie}}),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 be}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return p}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return d}});const Q="1.81.0";async function X(){return Q}const C="1.81.0",q=new Set,Y=2e3;function z(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 s(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 f(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 G(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"warn",n),console.warn("[lattice]",...n)}function L(e,...t){if(q.has(e))return;z(e);const n=f(t);s(e,"info",n),console.info("[lattice]",...n)}function j(){q.clear(),x.length=0}function T(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function $(e,t){e||T(t)}const B=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _(e){return typeof e=="function"}function V(e){return e==null}function R(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 S=new Map;function K(e){let t=S.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=v=>{let O=v;for(let k=0;k<a;k++){if(O==null)return;O=O[n[k]]}return O}}return S.set(e,t),t}const W=new Map;function A(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=(v,O)=>{let k=v;for(let g=0;g<a;g++){if(k==null)return;const m=n[g];k[m]==null&&(k[m]={}),k=k[m]}k!=null&&(k[n[a]]=O)}}return W.set(e,t),t}function Z(e,t){return K(t)(e)}function ie(e,t,n){A(t)(e,n)}function ue(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const le={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function se(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>le[n]):t}function fe(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function de(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:D(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const me=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ae(e,t){if(!D(e))return D(t)?{...t}:t;if(!D(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(me.has(a))continue;const v=t[a];v!==void 0&&(n[a]=D(v)&&D(n[a])?ae(n[a],v):v)}return n}function ye(e,t){if(!D(e)||!D(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class ge{#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 r=new Map;function o(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let a=r.get(n);return a||(a=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),r.set(n,a)),a}function l(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 y(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const h=typeof requestAnimationFrame=="function";function p(e){return h?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function E(e){e!=null&&(h?cancelAnimationFrame(e):clearTimeout(e))}function te(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=p(a))};return v.cancel=()=>{E(t),t=null,n=null},v.flush=()=>{t!==null&&(E(t),a())},v}function M(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const g=a;a=null,e(...g),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},k=(...g)=>{n===null?(e(...g),O()):(a=g,clearTimeout(n),O())};return k.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const g=a;a=null,e(...g)},k.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},k.pending=()=>n!==null||a!==null,k}function b(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function d(e="l"){return`${e}${(++w).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 z}}),Object.defineProperty(c,"isHandlerProp",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"partition",{enumerable:!0,get:function(){return s}}),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,f)=>i.sort.set(f||[]),filters:(i,f)=>i.filters.set(f||null),quickFilter:(i,f)=>{if(f&&typeof f=="object"){i.filters.quick(f.text||"",{mode:f.mode});return}i.filters.quick(typeof f=="string"?f:"")},selectedKeys:(i,f)=>i.selection.set(Array.isArray(f)?f:[])});function C(i){return`on${String(i).split(":").map(G=>G.charAt(0).toUpperCase()+G.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 z(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 s(i){const f={},G={},L={};for(const[j,T]of Object.entries(i||{})){if(P(j)){L[j]=T;continue}if(Object.hasOwn(X,j)){G[j]=T;continue}f[j]=T}return{config:f,imperative:G,handlers:L}}function u(i){const f=i.createGrid;if(typeof f!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=s(i.props||{}),L=f(i.element,{...G.config});let j=G.handlers,T=G.config,$={};const B=V=>{if(!V||typeof V.type!="string")return;const R=j[C(V.type)];typeof R=="function"&&R(V)},D=L.on("*",B);for(const[V,R]of Object.entries(G.imperative))R!==void 0&&(X[V](L,R),$[V]=R);let _=!1;return{grid:L,update(V){if(_)return;const R=s(V||{});j=R.handlers;const F={};for(const[S,K]of Object.entries(R.config))Object.is(T[S],K)||(F[S]=K);for(const S of Object.keys(T))Object.hasOwn(R.config,S)||(F[S]=void 0);Object.keys(F).length&&L.setAll(F),T=R.config;for(const[S,K]of Object.entries(X)){const W=R.imperative[S];Object.is($[S],W)||W===void 0&&!Object.hasOwn($,S)||(K(L,W),$[S]=W)}},destroy(){_||(_=!0,D(),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 z}}),Object.defineProperty(c,"partitionViewerProps",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"createViewerController",{enumerable:!0,get:function(){return s}});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"]),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"])}),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)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Y=Object.freeze({chart:"update"});function z(u){return`on${String(u).split(":").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(C).map(([u,i])=>[u,Object.freeze(Object.fromEntries(i.map(f=>[z(f),f])))])));function P(u,i){const f=x[u]||{},G=q[u]||{},L={},j={},T={};for(const[$,B]of Object.entries(i||{})){if(Object.hasOwn(f,$)){T[$]=B;continue}if(Object.hasOwn(G,$)){j[$]=B,L[$]=B;continue}L[$]=B}return{config:L,live:j,handlers:T}}function s(u){const i=String(u.viewer),f=u.mount,G=u.name||i;if(typeof f!="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=f(u.element,{...L.config});if(!j||typeof j!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let T=L.handlers,$=L.config;const B={...L.live},D=[];if(typeof j.on=="function")for(const F of C[i]||[]){const S=z(F),K=j.on(F,W=>{const A=T[S];typeof A=="function"&&A(W)});typeof K=="function"&&D.push(K)}const _=Y[i],V=q[i]||{};let R=!1;return{instance:j,update(F){if(R)return;const S=P(i,F||{});T=S.handlers;const K={};for(const[A,Z]of Object.entries(S.config))Object.is($[A],Z)||(K[A]=Z);if($=S.config,!Object.keys(K).length)return;const W=[];for(const A of Object.keys(K)){const Z=V[A];if(Z){Z(j,K[A]),B[A]=K[A];continue}_&&typeof j[_]=="function"||W.push(A)}if(_&&typeof j[_]=="function"){const A={};for(const Z of Object.keys(K))V[Z]||(A[Z]=K[Z]);Object.keys(A).length&&j[_](A)}W.length&&X(`react.viewer.${i}.mountOnly.${W.join(".")}`,`${G}: ${W.map(A=>`\`${A}\``).join(", ")} changed, but ${G} 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(!R){R=!0;for(const F of D)try{F()}catch{}D.length=0,typeof j.destroy=="function"&&j.destroy()}}}}}),ce("packages/modules/presets/index.js",function(c,U){"use strict";Object.defineProperty(c,"themeFromMui",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return x}});const X=U("packages/core/src/internal/util.js").warnOnce;function C(P,s){if(typeof P!="string")return P;const u=P.trim().match(/^#([0-9a-f]{6})$/i);if(!u)return P;const i=u[1],f=parseInt(i.slice(0,2),16),G=parseInt(i.slice(2,4),16),L=parseInt(i.slice(4,6),16);return`rgba(${f}, ${G}, ${L}, ${s})`}function q(P){const s=P.palette,u=s.mode==="dark";return{"--lattice-background":s.background.default,"--lattice-surface":s.background.paper,"--lattice-surface-alt":u?"#2a2a2a":s.grey[50],"--lattice-border-color":s.divider,"--lattice-border-strong":u?s.grey[600]:s.grey[400],"--lattice-foreground":s.text.primary,"--lattice-foreground-muted":s.text.secondary,"--lattice-header-foreground":s.text.primary,"--lattice-accent":s.primary.main,"--lattice-accent-contrast":s.primary.contrastText,"--lattice-link-color":s.primary.main,"--lattice-selected-background":C(s.primary.main,.12),"--lattice-hovered-background":C(s.text.primary,.06),"--lattice-focus-color":s.primary.main,"--lattice-variant-danger-solid":s.error.main,"--lattice-variant-danger-fill":C(s.error.main,.12),"--lattice-variant-warning-solid":s.warning.main,"--lattice-variant-warning-fill":C(s.warning.main,.12),"--lattice-variant-success-solid":s.success.main,"--lattice-variant-success-fill":C(s.success.main,.12),"--lattice-variant-info-solid":s.info.main,"--lattice-variant-info-fill":C(s.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
  }