@toclocoinc/lattice-grid 1.71.1 → 1.71.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +42 -8
  5. package/docs/api/adapters.html +1 -1
  6. package/docs/api/ai.html +1 -1
  7. package/docs/api/alarms.html +1 -1
  8. package/docs/api/charts.html +39 -5
  9. package/docs/api/data-router.html +1 -1
  10. package/docs/api/gantt.html +1 -1
  11. package/docs/api/grid.html +2 -2
  12. package/docs/api/index.html +2 -2
  13. package/docs/api/kanban.html +1 -1
  14. package/docs/api/kpi.html +1 -1
  15. package/docs/api/layout.html +1 -1
  16. package/docs/api/mock-socket.html +1 -1
  17. package/docs/api/tabs.html +1 -1
  18. package/docs/api/types.html +1 -1
  19. package/docs/api-detail.html +4 -4
  20. package/docs/warnings.json +13 -2
  21. package/lattice-grid.d.ts +31 -7
  22. package/lattice-grid.esm.min.js +3 -3
  23. package/lattice-grid.min.cjs +3 -3
  24. package/lattice-grid.min.js +3 -3
  25. package/modules/ai.d.ts +1 -1
  26. package/modules/ai.esm.min.js +2 -2
  27. package/modules/ai.min.cjs +2 -2
  28. package/modules/ai.min.js +2 -2
  29. package/modules/alarms.d.ts +1 -1
  30. package/modules/alarms.esm.min.js +2 -2
  31. package/modules/alarms.min.cjs +2 -2
  32. package/modules/alarms.min.js +2 -2
  33. package/modules/angular.d.ts +1 -1
  34. package/modules/angular.esm.min.js +2 -2
  35. package/modules/angular.min.cjs +2 -2
  36. package/modules/angular.min.js +2 -2
  37. package/modules/chart-alluvial.d.ts +1 -1
  38. package/modules/chart-alluvial.esm.min.js +1 -1
  39. package/modules/chart-alluvial.min.cjs +1 -1
  40. package/modules/chart-alluvial.min.js +1 -1
  41. package/modules/chart-arc.d.ts +1 -1
  42. package/modules/chart-arc.esm.min.js +1 -1
  43. package/modules/chart-arc.min.cjs +1 -1
  44. package/modules/chart-arc.min.js +1 -1
  45. package/modules/chart-bubblemap.d.ts +1 -1
  46. package/modules/chart-bubblemap.esm.min.js +1 -1
  47. package/modules/chart-bubblemap.min.cjs +1 -1
  48. package/modules/chart-bubblemap.min.js +1 -1
  49. package/modules/chart-bump.d.ts +1 -1
  50. package/modules/chart-bump.esm.min.js +1 -1
  51. package/modules/chart-bump.min.cjs +1 -1
  52. package/modules/chart-bump.min.js +1 -1
  53. package/modules/chart-calendar.d.ts +1 -1
  54. package/modules/chart-calendar.esm.min.js +1 -1
  55. package/modules/chart-calendar.min.cjs +1 -1
  56. package/modules/chart-calendar.min.js +1 -1
  57. package/modules/chart-decomposition.d.ts +1 -1
  58. package/modules/chart-decomposition.esm.min.js +1 -1
  59. package/modules/chart-decomposition.min.cjs +1 -1
  60. package/modules/chart-decomposition.min.js +1 -1
  61. package/modules/chart-diverging.d.ts +1 -1
  62. package/modules/chart-diverging.esm.min.js +1 -1
  63. package/modules/chart-diverging.min.cjs +1 -1
  64. package/modules/chart-diverging.min.js +1 -1
  65. package/modules/chart-dumbbell.d.ts +1 -1
  66. package/modules/chart-dumbbell.esm.min.js +1 -1
  67. package/modules/chart-dumbbell.min.cjs +1 -1
  68. package/modules/chart-dumbbell.min.js +1 -1
  69. package/modules/chart-fan.d.ts +1 -1
  70. package/modules/chart-fan.esm.min.js +1 -1
  71. package/modules/chart-fan.min.cjs +1 -1
  72. package/modules/chart-fan.min.js +1 -1
  73. package/modules/chart-hexbin.d.ts +1 -1
  74. package/modules/chart-hexbin.esm.min.js +1 -1
  75. package/modules/chart-hexbin.min.cjs +1 -1
  76. package/modules/chart-hexbin.min.js +1 -1
  77. package/modules/chart-hexmap.d.ts +1 -1
  78. package/modules/chart-hexmap.esm.min.js +1 -1
  79. package/modules/chart-hexmap.min.cjs +1 -1
  80. package/modules/chart-hexmap.min.js +1 -1
  81. package/modules/chart-icicle.d.ts +1 -1
  82. package/modules/chart-icicle.esm.min.js +1 -1
  83. package/modules/chart-icicle.min.cjs +1 -1
  84. package/modules/chart-icicle.min.js +1 -1
  85. package/modules/chart-markermap.d.ts +1 -1
  86. package/modules/chart-markermap.esm.min.js +1 -1
  87. package/modules/chart-markermap.min.cjs +1 -1
  88. package/modules/chart-markermap.min.js +1 -1
  89. package/modules/chart-parallel.d.ts +1 -1
  90. package/modules/chart-parallel.esm.min.js +1 -1
  91. package/modules/chart-parallel.min.cjs +1 -1
  92. package/modules/chart-parallel.min.js +1 -1
  93. package/modules/chart-ridgeline.d.ts +1 -1
  94. package/modules/chart-ridgeline.esm.min.js +1 -1
  95. package/modules/chart-ridgeline.min.cjs +1 -1
  96. package/modules/chart-ridgeline.min.js +1 -1
  97. package/modules/chart-roc.d.ts +1 -1
  98. package/modules/chart-roc.esm.min.js +1 -1
  99. package/modules/chart-roc.min.cjs +1 -1
  100. package/modules/chart-roc.min.js +1 -1
  101. package/modules/chart-slope.d.ts +1 -1
  102. package/modules/chart-slope.esm.min.js +1 -1
  103. package/modules/chart-slope.min.cjs +1 -1
  104. package/modules/chart-slope.min.js +1 -1
  105. package/modules/chart-splom.d.ts +1 -1
  106. package/modules/chart-splom.esm.min.js +1 -1
  107. package/modules/chart-splom.min.cjs +1 -1
  108. package/modules/chart-splom.min.js +1 -1
  109. package/modules/chart-waffle.d.ts +1 -1
  110. package/modules/chart-waffle.esm.min.js +1 -1
  111. package/modules/chart-waffle.min.cjs +1 -1
  112. package/modules/chart-waffle.min.js +1 -1
  113. package/modules/charts.d.ts +1 -1
  114. package/modules/charts.esm.min.js +13 -9
  115. package/modules/charts.esm.min.js.map +2 -2
  116. package/modules/charts.min.cjs +141 -137
  117. package/modules/charts.min.js +141 -137
  118. package/modules/charts.min.js.map +2 -2
  119. package/modules/data-router.d.ts +1 -1
  120. package/modules/data-router.esm.min.js +2 -2
  121. package/modules/data-router.min.cjs +2 -2
  122. package/modules/data-router.min.js +2 -2
  123. package/modules/devtools.d.ts +1 -1
  124. package/modules/devtools.esm.min.js +1 -1
  125. package/modules/devtools.min.cjs +1 -1
  126. package/modules/devtools.min.js +1 -1
  127. package/modules/dhtmlx-compat.d.ts +1 -1
  128. package/modules/dhtmlx-compat.esm.min.js +2 -2
  129. package/modules/dhtmlx-compat.min.cjs +2 -2
  130. package/modules/dhtmlx-compat.min.js +2 -2
  131. package/modules/gantt.d.ts +1 -1
  132. package/modules/gantt.esm.min.js +2 -2
  133. package/modules/gantt.min.cjs +2 -2
  134. package/modules/gantt.min.js +2 -2
  135. package/modules/geo-europe-nuts.d.ts +1 -1
  136. package/modules/geo-europe-nuts.esm.min.js +1 -1
  137. package/modules/geo-europe-nuts.min.cjs +1 -1
  138. package/modules/geo-europe-nuts.min.js +1 -1
  139. package/modules/geo-uk.d.ts +1 -1
  140. package/modules/geo-uk.esm.min.js +1 -1
  141. package/modules/geo-uk.min.cjs +1 -1
  142. package/modules/geo-uk.min.js +1 -1
  143. package/modules/geo-us-states.d.ts +1 -1
  144. package/modules/geo-us-states.esm.min.js +1 -1
  145. package/modules/geo-us-states.min.cjs +1 -1
  146. package/modules/geo-us-states.min.js +1 -1
  147. package/modules/geo-world-110m.d.ts +1 -1
  148. package/modules/geo-world-110m.esm.min.js +1 -1
  149. package/modules/geo-world-110m.min.cjs +1 -1
  150. package/modules/geo-world-110m.min.js +1 -1
  151. package/modules/geo-world-50m.d.ts +1 -1
  152. package/modules/geo-world-50m.esm.min.js +1 -1
  153. package/modules/geo-world-50m.min.cjs +1 -1
  154. package/modules/geo-world-50m.min.js +1 -1
  155. package/modules/htmx.d.ts +1 -1
  156. package/modules/htmx.esm.min.js +3 -3
  157. package/modules/htmx.min.cjs +3 -3
  158. package/modules/htmx.min.js +3 -3
  159. package/modules/kanban.d.ts +1 -1
  160. package/modules/kanban.esm.min.js +2 -2
  161. package/modules/kanban.min.cjs +2 -2
  162. package/modules/kanban.min.js +2 -2
  163. package/modules/kpi.d.ts +1 -1
  164. package/modules/kpi.esm.min.js +2 -2
  165. package/modules/kpi.min.cjs +2 -2
  166. package/modules/kpi.min.js +2 -2
  167. package/modules/layout.d.ts +1 -1
  168. package/modules/layout.esm.min.js +2 -2
  169. package/modules/layout.min.cjs +2 -2
  170. package/modules/layout.min.js +2 -2
  171. package/modules/mock-socket.d.ts +1 -1
  172. package/modules/mock-socket.esm.min.js +1 -1
  173. package/modules/mock-socket.min.cjs +1 -1
  174. package/modules/mock-socket.min.js +1 -1
  175. package/modules/react.d.ts +1 -1
  176. package/modules/react.esm.min.js +2 -2
  177. package/modules/react.min.cjs +2 -2
  178. package/modules/react.min.js +2 -2
  179. package/modules/svelte.d.ts +1 -1
  180. package/modules/svelte.esm.min.js +2 -2
  181. package/modules/svelte.min.cjs +2 -2
  182. package/modules/svelte.min.js +2 -2
  183. package/modules/tabs.d.ts +1 -1
  184. package/modules/tabs.esm.min.js +2 -2
  185. package/modules/tabs.min.cjs +2 -2
  186. package/modules/tabs.min.js +2 -2
  187. package/modules/vue.d.ts +1 -1
  188. package/modules/vue.esm.min.js +2 -2
  189. package/modules/vue.min.cjs +2 -2
  190. package/modules/vue.min.js +2 -2
  191. package/modules/webcomponent.d.ts +1 -1
  192. package/modules/webcomponent.esm.min.js +3 -3
  193. package/modules/webcomponent.min.cjs +3 -3
  194. package/modules/webcomponent.min.js +3 -3
  195. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, tabs module
2
+ * Lattice Grid 1.71.3, 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 we=Object.create(null),$e=Object.create(null);function ae(c,K){we[c]=K}function Oe(c){var K=$e[c];if(K)return K;var A=Object.create(null);$e[c]=A;var D=we[c];if(!D)throw new Error("[lattice] missing module: "+c);return D(A,Oe),A}ae("packages/core/src/internal/util.js",function(c,K){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return w}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return W}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return u}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return H}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return x}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return le}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return be}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ve}});const A="1.71.1";async function D(){return A}const w="1.71.1",o=new Set,$=2e3;function E(n){if(o.add(n),o.size>$){const r=o.values().next().value;r!==void 0&&o.delete(r)}}const N=[],M=500;function S(n,r,s){N.push({key:n,level:r,message:s.map(g=>typeof g=="string"?g:Z(g)).join(" "),at:Date.now()}),N.length>M&&N.shift()}function Z(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function W(){return N.map(n=>({...n}))}function U(n,...r){o.has(n)||(E(n),S(n,"warn",r),console.warn("[lattice]",...r))}function J(n,...r){o.has(n)||(E(n),S(n,"info",r),console.info("[lattice]",...r))}function X(){o.clear(),N.length=0}function Q(n,r){const s=new Error(`[lattice] ${n}`);throw r!==void 0&&(s.cause=r),s}function ee(n,r){n||Q(r)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function z(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function u(n){return typeof n=="function"}function d(n){return n==null}function b(n){return n==null||n===""}function l(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const m=new Map;function y(n){let r=m.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=I=>{let B=I;for(let G=0;G<g;G++){if(B==null)return;B=B[s[G]]}return B}}return m.set(n,r),r}const v=new Map;function P(n){let r=v.get(n);if(r)return r;if(!n.includes("."))r=(s,g)=>{s!=null&&(s[n]=g)};else{const s=n.split("."),g=s.length-1;r=(I,B)=>{let G=I;for(let q=0;q<g;q++){if(G==null)return;const e=s[q];G[e]==null&&(G[e]={}),G=G[e]}G!=null&&(G[s[g]]=B)}}return v.set(n,r),r}function C(n,r){return y(r)(n)}function L(n,r,s){P(r)(n,s)}function H(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(/^./,s=>s.toUpperCase()):""}const _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function x(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,s=>_[s]):r}function k(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function T(n,r,s){if(n!==void 0)return n===!0?{enabled:!0,...s}:n===!1?{enabled:!1}:z(n)?n:{[r]:n,enabled:!0}}function V(n){return n==null?[]:Array.isArray(n)?n:[n]}const se=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!z(n))return z(r)?{...r}:r;if(!z(r))return r===void 0?n:r;const s={...n};for(const g of Object.keys(r)){if(se.has(g))continue;const I=r[g];I!==void 0&&(s[g]=z(I)&&z(s[g])?te(s[g],I):I)}return s}function ue(n,r){if(!z(n)||!z(r)||n===r)return r;const s=Object.create(Object.getPrototypeOf(n));return Object.assign(s,n,r),s}class he{#t;#e=new Map;#n;constructor(r=256,s=null){this.#t=r,this.#n=s}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 s=this.#e;if(!s.has(r))return;const g=s.get(r);return s.delete(r),s.set(r,g),g}peek(r){return this.#e.get(r)}set(r,s){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,s),this.#r(),s}delete(r){const s=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(s,r),s}clear(){if(this.#n)for(const[r,s]of this.#e)this.#n(s,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 s=r.keys().next().value,g=r.get(s);r.delete(s),this.#n&&this.#n(g,s)}}}const ce=new Map;function le(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(s,g)),g}function me(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 s=String(n),g=String(r);return s<g?-1:s>g?1:0}function fe(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const de=typeof requestAnimationFrame=="function";function ne(n){return de?requestAnimationFrame(n):setTimeout(()=>n(fe()),16)}function re(n){n!=null&&(de?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},I=(...B)=>{s=B,r===null&&(r=ne(g))};return I.cancel=()=>{re(r),r=null,s=null},I.flush=()=>{r!==null&&(re(r),g())},I}function pe(n,r){let s=null,g=null;const I=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(I,r),typeof s?.unref=="function"&&s.unref()},G=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return G.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},G.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},G.pending=()=>s!==null||g!==null,G}function be(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function ve(n="l"){return`${n}${(++ye).toString(36)}`}}),ae("packages/modules/tabs/view.js",function(c,K){"use strict";Object.defineProperty(c,"NS",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"Emitter",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"injectStyles",{enumerable:!0,get:function(){return N}}),Object.defineProperty(c,"renderShell",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"paintBadge",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"setRoving",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"wireKeyboard",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"paintActive",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"revealPanel",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"announce",{enumerable:!0,get:function(){return z}});const A=K("packages/core/src/internal/util.js"),D=A.isFunction,w=A.warnOnce,o="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);class E{#t=new Map;on(d,b){return D(b)?(this.#t.has(d)||this.#t.set(d,new Set),this.#t.get(d).add(b),()=>this.off(d,b)):()=>{}}off(d,b){const l=this.#t.get(d);l&&l.delete(b)}emit(d,b){const l=this.#t.get(d);if(l)for(const m of[...l])m(b)}emitBefore(d,b,l){const m=l??(b&&b.origin),y=m==="api"||m==="user"||m==="init"?m:"user";let v=!1,P=null;const C=T=>{v=!0,T!=null&&P===null&&(P=String(T))},L={...b||null,type:d,origin:y,get defaultPrevented(){return v},get reason(){return P},preventDefault(T){C(T)}},H=this.#t.get(d);if(!H||H.size===0)return!0;const _=[...H],x=()=>(v&&P===null&&(P="prevented"),v&&b&&typeof b=="object"&&(b.reason=P),!v),k=[];for(const T of _)try{const V=T(L);V&&typeof V.then=="function"?k.push(V):V===!1&&C("prevented")}catch{C("error")}return k.length===0?x():Promise.allSettled(k).then(T=>{for(const V of T)V.status==="rejected"?C("error"):V.value===!1&&C("prevented");return x()})}}function N(u){if(!u||u.getElementById&&u.getElementById(`${o}-styles`))return;const d=u.createElement("style");d.id=`${o}-styles`,d.setAttribute("id",`${o}-styles`),d.textContent=`
6
+ (function(Ee){"use strict";var we=Object.create(null),$e=Object.create(null);function ae(c,K){we[c]=K}function Oe(c){var K=$e[c];if(K)return K;var A=Object.create(null);$e[c]=A;var D=we[c];if(!D)throw new Error("[lattice] missing module: "+c);return D(A,Oe),A}ae("packages/core/src/internal/util.js",function(c,K){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return w}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return W}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return u}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return H}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return x}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return le}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return be}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ve}});const A="1.71.3";async function D(){return A}const w="1.71.3",o=new Set,$=2e3;function E(n){if(o.add(n),o.size>$){const r=o.values().next().value;r!==void 0&&o.delete(r)}}const N=[],M=500;function S(n,r,s){N.push({key:n,level:r,message:s.map(g=>typeof g=="string"?g:Z(g)).join(" "),at:Date.now()}),N.length>M&&N.shift()}function Z(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function W(){return N.map(n=>({...n}))}function U(n,...r){o.has(n)||(E(n),S(n,"warn",r),console.warn("[lattice]",...r))}function J(n,...r){o.has(n)||(E(n),S(n,"info",r),console.info("[lattice]",...r))}function X(){o.clear(),N.length=0}function Q(n,r){const s=new Error(`[lattice] ${n}`);throw r!==void 0&&(s.cause=r),s}function ee(n,r){n||Q(r)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function z(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function u(n){return typeof n=="function"}function d(n){return n==null}function b(n){return n==null||n===""}function l(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const m=new Map;function y(n){let r=m.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=I=>{let B=I;for(let G=0;G<g;G++){if(B==null)return;B=B[s[G]]}return B}}return m.set(n,r),r}const v=new Map;function P(n){let r=v.get(n);if(r)return r;if(!n.includes("."))r=(s,g)=>{s!=null&&(s[n]=g)};else{const s=n.split("."),g=s.length-1;r=(I,B)=>{let G=I;for(let q=0;q<g;q++){if(G==null)return;const e=s[q];G[e]==null&&(G[e]={}),G=G[e]}G!=null&&(G[s[g]]=B)}}return v.set(n,r),r}function C(n,r){return y(r)(n)}function L(n,r,s){P(r)(n,s)}function H(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(/^./,s=>s.toUpperCase()):""}const _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function x(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,s=>_[s]):r}function k(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function T(n,r,s){if(n!==void 0)return n===!0?{enabled:!0,...s}:n===!1?{enabled:!1}:z(n)?n:{[r]:n,enabled:!0}}function V(n){return n==null?[]:Array.isArray(n)?n:[n]}const se=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!z(n))return z(r)?{...r}:r;if(!z(r))return r===void 0?n:r;const s={...n};for(const g of Object.keys(r)){if(se.has(g))continue;const I=r[g];I!==void 0&&(s[g]=z(I)&&z(s[g])?te(s[g],I):I)}return s}function ue(n,r){if(!z(n)||!z(r)||n===r)return r;const s=Object.create(Object.getPrototypeOf(n));return Object.assign(s,n,r),s}class he{#t;#e=new Map;#n;constructor(r=256,s=null){this.#t=r,this.#n=s}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 s=this.#e;if(!s.has(r))return;const g=s.get(r);return s.delete(r),s.set(r,g),g}peek(r){return this.#e.get(r)}set(r,s){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,s),this.#r(),s}delete(r){const s=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(s,r),s}clear(){if(this.#n)for(const[r,s]of this.#e)this.#n(s,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 s=r.keys().next().value,g=r.get(s);r.delete(s),this.#n&&this.#n(g,s)}}}const ce=new Map;function le(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(s,g)),g}function me(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 s=String(n),g=String(r);return s<g?-1:s>g?1:0}function fe(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const de=typeof requestAnimationFrame=="function";function ne(n){return de?requestAnimationFrame(n):setTimeout(()=>n(fe()),16)}function re(n){n!=null&&(de?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},I=(...B)=>{s=B,r===null&&(r=ne(g))};return I.cancel=()=>{re(r),r=null,s=null},I.flush=()=>{r!==null&&(re(r),g())},I}function pe(n,r){let s=null,g=null;const I=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(I,r),typeof s?.unref=="function"&&s.unref()},G=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return G.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},G.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},G.pending=()=>s!==null||g!==null,G}function be(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function ve(n="l"){return`${n}${(++ye).toString(36)}`}}),ae("packages/modules/tabs/view.js",function(c,K){"use strict";Object.defineProperty(c,"NS",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"Emitter",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"injectStyles",{enumerable:!0,get:function(){return N}}),Object.defineProperty(c,"renderShell",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"paintBadge",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"setRoving",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"wireKeyboard",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"paintActive",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"revealPanel",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"announce",{enumerable:!0,get:function(){return z}});const A=K("packages/core/src/internal/util.js"),D=A.isFunction,w=A.warnOnce,o="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);class E{#t=new Map;on(d,b){return D(b)?(this.#t.has(d)||this.#t.set(d,new Set),this.#t.get(d).add(b),()=>this.off(d,b)):()=>{}}off(d,b){const l=this.#t.get(d);l&&l.delete(b)}emit(d,b){const l=this.#t.get(d);if(l)for(const m of[...l])m(b)}emitBefore(d,b,l){const m=l??(b&&b.origin),y=m==="api"||m==="user"||m==="init"?m:"user";let v=!1,P=null;const C=T=>{v=!0,T!=null&&P===null&&(P=String(T))},L={...b||null,type:d,origin:y,get defaultPrevented(){return v},get reason(){return P},preventDefault(T){C(T)}},H=this.#t.get(d);if(!H||H.size===0)return!0;const _=[...H],x=()=>(v&&P===null&&(P="prevented"),v&&b&&typeof b=="object"&&(b.reason=P),!v),k=[];for(const T of _)try{const V=T(L);V&&typeof V.then=="function"?k.push(V):V===!1&&C("prevented")}catch{C("error")}return k.length===0?x():Promise.allSettled(k).then(T=>{for(const V of T)V.status==="rejected"?C("error"):V.value===!1&&C("prevented");return x()})}}function N(u){if(!u||u.getElementById&&u.getElementById(`${o}-styles`))return;const d=u.createElement("style");d.id=`${o}-styles`,d.setAttribute("id",`${o}-styles`),d.textContent=`
7
7
  :where(.${o}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${o}-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(--${o}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, tabs module
2
+ * Lattice Grid 1.71.3, 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 we=Object.create(null),$e=Object.create(null);function ae(c,K){we[c]=K}function Oe(c){var K=$e[c];if(K)return K;var A=Object.create(null);$e[c]=A;var D=we[c];if(!D)throw new Error("[lattice] missing module: "+c);return D(A,Oe),A}ae("packages/core/src/internal/util.js",function(c,K){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return w}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return W}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return u}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return H}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return x}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return le}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return be}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ve}});const A="1.71.1";async function D(){return A}const w="1.71.1",o=new Set,$=2e3;function E(n){if(o.add(n),o.size>$){const r=o.values().next().value;r!==void 0&&o.delete(r)}}const N=[],M=500;function S(n,r,s){N.push({key:n,level:r,message:s.map(g=>typeof g=="string"?g:Z(g)).join(" "),at:Date.now()}),N.length>M&&N.shift()}function Z(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function W(){return N.map(n=>({...n}))}function U(n,...r){o.has(n)||(E(n),S(n,"warn",r),console.warn("[lattice]",...r))}function J(n,...r){o.has(n)||(E(n),S(n,"info",r),console.info("[lattice]",...r))}function X(){o.clear(),N.length=0}function Q(n,r){const s=new Error(`[lattice] ${n}`);throw r!==void 0&&(s.cause=r),s}function ee(n,r){n||Q(r)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function z(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function u(n){return typeof n=="function"}function d(n){return n==null}function b(n){return n==null||n===""}function l(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const m=new Map;function y(n){let r=m.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=I=>{let B=I;for(let G=0;G<g;G++){if(B==null)return;B=B[s[G]]}return B}}return m.set(n,r),r}const v=new Map;function P(n){let r=v.get(n);if(r)return r;if(!n.includes("."))r=(s,g)=>{s!=null&&(s[n]=g)};else{const s=n.split("."),g=s.length-1;r=(I,B)=>{let G=I;for(let q=0;q<g;q++){if(G==null)return;const e=s[q];G[e]==null&&(G[e]={}),G=G[e]}G!=null&&(G[s[g]]=B)}}return v.set(n,r),r}function C(n,r){return y(r)(n)}function L(n,r,s){P(r)(n,s)}function H(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(/^./,s=>s.toUpperCase()):""}const _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function x(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,s=>_[s]):r}function k(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function T(n,r,s){if(n!==void 0)return n===!0?{enabled:!0,...s}:n===!1?{enabled:!1}:z(n)?n:{[r]:n,enabled:!0}}function V(n){return n==null?[]:Array.isArray(n)?n:[n]}const se=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!z(n))return z(r)?{...r}:r;if(!z(r))return r===void 0?n:r;const s={...n};for(const g of Object.keys(r)){if(se.has(g))continue;const I=r[g];I!==void 0&&(s[g]=z(I)&&z(s[g])?te(s[g],I):I)}return s}function ue(n,r){if(!z(n)||!z(r)||n===r)return r;const s=Object.create(Object.getPrototypeOf(n));return Object.assign(s,n,r),s}class he{#t;#e=new Map;#n;constructor(r=256,s=null){this.#t=r,this.#n=s}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 s=this.#e;if(!s.has(r))return;const g=s.get(r);return s.delete(r),s.set(r,g),g}peek(r){return this.#e.get(r)}set(r,s){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,s),this.#r(),s}delete(r){const s=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(s,r),s}clear(){if(this.#n)for(const[r,s]of this.#e)this.#n(s,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 s=r.keys().next().value,g=r.get(s);r.delete(s),this.#n&&this.#n(g,s)}}}const ce=new Map;function le(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(s,g)),g}function me(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 s=String(n),g=String(r);return s<g?-1:s>g?1:0}function fe(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const de=typeof requestAnimationFrame=="function";function ne(n){return de?requestAnimationFrame(n):setTimeout(()=>n(fe()),16)}function re(n){n!=null&&(de?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},I=(...B)=>{s=B,r===null&&(r=ne(g))};return I.cancel=()=>{re(r),r=null,s=null},I.flush=()=>{r!==null&&(re(r),g())},I}function pe(n,r){let s=null,g=null;const I=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(I,r),typeof s?.unref=="function"&&s.unref()},G=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return G.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},G.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},G.pending=()=>s!==null||g!==null,G}function be(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function ve(n="l"){return`${n}${(++ye).toString(36)}`}}),ae("packages/modules/tabs/view.js",function(c,K){"use strict";Object.defineProperty(c,"NS",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"Emitter",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"injectStyles",{enumerable:!0,get:function(){return N}}),Object.defineProperty(c,"renderShell",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"paintBadge",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"setRoving",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"wireKeyboard",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"paintActive",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"revealPanel",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"announce",{enumerable:!0,get:function(){return z}});const A=K("packages/core/src/internal/util.js"),D=A.isFunction,w=A.warnOnce,o="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);class E{#t=new Map;on(d,b){return D(b)?(this.#t.has(d)||this.#t.set(d,new Set),this.#t.get(d).add(b),()=>this.off(d,b)):()=>{}}off(d,b){const l=this.#t.get(d);l&&l.delete(b)}emit(d,b){const l=this.#t.get(d);if(l)for(const m of[...l])m(b)}emitBefore(d,b,l){const m=l??(b&&b.origin),y=m==="api"||m==="user"||m==="init"?m:"user";let v=!1,P=null;const C=T=>{v=!0,T!=null&&P===null&&(P=String(T))},L={...b||null,type:d,origin:y,get defaultPrevented(){return v},get reason(){return P},preventDefault(T){C(T)}},H=this.#t.get(d);if(!H||H.size===0)return!0;const _=[...H],x=()=>(v&&P===null&&(P="prevented"),v&&b&&typeof b=="object"&&(b.reason=P),!v),k=[];for(const T of _)try{const V=T(L);V&&typeof V.then=="function"?k.push(V):V===!1&&C("prevented")}catch{C("error")}return k.length===0?x():Promise.allSettled(k).then(T=>{for(const V of T)V.status==="rejected"?C("error"):V.value===!1&&C("prevented");return x()})}}function N(u){if(!u||u.getElementById&&u.getElementById(`${o}-styles`))return;const d=u.createElement("style");d.id=`${o}-styles`,d.setAttribute("id",`${o}-styles`),d.textContent=`
6
+ (function(Ee){"use strict";var we=Object.create(null),$e=Object.create(null);function ae(c,K){we[c]=K}function Oe(c){var K=$e[c];if(K)return K;var A=Object.create(null);$e[c]=A;var D=we[c];if(!D)throw new Error("[lattice] missing module: "+c);return D(A,Oe),A}ae("packages/core/src/internal/util.js",function(c,K){"use strict";Object.defineProperty(c,"VERSION",{enumerable:!0,get:function(){return w}}),Object.defineProperty(c,"reportedWarnings",{enumerable:!0,get:function(){return W}}),Object.defineProperty(c,"warnOnce",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"infoOnce",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"resetWarnings",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"fail",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(c,"invariant",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"DEV",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"isObject",{enumerable:!0,get:function(){return z}}),Object.defineProperty(c,"isFunction",{enumerable:!0,get:function(){return u}}),Object.defineProperty(c,"isNil",{enumerable:!0,get:function(){return d}}),Object.defineProperty(c,"isBlank",{enumerable:!0,get:function(){return b}}),Object.defineProperty(c,"isCtor",{enumerable:!0,get:function(){return l}}),Object.defineProperty(c,"pathGetter",{enumerable:!0,get:function(){return y}}),Object.defineProperty(c,"pathSetter",{enumerable:!0,get:function(){return P}}),Object.defineProperty(c,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(c,"setPath",{enumerable:!0,get:function(){return L}}),Object.defineProperty(c,"humanise",{enumerable:!0,get:function(){return H}}),Object.defineProperty(c,"escapeHtml",{enumerable:!0,get:function(){return x}}),Object.defineProperty(c,"titleCase",{enumerable:!0,get:function(){return k}}),Object.defineProperty(c,"expand",{enumerable:!0,get:function(){return T}}),Object.defineProperty(c,"toArray",{enumerable:!0,get:function(){return V}}),Object.defineProperty(c,"merge",{enumerable:!0,get:function(){return te}}),Object.defineProperty(c,"mergeRow",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return le}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return me}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(c,"nextFrame",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(c,"cancelFrame",{enumerable:!0,get:function(){return re}}),Object.defineProperty(c,"frameBatched",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(c,"settleDebounce",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(c,"whenIdle",{enumerable:!0,get:function(){return be}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ve}});const A="1.71.3";async function D(){return A}const w="1.71.3",o=new Set,$=2e3;function E(n){if(o.add(n),o.size>$){const r=o.values().next().value;r!==void 0&&o.delete(r)}}const N=[],M=500;function S(n,r,s){N.push({key:n,level:r,message:s.map(g=>typeof g=="string"?g:Z(g)).join(" "),at:Date.now()}),N.length>M&&N.shift()}function Z(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function W(){return N.map(n=>({...n}))}function U(n,...r){o.has(n)||(E(n),S(n,"warn",r),console.warn("[lattice]",...r))}function J(n,...r){o.has(n)||(E(n),S(n,"info",r),console.info("[lattice]",...r))}function X(){o.clear(),N.length=0}function Q(n,r){const s=new Error(`[lattice] ${n}`);throw r!==void 0&&(s.cause=r),s}function ee(n,r){n||Q(r)}const Y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function z(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function u(n){return typeof n=="function"}function d(n){return n==null}function b(n){return n==null||n===""}function l(n){return typeof n!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(n))?!0:!!(n.prototype&&Object.getOwnPropertyNames(n.prototype).length>1)}const m=new Map;function y(n){let r=m.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=I=>{let B=I;for(let G=0;G<g;G++){if(B==null)return;B=B[s[G]]}return B}}return m.set(n,r),r}const v=new Map;function P(n){let r=v.get(n);if(r)return r;if(!n.includes("."))r=(s,g)=>{s!=null&&(s[n]=g)};else{const s=n.split("."),g=s.length-1;r=(I,B)=>{let G=I;for(let q=0;q<g;q++){if(G==null)return;const e=s[q];G[e]==null&&(G[e]={}),G=G[e]}G!=null&&(G[s[g]]=B)}}return v.set(n,r),r}function C(n,r){return y(r)(n)}function L(n,r,s){P(r)(n,s)}function H(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(/^./,s=>s.toUpperCase()):""}const _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function x(n){const r=n==null?"":String(n);return/[&<>"']/.test(r)?r.replace(/[&<>"']/g,s=>_[s]):r}function k(n){return String(n).replace(/\w\S*/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function T(n,r,s){if(n!==void 0)return n===!0?{enabled:!0,...s}:n===!1?{enabled:!1}:z(n)?n:{[r]:n,enabled:!0}}function V(n){return n==null?[]:Array.isArray(n)?n:[n]}const se=Object.freeze(new Set(["__proto__","constructor","prototype"]));function te(n,r){if(!z(n))return z(r)?{...r}:r;if(!z(r))return r===void 0?n:r;const s={...n};for(const g of Object.keys(r)){if(se.has(g))continue;const I=r[g];I!==void 0&&(s[g]=z(I)&&z(s[g])?te(s[g],I):I)}return s}function ue(n,r){if(!z(n)||!z(r)||n===r)return r;const s=Object.create(Object.getPrototypeOf(n));return Object.assign(s,n,r),s}class he{#t;#e=new Map;#n;constructor(r=256,s=null){this.#t=r,this.#n=s}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 s=this.#e;if(!s.has(r))return;const g=s.get(r);return s.delete(r),s.set(r,g),g}peek(r){return this.#e.get(r)}set(r,s){const g=this.#e;return g.has(r)&&g.delete(r),g.set(r,s),this.#r(),s}delete(r){const s=this.#e.get(r);return this.#e.delete(r)&&this.#n&&this.#n(s,r),s}clear(){if(this.#n)for(const[r,s]of this.#e)this.#n(s,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 s=r.keys().next().value,g=r.get(s);r.delete(s),this.#n&&this.#n(g,s)}}}const ce=new Map;function le(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ce.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ce.set(s,g)),g}function me(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 s=String(n),g=String(r);return s<g?-1:s>g?1:0}function fe(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const de=typeof requestAnimationFrame=="function";function ne(n){return de?requestAnimationFrame(n):setTimeout(()=>n(fe()),16)}function re(n){n!=null&&(de?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},I=(...B)=>{s=B,r===null&&(r=ne(g))};return I.cancel=()=>{re(r),r=null,s=null},I.flush=()=>{r!==null&&(re(r),g())},I}function pe(n,r){let s=null,g=null;const I=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(I,r),typeof s?.unref=="function"&&s.unref()},G=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return G.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},G.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},G.pending=()=>s!==null||g!==null,G}function be(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let ye=0;function ve(n="l"){return`${n}${(++ye).toString(36)}`}}),ae("packages/modules/tabs/view.js",function(c,K){"use strict";Object.defineProperty(c,"NS",{enumerable:!0,get:function(){return o}}),Object.defineProperty(c,"BADGE_TONES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(c,"Emitter",{enumerable:!0,get:function(){return E}}),Object.defineProperty(c,"injectStyles",{enumerable:!0,get:function(){return N}}),Object.defineProperty(c,"renderShell",{enumerable:!0,get:function(){return M}}),Object.defineProperty(c,"paintBadge",{enumerable:!0,get:function(){return U}}),Object.defineProperty(c,"setRoving",{enumerable:!0,get:function(){return J}}),Object.defineProperty(c,"wireKeyboard",{enumerable:!0,get:function(){return X}}),Object.defineProperty(c,"paintActive",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(c,"revealPanel",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(c,"announce",{enumerable:!0,get:function(){return z}});const A=K("packages/core/src/internal/util.js"),D=A.isFunction,w=A.warnOnce,o="lat-tabs",$=Object.freeze(["good","warn","bad","unknown"]);class E{#t=new Map;on(d,b){return D(b)?(this.#t.has(d)||this.#t.set(d,new Set),this.#t.get(d).add(b),()=>this.off(d,b)):()=>{}}off(d,b){const l=this.#t.get(d);l&&l.delete(b)}emit(d,b){const l=this.#t.get(d);if(l)for(const m of[...l])m(b)}emitBefore(d,b,l){const m=l??(b&&b.origin),y=m==="api"||m==="user"||m==="init"?m:"user";let v=!1,P=null;const C=T=>{v=!0,T!=null&&P===null&&(P=String(T))},L={...b||null,type:d,origin:y,get defaultPrevented(){return v},get reason(){return P},preventDefault(T){C(T)}},H=this.#t.get(d);if(!H||H.size===0)return!0;const _=[...H],x=()=>(v&&P===null&&(P="prevented"),v&&b&&typeof b=="object"&&(b.reason=P),!v),k=[];for(const T of _)try{const V=T(L);V&&typeof V.then=="function"?k.push(V):V===!1&&C("prevented")}catch{C("error")}return k.length===0?x():Promise.allSettled(k).then(T=>{for(const V of T)V.status==="rejected"?C("error"):V.value===!1&&C("prevented");return x()})}}function N(u){if(!u||u.getElementById&&u.getElementById(`${o}-styles`))return;const d=u.createElement("style");d.id=`${o}-styles`,d.setAttribute("id",`${o}-styles`),d.textContent=`
7
7
  :where(.${o}){display:flex;flex-direction:column;height:100%;
8
8
  font-family:var(--${o}-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(--${o}-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.71.1, vue module type declarations
2
+ * Lattice Grid 1.71.3, vue module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, vue module
2
+ * Lattice Grid 1.71.3, vue module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- var ge=Object.create(null),we=Object.create(null);function me(o,Z){ge[o]=Z}function Oe(o){var Z=we[o];if(Z)return Z;var J=Object.create(null);we[o]=J;var x=ge[o];if(!x)throw new Error("[lattice] missing module: "+o);return x(J,Oe),J}me("packages/core/src/internal/util.js",function(o,Z){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return k}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return M}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return X}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return s}});const J="1.71.1";async function x(){return J}const H="1.71.1",q=new Set,Q=2e3;function U(e){if(q.add(e),q.size>Q){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const _=[],ee=500;function te(e,t,n){_.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:l(a)).join(" "),at:Date.now()}),_.length>ee&&_.shift()}function l(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return _.map(e=>({...e}))}function b(e,...t){q.has(e)||(U(e),te(e,"warn",t),console.warn("[lattice]",...t))}function G(e,...t){q.has(e)||(U(e),te(e,"info",t),console.info("[lattice]",...t))}function E(){q.clear(),_.length=0}function p(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||p(t)}const k=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function A(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function re(e){return typeof e=="function"}function M(e){return e==null}function V(e){return e==null||e===""}function P(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const $=new Map;function N(e){let t=$.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 L=0;L<a;L++){if(O==null)return;O=O[n[L]]}return O}}return $.set(e,t),t}const S=new Map;function I(e){let t=S.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 L=v;for(let h=0;h<a;h++){if(L==null)return;const f=n[h];L[f]==null&&(L[f]={}),L=L[f]}L!=null&&(L[n[a]]=O)}}return S.set(e,t),t}function C(e,t){return N(t)(e)}function W(e,t,n){I(t)(e,n)}function ae(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 ue={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function le(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ue[n]):t}function se(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function fe(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:A(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const de=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ie(e,t){if(!A(e))return A(t)?{...t}:t;if(!A(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(de.has(a))continue;const v=t[a];v!==void 0&&(n[a]=A(v)&&A(n[a])?ie(n[a],v):v)}return n}function ye(e,t){if(!A(e)||!A(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const 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 u(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 g=typeof requestAnimationFrame=="function";function d(e){return g?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function j(e){e!=null&&(g?cancelAnimationFrame(e):clearTimeout(e))}function X(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=d(a))};return v.cancel=()=>{j(t),t=null,n=null},v.flush=()=>{t!==null&&(j(t),a())},v}function K(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const h=a;a=null,e(...h),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},L=(...h)=>{n===null?(e(...h),O()):(a=h,clearTimeout(n),O())};return L.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const h=a;a=null,e(...h)},L.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},L.pending=()=>n!==null||a!==null,L}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function s(e="l"){return`${e}${(++w).toString(36)}`}}),me("packages/modules/shared/adapter.js",function(o,Z){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"handlerName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"aliasConfigKey",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"isHandlerProp",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"partition",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"createGridController",{enumerable:!0,get:function(){return l}});const J=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","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,b)=>i.sort.set(b||[]),filters:(i,b)=>i.filters.set(b||null),quickFilter:(i,b)=>{if(b&&typeof b=="object"){i.filters.quick(b.text||"",{mode:b.mode});return}i.filters.quick(typeof b=="string"?b:"")},selectedKeys:(i,b)=>i.selection.set(Array.isArray(b)?b:[])});function H(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 Q=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function U(i){return Object.hasOwn(Q,i)?Q[i]:i}const _=Object.freeze(Object.fromEntries(J.map(i=>[H(i),i])));function ee(i){return Object.hasOwn(_,i)}function te(i){const b={},G={},E={};for(const[p,z]of Object.entries(i||{})){if(ee(p)){E[p]=z;continue}if(Object.hasOwn(x,p)){G[p]=z;continue}b[p]=z}return{config:b,imperative:G,handlers:E}}function l(i){const b=i.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=te(i.props||{}),E=b(i.element,{...G.config});let p=G.handlers,z=G.config,k={};const A=V=>{if(!V||typeof V.type!="string")return;const P=p[H(V.type)];typeof P=="function"&&P(V)},re=E.on("*",A);for(const[V,P]of Object.entries(G.imperative))P!==void 0&&(x[V](E,P),k[V]=P);let M=!1;return{grid:E,update(V){if(M)return;const P=te(V||{});p=P.handlers;const $={};for(const[N,S]of Object.entries(P.config))Object.is(z[N],S)||($[N]=S);for(const N of Object.keys(z))Object.hasOwn(P.config,N)||($[N]=void 0);Object.keys($).length&&E.setAll($),z=P.config;for(const[N,S]of Object.entries(x)){const I=P.imperative[N];Object.is(k[N],I)||I===void 0&&!Object.hasOwn(k,N)||(S(E,I),k[N]=I)}},destroy(){M||(M=!0,re(),E.destroy())}}}}),me("packages/modules/react/viewers.js",function(o,Z){"use strict";Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"partitionViewerProps",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return te}});const x=Z("packages/core/src/internal/util.js").warnOnce,H=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:(l,i)=>l.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(l,i)=>l.setRows(Array.isArray(i)?i:[]),quickFilter:(l,i)=>l.setQuickFilter(typeof i=="string"?i:""),sprint:(l,i)=>l.setSprint(i),epic:(l,i)=>l.setEpic(i),loading:(l,i)=>l.setLoading(!!i),error:(l,i)=>l.setError(i??null)}),gantt:Object.freeze({tasks:(l,i)=>l.setTasks(Array.isArray(i)?i:[]),dependencies:(l,i)=>l.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(l,i)=>{typeof i=="string"&&l.activate(i)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Q=Object.freeze({chart:"update"});function U(l){return`on${String(l).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(H).map(([l,i])=>[l,Object.freeze(Object.fromEntries(i.map(b=>[U(b),b])))])));function ee(l,i){const b=_[l]||{},G=q[l]||{},E={},p={},z={};for(const[k,A]of Object.entries(i||{})){if(Object.hasOwn(b,k)){z[k]=A;continue}if(Object.hasOwn(G,k)){p[k]=A,E[k]=A;continue}E[k]=A}return{config:E,live:p,handlers:z}}function te(l){const i=String(l.viewer),b=l.mount,G=l.name||i;if(typeof b!="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=ee(i,l.props||{}),p=b(l.element,{...E.config});if(!p||typeof p!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let z=E.handlers,k=E.config;const A={...E.live},re=[];if(typeof p.on=="function")for(const $ of H[i]||[]){const N=U($),S=p.on($,I=>{const C=z[N];typeof C=="function"&&C(I)});typeof S=="function"&&re.push(S)}const M=Q[i],V=q[i]||{};let P=!1;return{instance:p,update($){if(P)return;const N=ee(i,$||{});z=N.handlers;const S={};for(const[C,W]of Object.entries(N.config))Object.is(k[C],W)||(S[C]=W);if(k=N.config,!Object.keys(S).length)return;const I=[];for(const C of Object.keys(S)){const W=V[C];if(W){W(p,S[C]),A[C]=S[C];continue}M&&typeof p[M]=="function"||I.push(C)}if(M&&typeof p[M]=="function"){const C={};for(const W of Object.keys(S))V[W]||(C[W]=S[W]);Object.keys(C).length&&p[M](C)}I.length&&x(`react.viewer.${i}.mountOnly.${I.join(".")}`,`${G}: ${I.map(C=>`\`${C}\``).join(", ")} changed, but ${G} takes ${I.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(!P){P=!0;for(const $ of re)try{$()}catch{}re.length=0,typeof p.destroy=="function"&&p.destroy()}}}}}),me("packages/modules/vue/index.js",function(o,Z){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"createLatticeGrid",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"createLatticeGridContext",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"createLatticeViewer",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"createLatticeKPI",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"createLatticeChart",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(o,"createLatticeKanban",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"createLatticeGantt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"createLatticeLayout",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"createLatticeTabs",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"createLatticeRouter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(o,"createLatticeVue",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return he}});const x=Z("packages/core/src/internal/util.js").warnOnce,H=Z("packages/modules/shared/adapter.js"),q=H.createGridController,Q=H.EVENT_NAMES,U=H.dashedName,_=H.handlerName,ee=H.isHandlerProp,te=H.aliasConfigKey,l=Z("packages/modules/react/viewers.js"),i=l.VIEWER_EVENTS,b=l.VIEWER_APPLY,G=l.viewerHandlerName,E=l.createViewerController,p="default",z=new Set(["class","style","id"]),k=Symbol.for("lattice.vue.gridRegistry"),A=Symbol.for("lattice.vue.router"),re=Symbol.for("lattice.vue.attrsProbe");function M(r,c){if(!r||typeof r.h!="function")throw new TypeError(`${c} needs the Vue runtime: ${c}({ vue, … }).`)}function V(r,c){return typeof r.defineComponent=="function"?r.defineComponent(c):c}function P(r){const c=[],u=Object.keys(r||{}),y=new Set(u);for(const g of u){if(z.has(g)||ee(g))continue;const d=te(g);c.push({to:d!==g&&!y.has(d)?d:g,from:g})}return c}function $(r){const c={};for(const u of z)r&&Object.hasOwn(r,u)&&(c[u]=r[u]);return c}function N(r,c,u){const{watch:y}=r,g=new Map,d={flush:"post"},j=()=>{const m=c(),w=new Set(P(m).map(s=>s.from));for(const s of w)g.has(s)||g.set(s,y(()=>c()[s],u,d));for(const[s,e]of[...g])w.has(s)||(e(),g.delete(s))},K=y(()=>{const m=c();return m[re],Object.keys(m).sort().join("\0")},()=>{j(),u()},d);return j(),()=>{K();for(const m of g.values())m();g.clear()}}function S(r,c,u){const y=c&&typeof c=="object"?c:{},g=u&&typeof u=="object"?u:{};for(const[d,j]of Object.entries(y))Object.is(g[d],j)||r.filters.where(d,typeof j=="function"?j:null);for(const d of Object.keys(g))Object.hasOwn(y,d)||r.filters.where(d,null)}function I(r){const c=r&&r.vue,u=r&&r.createGrid;if(M(c,"createLatticeGrid"),typeof u!="function")throw new TypeError("createLatticeGrid needs createGrid: createLatticeGrid({ vue, createGrid }).");const{h:y,ref:g,shallowRef:d,onMounted:j,onBeforeUnmount:X}=c,K=typeof c.inject=="function"?c.inject:null;return V(c,{name:"LatticeGrid",props:{rowUpdates:{type:Object,default:void 0},predicates:{type:Object,default:void 0},name:{type:String,default:void 0},route:{type:null,default:void 0},routeOptions:{type:Object,default:void 0}},emits:[...Q.map(U),"grid-ready","grid-destroyed"],inheritAttrs:!1,setup(m,w){const s=g(null),e=d(null),t=K?K(k,null):null,n=K?K(A,null):null,a={predicates:void 0};let v=p,O=null;const L=()=>{const f={},T=w.attrs||{};for(const{to:F,from:Y}of P(T))f[F]=T[Y];for(const F of Q)f[_(F)]=Y=>w.emit(U(F),Y);return f};j(()=>{const f=q({createGrid:u,element:s.value,props:L()});e.value=f;const{grid:T}=f;m.predicates&&(S(T,m.predicates,{}),a.predicates=m.predicates),v=typeof m.name=="string"&&m.name?m.name:p,t&&t.publish(v,T),n&&m.route!==void 0&&n.attach(T,m.route,m.routeOptions||{}),w.emit("grid-ready",T),O=N(c,()=>w.attrs||{},()=>{const F=e.value;F&&F.update(L())})}),c.watch(()=>m.predicates,(f,T)=>{const F=e.value;F&&(S(F.grid,f,T),a.predicates=f)},{flush:"post"}),c.watch(()=>m.rowUpdates,f=>{const T=e.value;!T||!f||T.grid.rows.apply(f)},{flush:"post"}),X(()=>{const f=e.value;if(e.value=null,O&&O(),O=null,!!f){if(w.emit("grid-destroyed"),n)try{n.detach(f.grid)}catch{}t&&t.publish(v,null),a.predicates=void 0,f.destroy()}});const h=()=>e.value?e.value.grid:null;return typeof w.expose=="function"&&w.expose({grid:h}),()=>y("div",{...$(w.attrs||{}),ref:s})}})}function C(r){const c=r&&r.vue;if(M(c,"createLatticeGridContext"),typeof c.provide!="function"||typeof c.inject!="function")throw new TypeError("createLatticeGridContext needs a Vue with provide and inject.");const{h:u,shallowRef:y,provide:g,inject:d,computed:j}=c,X=()=>{const s=y({});return{grids:s,publish(e,t){const n=e||p,a=s.value;if(Object.is(a[n],t))return;const v={...a};t==null?delete v[n]:v[n]=t,s.value=v}}},K=()=>{const s=X();return g(k,s),s};return{LatticeGridProvider:V(c,{name:"LatticeGridProvider",setup(s,e){return K(),()=>e.slots&&e.slots.default?e.slots.default():null}}),provideLatticeGrids:K,useLatticeGrid:(s=p)=>{const e=d(k,null);return j(()=>e?e.grids.value[s||p]??null:null)}}}function W(r){const c=r&&r.vue;M(c,"createLatticeViewer");const u=String(r&&r.viewer||""),y=r.mount,g=r.name||`Lattice${u.charAt(0).toUpperCase()}${u.slice(1)}`,d=Array.isArray(r.requires)?r.requires:[],j=r.fromContext||null;if(typeof y!="function")throw new TypeError(`${g} needs a mount factory: createLatticeViewer({ vue, mount }).`);if(!Object.hasOwn(i,u))throw new TypeError(`createLatticeViewer: "${u}" is not a viewer this adapter knows; expected one of ${Object.keys(i).join(", ")}.`);const{h:X,ref:K,shallowRef:m,onMounted:w,onBeforeUnmount:s}=c,e=typeof c.inject=="function"?c.inject:null,t=i[u];return V(c,{name:g,props:{grid:{type:null,default:void 0},gridName:{type:String,default:void 0}},emits:[...t.map(U),"ready","destroyed"],inheritAttrs:!1,setup(n,a){const v=K(null),O=m(null),L=j&&e?e(k,null):null;let h=null,f=null;const T=()=>{if(!j)return null;if(n.grid!==void 0)return n.grid;if(!L)return null;const R=typeof n.gridName=="string"&&n.gridName?n.gridName:p;return L.grids.value[R]??null},F=()=>{const R={},oe=a.attrs||{};for(const{to:ne,from:pe}of P(oe))R[ne]=oe[pe];if(j){const ne=T();ne&&(R[j]=ne)}for(const ne of t)R[G(ne)]=pe=>a.emit(U(ne),pe);return R},Y=()=>{if(O.value||!v.value)return;const R=F();if(d.some(ne=>R[ne]===null||R[ne]===void 0))return;const oe=E({viewer:u,mount:y,element:v.value,props:R,name:g});O.value=oe,f=j?R[j]??null:null,a.emit("ready",oe.instance)},ce=()=>{const R=O.value;O.value=null,f=null,R&&(a.emit("destroyed"),R.destroy())};w(()=>{Y(),h=N(c,()=>a.attrs||{},()=>{const R=O.value;R?R.update(F()):Y()})}),c.watch(T,R=>{O.value&&Object.is(f,R??null)||(ce(),Y())},{flush:"post"}),s(()=>{h&&h(),h=null,ce()});const B=()=>O.value?O.value.instance:null;return typeof a.expose=="function"&&a.expose({instance:B}),()=>X("div",{...$(a.attrs||{}),ref:v})}})}function ae(r){const c=r&&r.createKPI;if(typeof c!="function")throw new TypeError("createLatticeKPI needs createKPI: createLatticeKPI({ vue, createKPI }).");return W({vue:r.vue,viewer:"kpi",name:"LatticeKPI",mount:(u,y)=>c(u,y),fromContext:"grid"})}function ue(r){const c=r&&r.createChart;if(typeof c!="function")throw new TypeError("createLatticeChart needs createChart: createLatticeChart({ vue, createChart }).");return W({vue:r.vue,viewer:"chart",name:"LatticeChart",mount:(u,y)=>c({...y,container:u}),requires:["grid"],fromContext:"grid"})}function le(r){const c=r&&r.createKanban;if(typeof c!="function")throw new TypeError("createLatticeKanban needs createKanban: createLatticeKanban({ vue, createKanban }).");return W({vue:r.vue,viewer:"kanban",name:"LatticeKanban",mount:(u,y)=>c(u,y),fromContext:"grid"})}function se(r){const c=r&&r.createGantt;if(typeof c!="function")throw new TypeError("createLatticeGantt needs createGantt: createLatticeGantt({ vue, createGantt }).");return W({vue:r.vue,viewer:"gantt",name:"LatticeGantt",mount:(u,y)=>c({...y,element:u})})}function fe(r){const c=r&&r.createLayout;if(typeof c!="function")throw new TypeError("createLatticeLayout needs createLayout: createLatticeLayout({ vue, createLayout }).");return W({vue:r.vue,viewer:"layout",name:"LatticeLayout",mount:(u,y)=>c(u,y)})}function be(r){return[String(r),`tab-${String(r)}`]}function de(r){const c=r&&r.vue,u=r&&r.createTabs;if(M(c,"createLatticeTabs"),typeof u!="function")throw new TypeError("createLatticeTabs needs createTabs: createLatticeTabs({ vue, createTabs }).");if(!c.Teleport)throw new TypeError("createLatticeTabs needs a Vue with Teleport, which is how a tab's slot reaches the strip's panel.");const{h:y,ref:g,shallowRef:d,Teleport:j,Fragment:X,onMounted:K,onBeforeUnmount:m}=c;return V(c,{name:"LatticeTabs",props:{tabs:{type:Array,default:()=>[]},active:{type:String,default:void 0}},emits:[...i.tabs.map(U),"ready","destroyed"],inheritAttrs:!1,setup(w,s){const e=g(null),t=d(null),n=d({}),a=[];let v=null;const O=h=>{const f=s.slots||{};for(const T of be(h))if(typeof f[T]=="function")return f[T];return null};K(()=>{const h={},f=s.attrs||{};for(const{to:ce,from:B}of P(f))h[ce]=f[B];const F=(Array.isArray(w.tabs)?w.tabs:[]).map(ce=>{const B=ce;return O(B.id)?{...B,view:R=>(n.value={...n.value,[B.id]:R},{destroy(){if(!Object.hasOwn(n.value,B.id))return;const oe={...n.value};delete oe[B.id],n.value=oe}})}:B}),Y=u(e.value,{...h,tabs:F,createGrid:r.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a slot nor a `createGrid` to build it with. Give the tab a <template #‹id›> slot, or pass createGrid into createLatticeTabs.")}),...typeof w.active=="string"?{active:w.active}:{}});t.value=Y,v=w.tabs;for(const ce of i.tabs){const B=Y.on(ce,R=>s.emit(U(ce),R));typeof B=="function"&&a.push(B)}s.emit("ready",Y)}),c.watch(()=>w.active,h=>{const f=t.value;f&&typeof h=="string"&&f.activeId!==h&&f.activate(h)},{flush:"post"}),c.watch(()=>w.tabs,h=>{!t.value||Object.is(v,h)||(v=h,x("vue.tabs.mountOnly.tabs","LatticeTabs: `tabs` changed (a label, a badge or a descriptor), but the strip takes it only when created — the module has no way to repaint an existing tab. Nothing was applied and the strip was NOT rebuilt — rebuilding it would lose whichever tab is open and any state its content holds. Give the component a `key` that changes when a genuine rebuild is wanted; a live badge otherwise needs to live in your own render."))},{flush:"post"}),m(()=>{const h=t.value;t.value=null;for(const f of a)try{f()}catch{}a.length=0,h&&(s.emit("destroyed"),h.destroy(),n.value={})});const L=()=>t.value;return typeof s.expose=="function"&&s.expose({instance:L,tabs:L}),()=>{const h=[y("div",{...$(s.attrs||{}),ref:e})];for(const f of Array.isArray(w.tabs)?w.tabs:[]){const T=f,F=n.value[T.id],Y=O(T.id);!F||!Y||h.push(y(j,{to:F,key:T.id},Y()))}return y(X,null,h)}}})}function ie(r){const c=r&&r.vue,u=r&&r.createDataRouter;if(M(c,"createLatticeRouter"),typeof c.provide!="function"||typeof c.inject!="function")throw new TypeError("createLatticeRouter needs a Vue with provide and inject.");if(typeof u!="function")throw new TypeError("createLatticeRouter needs createDataRouter: createLatticeRouter({ vue, createDataRouter }).");const{provide:y,inject:g}=c,d=K=>{let m=null,w=!1;const s={get router(){return!m&&!w&&(m=u(K||{})),m},attach(e,t,n){w||s.router.attach(e,t,n||{})},detach(e){w||!m||m.detach(e)},destroy(){w=!0;const e=m;m=null,e&&e.destroy()}};return y(A,s),c.onScopeDispose(()=>s.destroy()),s},j=()=>g(A,null),X=V(c,{name:"LatticeRouterProvider",props:{config:{type:Object,default:()=>({})}},setup(K,m){return d(K.config),()=>m.slots&&m.slots.default?m.slots.default():null}});return{provideLatticeRouter:d,useLatticeRouter:j,LatticeRouterProvider:X}}function ye(r){const c=r&&r.vue;M(c,"createLatticeVue");const{LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g}=C({vue:c}),d={LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g};return typeof r.createGrid=="function"&&(d.LatticeGrid=I({vue:c,createGrid:r.createGrid})),typeof r.createKPI=="function"&&(d.LatticeKPI=ae({vue:c,createKPI:r.createKPI})),typeof r.createChart=="function"&&(d.LatticeChart=ue({vue:c,createChart:r.createChart})),typeof r.createKanban=="function"&&(d.LatticeKanban=le({vue:c,createKanban:r.createKanban})),typeof r.createGantt=="function"&&(d.LatticeGantt=se({vue:c,createGantt:r.createGantt})),typeof r.createLayout=="function"&&(d.LatticeLayout=fe({vue:c,createLayout:r.createLayout})),typeof r.createTabs=="function"&&(d.LatticeTabs=de({vue:c,createTabs:r.createTabs,createGrid:r.createGrid})),typeof r.createDataRouter=="function"&&Object.assign(d,ie({vue:c,createDataRouter:r.createDataRouter})),d}const he=I});const D=Oe("packages/modules/vue/index.js"),ve=D.EVENT_NAMES,je=D.dashedName,Le=D.VIEWER_EVENTS,Ee=D.VIEWER_APPLY,Pe=D.viewerHandlerName,Te=D.createViewerController,Re=D.DEFAULT_GRID_NAME,Ae=D.createLatticeGrid,Ne=D.createLatticeGridContext,Ce=D.createLatticeViewer,Ge=D.createLatticeKPI,ke=D.createLatticeChart,Se=D.createLatticeKanban,Ve=D.createLatticeGantt,Ie=D.createLatticeLayout,Ke=D.createLatticeTabs,De=D.createLatticeRouter,ze=D.createLatticeVue;var Me=D.default;export{Re as DEFAULT_GRID_NAME,ve as EVENT_NAMES,Ee as VIEWER_APPLY,Le as VIEWER_EVENTS,ke as createLatticeChart,Ve as createLatticeGantt,Ae as createLatticeGrid,Ne as createLatticeGridContext,Ge as createLatticeKPI,Se as createLatticeKanban,Ie as createLatticeLayout,De as createLatticeRouter,Ke as createLatticeTabs,Ce as createLatticeViewer,ze as createLatticeVue,Te as createViewerController,je as dashedName,Me as default,Pe as viewerHandlerName};
6
+ var ge=Object.create(null),we=Object.create(null);function me(o,Z){ge[o]=Z}function Oe(o){var Z=we[o];if(Z)return Z;var J=Object.create(null);we[o]=J;var x=ge[o];if(!x)throw new Error("[lattice] missing module: "+o);return x(J,Oe),J}me("packages/core/src/internal/util.js",function(o,Z){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return k}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return M}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return X}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return s}});const J="1.71.3";async function x(){return J}const H="1.71.3",q=new Set,Q=2e3;function U(e){if(q.add(e),q.size>Q){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const _=[],ee=500;function te(e,t,n){_.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:l(a)).join(" "),at:Date.now()}),_.length>ee&&_.shift()}function l(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(){return _.map(e=>({...e}))}function b(e,...t){q.has(e)||(U(e),te(e,"warn",t),console.warn("[lattice]",...t))}function G(e,...t){q.has(e)||(U(e),te(e,"info",t),console.info("[lattice]",...t))}function E(){q.clear(),_.length=0}function p(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||p(t)}const k=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function A(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function re(e){return typeof e=="function"}function M(e){return e==null}function V(e){return e==null||e===""}function P(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const $=new Map;function N(e){let t=$.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 L=0;L<a;L++){if(O==null)return;O=O[n[L]]}return O}}return $.set(e,t),t}const S=new Map;function I(e){let t=S.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 L=v;for(let h=0;h<a;h++){if(L==null)return;const f=n[h];L[f]==null&&(L[f]={}),L=L[f]}L!=null&&(L[n[a]]=O)}}return S.set(e,t),t}function C(e,t){return N(t)(e)}function W(e,t,n){I(t)(e,n)}function ae(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 ue={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function le(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ue[n]):t}function se(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function fe(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:A(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const de=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ie(e,t){if(!A(e))return A(t)?{...t}:t;if(!A(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(de.has(a))continue;const v=t[a];v!==void 0&&(n[a]=A(v)&&A(n[a])?ie(n[a],v):v)}return n}function ye(e,t){if(!A(e)||!A(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class he{#n;#e=new Map;#t;constructor(t=256,n=null){this.#n=t,this.#t=n}get size(){return this.#e.size}get max(){return this.#n}set max(t){this.#n=t,this.#r()}has(t){return this.#e.has(t)}get(t){const n=this.#e;if(!n.has(t))return;const a=n.get(t);return n.delete(t),n.set(t,a),a}peek(t){return this.#e.get(t)}set(t,n){const a=this.#e;return a.has(t)&&a.delete(t),a.set(t,n),this.#r(),n}delete(t){const n=this.#e.get(t);return this.#e.delete(t)&&this.#t&&this.#t(n,t),n}clear(){if(this.#t)for(const[t,n]of this.#e)this.#t(n,t);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const t=this.#e;for(;t.size>this.#n;){const n=t.keys().next().value,a=t.get(n);t.delete(n),this.#t&&this.#t(a,n)}}}const 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 u(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 g=typeof requestAnimationFrame=="function";function d(e){return g?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function j(e){e!=null&&(g?cancelAnimationFrame(e):clearTimeout(e))}function X(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},v=(...O)=>{n=O,t===null&&(t=d(a))};return v.cancel=()=>{j(t),t=null,n=null},v.flush=()=>{t!==null&&(j(t),a())},v}function K(e,t){let n=null,a=null;const v=()=>{if(n=null,a===null)return;const h=a;a=null,e(...h),O()},O=()=>{n=setTimeout(v,t),typeof n?.unref=="function"&&n.unref()},L=(...h)=>{n===null?(e(...h),O()):(a=h,clearTimeout(n),O())};return L.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const h=a;a=null,e(...h)},L.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},L.pending=()=>n!==null||a!==null,L}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function s(e="l"){return`${e}${(++w).toString(36)}`}}),me("packages/modules/shared/adapter.js",function(o,Z){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"handlerName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"aliasConfigKey",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"isHandlerProp",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"partition",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"createGridController",{enumerable:!0,get:function(){return l}});const J=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","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,b)=>i.sort.set(b||[]),filters:(i,b)=>i.filters.set(b||null),quickFilter:(i,b)=>{if(b&&typeof b=="object"){i.filters.quick(b.text||"",{mode:b.mode});return}i.filters.quick(typeof b=="string"?b:"")},selectedKeys:(i,b)=>i.selection.set(Array.isArray(b)?b:[])});function H(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 Q=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function U(i){return Object.hasOwn(Q,i)?Q[i]:i}const _=Object.freeze(Object.fromEntries(J.map(i=>[H(i),i])));function ee(i){return Object.hasOwn(_,i)}function te(i){const b={},G={},E={};for(const[p,z]of Object.entries(i||{})){if(ee(p)){E[p]=z;continue}if(Object.hasOwn(x,p)){G[p]=z;continue}b[p]=z}return{config:b,imperative:G,handlers:E}}function l(i){const b=i.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=te(i.props||{}),E=b(i.element,{...G.config});let p=G.handlers,z=G.config,k={};const A=V=>{if(!V||typeof V.type!="string")return;const P=p[H(V.type)];typeof P=="function"&&P(V)},re=E.on("*",A);for(const[V,P]of Object.entries(G.imperative))P!==void 0&&(x[V](E,P),k[V]=P);let M=!1;return{grid:E,update(V){if(M)return;const P=te(V||{});p=P.handlers;const $={};for(const[N,S]of Object.entries(P.config))Object.is(z[N],S)||($[N]=S);for(const N of Object.keys(z))Object.hasOwn(P.config,N)||($[N]=void 0);Object.keys($).length&&E.setAll($),z=P.config;for(const[N,S]of Object.entries(x)){const I=P.imperative[N];Object.is(k[N],I)||I===void 0&&!Object.hasOwn(k,N)||(S(E,I),k[N]=I)}},destroy(){M||(M=!0,re(),E.destroy())}}}}),me("packages/modules/react/viewers.js",function(o,Z){"use strict";Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"partitionViewerProps",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return te}});const x=Z("packages/core/src/internal/util.js").warnOnce,H=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:(l,i)=>l.setRows(Array.isArray(i)?i:[])}),kanban:Object.freeze({rows:(l,i)=>l.setRows(Array.isArray(i)?i:[]),quickFilter:(l,i)=>l.setQuickFilter(typeof i=="string"?i:""),sprint:(l,i)=>l.setSprint(i),epic:(l,i)=>l.setEpic(i),loading:(l,i)=>l.setLoading(!!i),error:(l,i)=>l.setError(i??null)}),gantt:Object.freeze({tasks:(l,i)=>l.setTasks(Array.isArray(i)?i:[]),dependencies:(l,i)=>l.setDependencies(Array.isArray(i)?i:[])}),tabs:Object.freeze({active:(l,i)=>{typeof i=="string"&&l.activate(i)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Q=Object.freeze({chart:"update"});function U(l){return`on${String(l).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const _=Object.freeze(Object.fromEntries(Object.entries(H).map(([l,i])=>[l,Object.freeze(Object.fromEntries(i.map(b=>[U(b),b])))])));function ee(l,i){const b=_[l]||{},G=q[l]||{},E={},p={},z={};for(const[k,A]of Object.entries(i||{})){if(Object.hasOwn(b,k)){z[k]=A;continue}if(Object.hasOwn(G,k)){p[k]=A,E[k]=A;continue}E[k]=A}return{config:E,live:p,handlers:z}}function te(l){const i=String(l.viewer),b=l.mount,G=l.name||i;if(typeof b!="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=ee(i,l.props||{}),p=b(l.element,{...E.config});if(!p||typeof p!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let z=E.handlers,k=E.config;const A={...E.live},re=[];if(typeof p.on=="function")for(const $ of H[i]||[]){const N=U($),S=p.on($,I=>{const C=z[N];typeof C=="function"&&C(I)});typeof S=="function"&&re.push(S)}const M=Q[i],V=q[i]||{};let P=!1;return{instance:p,update($){if(P)return;const N=ee(i,$||{});z=N.handlers;const S={};for(const[C,W]of Object.entries(N.config))Object.is(k[C],W)||(S[C]=W);if(k=N.config,!Object.keys(S).length)return;const I=[];for(const C of Object.keys(S)){const W=V[C];if(W){W(p,S[C]),A[C]=S[C];continue}M&&typeof p[M]=="function"||I.push(C)}if(M&&typeof p[M]=="function"){const C={};for(const W of Object.keys(S))V[W]||(C[W]=S[W]);Object.keys(C).length&&p[M](C)}I.length&&x(`react.viewer.${i}.mountOnly.${I.join(".")}`,`${G}: ${I.map(C=>`\`${C}\``).join(", ")} changed, but ${G} takes ${I.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(!P){P=!0;for(const $ of re)try{$()}catch{}re.length=0,typeof p.destroy=="function"&&p.destroy()}}}}}),me("packages/modules/vue/index.js",function(o,Z){"use strict";Object.defineProperty(o,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"dashedName",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"VIEWER_EVENTS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"VIEWER_APPLY",{enumerable:!0,get:function(){return b}}),Object.defineProperty(o,"viewerHandlerName",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"createViewerController",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return p}}),Object.defineProperty(o,"createLatticeGrid",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"createLatticeGridContext",{enumerable:!0,get:function(){return C}}),Object.defineProperty(o,"createLatticeViewer",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"createLatticeKPI",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"createLatticeChart",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(o,"createLatticeKanban",{enumerable:!0,get:function(){return le}}),Object.defineProperty(o,"createLatticeGantt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"createLatticeLayout",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(o,"createLatticeTabs",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"createLatticeRouter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(o,"createLatticeVue",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return he}});const x=Z("packages/core/src/internal/util.js").warnOnce,H=Z("packages/modules/shared/adapter.js"),q=H.createGridController,Q=H.EVENT_NAMES,U=H.dashedName,_=H.handlerName,ee=H.isHandlerProp,te=H.aliasConfigKey,l=Z("packages/modules/react/viewers.js"),i=l.VIEWER_EVENTS,b=l.VIEWER_APPLY,G=l.viewerHandlerName,E=l.createViewerController,p="default",z=new Set(["class","style","id"]),k=Symbol.for("lattice.vue.gridRegistry"),A=Symbol.for("lattice.vue.router"),re=Symbol.for("lattice.vue.attrsProbe");function M(r,c){if(!r||typeof r.h!="function")throw new TypeError(`${c} needs the Vue runtime: ${c}({ vue, … }).`)}function V(r,c){return typeof r.defineComponent=="function"?r.defineComponent(c):c}function P(r){const c=[],u=Object.keys(r||{}),y=new Set(u);for(const g of u){if(z.has(g)||ee(g))continue;const d=te(g);c.push({to:d!==g&&!y.has(d)?d:g,from:g})}return c}function $(r){const c={};for(const u of z)r&&Object.hasOwn(r,u)&&(c[u]=r[u]);return c}function N(r,c,u){const{watch:y}=r,g=new Map,d={flush:"post"},j=()=>{const m=c(),w=new Set(P(m).map(s=>s.from));for(const s of w)g.has(s)||g.set(s,y(()=>c()[s],u,d));for(const[s,e]of[...g])w.has(s)||(e(),g.delete(s))},K=y(()=>{const m=c();return m[re],Object.keys(m).sort().join("\0")},()=>{j(),u()},d);return j(),()=>{K();for(const m of g.values())m();g.clear()}}function S(r,c,u){const y=c&&typeof c=="object"?c:{},g=u&&typeof u=="object"?u:{};for(const[d,j]of Object.entries(y))Object.is(g[d],j)||r.filters.where(d,typeof j=="function"?j:null);for(const d of Object.keys(g))Object.hasOwn(y,d)||r.filters.where(d,null)}function I(r){const c=r&&r.vue,u=r&&r.createGrid;if(M(c,"createLatticeGrid"),typeof u!="function")throw new TypeError("createLatticeGrid needs createGrid: createLatticeGrid({ vue, createGrid }).");const{h:y,ref:g,shallowRef:d,onMounted:j,onBeforeUnmount:X}=c,K=typeof c.inject=="function"?c.inject:null;return V(c,{name:"LatticeGrid",props:{rowUpdates:{type:Object,default:void 0},predicates:{type:Object,default:void 0},name:{type:String,default:void 0},route:{type:null,default:void 0},routeOptions:{type:Object,default:void 0}},emits:[...Q.map(U),"grid-ready","grid-destroyed"],inheritAttrs:!1,setup(m,w){const s=g(null),e=d(null),t=K?K(k,null):null,n=K?K(A,null):null,a={predicates:void 0};let v=p,O=null;const L=()=>{const f={},T=w.attrs||{};for(const{to:F,from:Y}of P(T))f[F]=T[Y];for(const F of Q)f[_(F)]=Y=>w.emit(U(F),Y);return f};j(()=>{const f=q({createGrid:u,element:s.value,props:L()});e.value=f;const{grid:T}=f;m.predicates&&(S(T,m.predicates,{}),a.predicates=m.predicates),v=typeof m.name=="string"&&m.name?m.name:p,t&&t.publish(v,T),n&&m.route!==void 0&&n.attach(T,m.route,m.routeOptions||{}),w.emit("grid-ready",T),O=N(c,()=>w.attrs||{},()=>{const F=e.value;F&&F.update(L())})}),c.watch(()=>m.predicates,(f,T)=>{const F=e.value;F&&(S(F.grid,f,T),a.predicates=f)},{flush:"post"}),c.watch(()=>m.rowUpdates,f=>{const T=e.value;!T||!f||T.grid.rows.apply(f)},{flush:"post"}),X(()=>{const f=e.value;if(e.value=null,O&&O(),O=null,!!f){if(w.emit("grid-destroyed"),n)try{n.detach(f.grid)}catch{}t&&t.publish(v,null),a.predicates=void 0,f.destroy()}});const h=()=>e.value?e.value.grid:null;return typeof w.expose=="function"&&w.expose({grid:h}),()=>y("div",{...$(w.attrs||{}),ref:s})}})}function C(r){const c=r&&r.vue;if(M(c,"createLatticeGridContext"),typeof c.provide!="function"||typeof c.inject!="function")throw new TypeError("createLatticeGridContext needs a Vue with provide and inject.");const{h:u,shallowRef:y,provide:g,inject:d,computed:j}=c,X=()=>{const s=y({});return{grids:s,publish(e,t){const n=e||p,a=s.value;if(Object.is(a[n],t))return;const v={...a};t==null?delete v[n]:v[n]=t,s.value=v}}},K=()=>{const s=X();return g(k,s),s};return{LatticeGridProvider:V(c,{name:"LatticeGridProvider",setup(s,e){return K(),()=>e.slots&&e.slots.default?e.slots.default():null}}),provideLatticeGrids:K,useLatticeGrid:(s=p)=>{const e=d(k,null);return j(()=>e?e.grids.value[s||p]??null:null)}}}function W(r){const c=r&&r.vue;M(c,"createLatticeViewer");const u=String(r&&r.viewer||""),y=r.mount,g=r.name||`Lattice${u.charAt(0).toUpperCase()}${u.slice(1)}`,d=Array.isArray(r.requires)?r.requires:[],j=r.fromContext||null;if(typeof y!="function")throw new TypeError(`${g} needs a mount factory: createLatticeViewer({ vue, mount }).`);if(!Object.hasOwn(i,u))throw new TypeError(`createLatticeViewer: "${u}" is not a viewer this adapter knows; expected one of ${Object.keys(i).join(", ")}.`);const{h:X,ref:K,shallowRef:m,onMounted:w,onBeforeUnmount:s}=c,e=typeof c.inject=="function"?c.inject:null,t=i[u];return V(c,{name:g,props:{grid:{type:null,default:void 0},gridName:{type:String,default:void 0}},emits:[...t.map(U),"ready","destroyed"],inheritAttrs:!1,setup(n,a){const v=K(null),O=m(null),L=j&&e?e(k,null):null;let h=null,f=null;const T=()=>{if(!j)return null;if(n.grid!==void 0)return n.grid;if(!L)return null;const R=typeof n.gridName=="string"&&n.gridName?n.gridName:p;return L.grids.value[R]??null},F=()=>{const R={},oe=a.attrs||{};for(const{to:ne,from:pe}of P(oe))R[ne]=oe[pe];if(j){const ne=T();ne&&(R[j]=ne)}for(const ne of t)R[G(ne)]=pe=>a.emit(U(ne),pe);return R},Y=()=>{if(O.value||!v.value)return;const R=F();if(d.some(ne=>R[ne]===null||R[ne]===void 0))return;const oe=E({viewer:u,mount:y,element:v.value,props:R,name:g});O.value=oe,f=j?R[j]??null:null,a.emit("ready",oe.instance)},ce=()=>{const R=O.value;O.value=null,f=null,R&&(a.emit("destroyed"),R.destroy())};w(()=>{Y(),h=N(c,()=>a.attrs||{},()=>{const R=O.value;R?R.update(F()):Y()})}),c.watch(T,R=>{O.value&&Object.is(f,R??null)||(ce(),Y())},{flush:"post"}),s(()=>{h&&h(),h=null,ce()});const B=()=>O.value?O.value.instance:null;return typeof a.expose=="function"&&a.expose({instance:B}),()=>X("div",{...$(a.attrs||{}),ref:v})}})}function ae(r){const c=r&&r.createKPI;if(typeof c!="function")throw new TypeError("createLatticeKPI needs createKPI: createLatticeKPI({ vue, createKPI }).");return W({vue:r.vue,viewer:"kpi",name:"LatticeKPI",mount:(u,y)=>c(u,y),fromContext:"grid"})}function ue(r){const c=r&&r.createChart;if(typeof c!="function")throw new TypeError("createLatticeChart needs createChart: createLatticeChart({ vue, createChart }).");return W({vue:r.vue,viewer:"chart",name:"LatticeChart",mount:(u,y)=>c({...y,container:u}),requires:["grid"],fromContext:"grid"})}function le(r){const c=r&&r.createKanban;if(typeof c!="function")throw new TypeError("createLatticeKanban needs createKanban: createLatticeKanban({ vue, createKanban }).");return W({vue:r.vue,viewer:"kanban",name:"LatticeKanban",mount:(u,y)=>c(u,y),fromContext:"grid"})}function se(r){const c=r&&r.createGantt;if(typeof c!="function")throw new TypeError("createLatticeGantt needs createGantt: createLatticeGantt({ vue, createGantt }).");return W({vue:r.vue,viewer:"gantt",name:"LatticeGantt",mount:(u,y)=>c({...y,element:u})})}function fe(r){const c=r&&r.createLayout;if(typeof c!="function")throw new TypeError("createLatticeLayout needs createLayout: createLatticeLayout({ vue, createLayout }).");return W({vue:r.vue,viewer:"layout",name:"LatticeLayout",mount:(u,y)=>c(u,y)})}function be(r){return[String(r),`tab-${String(r)}`]}function de(r){const c=r&&r.vue,u=r&&r.createTabs;if(M(c,"createLatticeTabs"),typeof u!="function")throw new TypeError("createLatticeTabs needs createTabs: createLatticeTabs({ vue, createTabs }).");if(!c.Teleport)throw new TypeError("createLatticeTabs needs a Vue with Teleport, which is how a tab's slot reaches the strip's panel.");const{h:y,ref:g,shallowRef:d,Teleport:j,Fragment:X,onMounted:K,onBeforeUnmount:m}=c;return V(c,{name:"LatticeTabs",props:{tabs:{type:Array,default:()=>[]},active:{type:String,default:void 0}},emits:[...i.tabs.map(U),"ready","destroyed"],inheritAttrs:!1,setup(w,s){const e=g(null),t=d(null),n=d({}),a=[];let v=null;const O=h=>{const f=s.slots||{};for(const T of be(h))if(typeof f[T]=="function")return f[T];return null};K(()=>{const h={},f=s.attrs||{};for(const{to:ce,from:B}of P(f))h[ce]=f[B];const F=(Array.isArray(w.tabs)?w.tabs:[]).map(ce=>{const B=ce;return O(B.id)?{...B,view:R=>(n.value={...n.value,[B.id]:R},{destroy(){if(!Object.hasOwn(n.value,B.id))return;const oe={...n.value};delete oe[B.id],n.value=oe}})}:B}),Y=u(e.value,{...h,tabs:F,createGrid:r.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a slot nor a `createGrid` to build it with. Give the tab a <template #‹id›> slot, or pass createGrid into createLatticeTabs.")}),...typeof w.active=="string"?{active:w.active}:{}});t.value=Y,v=w.tabs;for(const ce of i.tabs){const B=Y.on(ce,R=>s.emit(U(ce),R));typeof B=="function"&&a.push(B)}s.emit("ready",Y)}),c.watch(()=>w.active,h=>{const f=t.value;f&&typeof h=="string"&&f.activeId!==h&&f.activate(h)},{flush:"post"}),c.watch(()=>w.tabs,h=>{!t.value||Object.is(v,h)||(v=h,x("vue.tabs.mountOnly.tabs","LatticeTabs: `tabs` changed (a label, a badge or a descriptor), but the strip takes it only when created — the module has no way to repaint an existing tab. Nothing was applied and the strip was NOT rebuilt — rebuilding it would lose whichever tab is open and any state its content holds. Give the component a `key` that changes when a genuine rebuild is wanted; a live badge otherwise needs to live in your own render."))},{flush:"post"}),m(()=>{const h=t.value;t.value=null;for(const f of a)try{f()}catch{}a.length=0,h&&(s.emit("destroyed"),h.destroy(),n.value={})});const L=()=>t.value;return typeof s.expose=="function"&&s.expose({instance:L,tabs:L}),()=>{const h=[y("div",{...$(s.attrs||{}),ref:e})];for(const f of Array.isArray(w.tabs)?w.tabs:[]){const T=f,F=n.value[T.id],Y=O(T.id);!F||!Y||h.push(y(j,{to:F,key:T.id},Y()))}return y(X,null,h)}}})}function ie(r){const c=r&&r.vue,u=r&&r.createDataRouter;if(M(c,"createLatticeRouter"),typeof c.provide!="function"||typeof c.inject!="function")throw new TypeError("createLatticeRouter needs a Vue with provide and inject.");if(typeof u!="function")throw new TypeError("createLatticeRouter needs createDataRouter: createLatticeRouter({ vue, createDataRouter }).");const{provide:y,inject:g}=c,d=K=>{let m=null,w=!1;const s={get router(){return!m&&!w&&(m=u(K||{})),m},attach(e,t,n){w||s.router.attach(e,t,n||{})},detach(e){w||!m||m.detach(e)},destroy(){w=!0;const e=m;m=null,e&&e.destroy()}};return y(A,s),c.onScopeDispose(()=>s.destroy()),s},j=()=>g(A,null),X=V(c,{name:"LatticeRouterProvider",props:{config:{type:Object,default:()=>({})}},setup(K,m){return d(K.config),()=>m.slots&&m.slots.default?m.slots.default():null}});return{provideLatticeRouter:d,useLatticeRouter:j,LatticeRouterProvider:X}}function ye(r){const c=r&&r.vue;M(c,"createLatticeVue");const{LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g}=C({vue:c}),d={LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g};return typeof r.createGrid=="function"&&(d.LatticeGrid=I({vue:c,createGrid:r.createGrid})),typeof r.createKPI=="function"&&(d.LatticeKPI=ae({vue:c,createKPI:r.createKPI})),typeof r.createChart=="function"&&(d.LatticeChart=ue({vue:c,createChart:r.createChart})),typeof r.createKanban=="function"&&(d.LatticeKanban=le({vue:c,createKanban:r.createKanban})),typeof r.createGantt=="function"&&(d.LatticeGantt=se({vue:c,createGantt:r.createGantt})),typeof r.createLayout=="function"&&(d.LatticeLayout=fe({vue:c,createLayout:r.createLayout})),typeof r.createTabs=="function"&&(d.LatticeTabs=de({vue:c,createTabs:r.createTabs,createGrid:r.createGrid})),typeof r.createDataRouter=="function"&&Object.assign(d,ie({vue:c,createDataRouter:r.createDataRouter})),d}const he=I});const D=Oe("packages/modules/vue/index.js"),ve=D.EVENT_NAMES,je=D.dashedName,Le=D.VIEWER_EVENTS,Ee=D.VIEWER_APPLY,Pe=D.viewerHandlerName,Te=D.createViewerController,Re=D.DEFAULT_GRID_NAME,Ae=D.createLatticeGrid,Ne=D.createLatticeGridContext,Ce=D.createLatticeViewer,Ge=D.createLatticeKPI,ke=D.createLatticeChart,Se=D.createLatticeKanban,Ve=D.createLatticeGantt,Ie=D.createLatticeLayout,Ke=D.createLatticeTabs,De=D.createLatticeRouter,ze=D.createLatticeVue;var Me=D.default;export{Re as DEFAULT_GRID_NAME,ve as EVENT_NAMES,Ee as VIEWER_APPLY,Le as VIEWER_EVENTS,ke as createLatticeChart,Ve as createLatticeGantt,Ae as createLatticeGrid,Ne as createLatticeGridContext,Ge as createLatticeKPI,Se as createLatticeKanban,Ie as createLatticeLayout,De as createLatticeRouter,Ke as createLatticeTabs,Ce as createLatticeViewer,ze as createLatticeVue,Te as createViewerController,je as dashedName,Me as default,Pe as viewerHandlerName};
7
7
 
8
8
  //# sourceMappingURL=vue.esm.min.js.map
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Lattice Grid 1.71.1, vue module
2
+ * Lattice Grid 1.71.3, 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 ge=Object.create(null),we=Object.create(null);function ce(i,Y){ge[i]=Y}function Oe(i){var Y=we[i];if(Y)return Y;var Z=Object.create(null);we[i]=Z;var X=ge[i];if(!X)throw new Error("[lattice] missing module: "+i);return X(Z,Oe),Z}ce("packages/core/src/internal/util.js",function(i,Y){"use strict";Object.defineProperty(i,"VERSION",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"reportedWarnings",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(i,"infoOnce",{enumerable:!0,get:function(){return G}}),Object.defineProperty(i,"resetWarnings",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"fail",{enumerable:!0,get:function(){return h}}),Object.defineProperty(i,"invariant",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"DEV",{enumerable:!0,get:function(){return N}}),Object.defineProperty(i,"isObject",{enumerable:!0,get:function(){return k}}),Object.defineProperty(i,"isFunction",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(i,"isNil",{enumerable:!0,get:function(){return z}}),Object.defineProperty(i,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(i,"isCtor",{enumerable:!0,get:function(){return E}}),Object.defineProperty(i,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(i,"pathSetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"setPath",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"humanise",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"escapeHtml",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"titleCase",{enumerable:!0,get:function(){return se}}),Object.defineProperty(i,"expand",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(i,"merge",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(i,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(i,"Lru",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(i,"collator",{enumerable:!0,get:function(){return o}}),Object.defineProperty(i,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(i,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(i,"nextFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(i,"cancelFrame",{enumerable:!0,get:function(){return v}}),Object.defineProperty(i,"frameBatched",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(i,"settleDebounce",{enumerable:!0,get:function(){return K}}),Object.defineProperty(i,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(i,"uid",{enumerable:!0,get:function(){return s}});const Z="1.71.1";async function X(){return Z}const W="1.71.1",q=new Set,J=2e3;function H(e){if(q.add(e),q.size>J){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const x=[],_=500;function ee(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:l(a)).join(" "),at:Date.now()}),x.length>_&&x.shift()}function l(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function c(){return x.map(e=>({...e}))}function b(e,...t){q.has(e)||(H(e),ee(e,"warn",t),console.warn("[lattice]",...t))}function G(e,...t){q.has(e)||(H(e),ee(e,"info",t),console.info("[lattice]",...t))}function L(){q.clear(),x.length=0}function h(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function D(e,t){e||h(t)}const N=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function k(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ne(e){return typeof e=="function"}function z(e){return e==null}function V(e){return e==null||e===""}function E(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const $=new Map;function A(e){let t=$.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=j=>{let O=j;for(let P=0;P<a;P++){if(O==null)return;O=O[n[P]]}return O}}return $.set(e,t),t}const S=new Map;function I(e){let t=S.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=(j,O)=>{let P=j;for(let p=0;p<a;p++){if(P==null)return;const f=n[p];P[f]==null&&(P[f]={}),P=P[f]}P!=null&&(P[n[a]]=O)}}return S.set(e,t),t}function C(e,t){return A(t)(e)}function M(e,t,n){I(t)(e,n)}function ae(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 ue={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function le(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ue[n]):t}function se(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function fe(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:k(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const de=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ie(e,t){if(!k(e))return k(t)?{...t}:t;if(!k(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(de.has(a))continue;const j=t[a];j!==void 0&&(n[a]=k(j)&&k(n[a])?ie(n[a],j):j)}return n}function ye(e,t){if(!k(e)||!k(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class pe{#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 u(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 g=typeof requestAnimationFrame=="function";function d(e){return g?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function v(e){e!=null&&(g?cancelAnimationFrame(e):clearTimeout(e))}function Q(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},j=(...O)=>{n=O,t===null&&(t=d(a))};return j.cancel=()=>{v(t),t=null,n=null},j.flush=()=>{t!==null&&(v(t),a())},j}function K(e,t){let n=null,a=null;const j=()=>{if(n=null,a===null)return;const p=a;a=null,e(...p),O()},O=()=>{n=setTimeout(j,t),typeof n?.unref=="function"&&n.unref()},P=(...p)=>{n===null?(e(...p),O()):(a=p,clearTimeout(n),O())};return P.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const p=a;a=null,e(...p)},P.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},P.pending=()=>n!==null||a!==null,P}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function s(e="l"){return`${e}${(++w).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(i,Y){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"handlerName",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"aliasConfigKey",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"isHandlerProp",{enumerable:!0,get:function(){return _}}),Object.defineProperty(i,"partition",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(i,"createGridController",{enumerable:!0,get:function(){return l}});const Z=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","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(c,b)=>c.sort.set(b||[]),filters:(c,b)=>c.filters.set(b||null),quickFilter:(c,b)=>{if(b&&typeof b=="object"){c.filters.quick(b.text||"",{mode:b.mode});return}c.filters.quick(typeof b=="string"?b:"")},selectedKeys:(c,b)=>c.selection.set(Array.isArray(b)?b:[])});function W(c){return`on${String(c).split(":").map(G=>G.charAt(0).toUpperCase()+G.slice(1)).join("")}`}function q(c){return String(c).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function H(c){return Object.hasOwn(J,c)?J[c]:c}const x=Object.freeze(Object.fromEntries(Z.map(c=>[W(c),c])));function _(c){return Object.hasOwn(x,c)}function ee(c){const b={},G={},L={};for(const[h,D]of Object.entries(c||{})){if(_(h)){L[h]=D;continue}if(Object.hasOwn(X,h)){G[h]=D;continue}b[h]=D}return{config:b,imperative:G,handlers:L}}function l(c){const b=c.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=ee(c.props||{}),L=b(c.element,{...G.config});let h=G.handlers,D=G.config,N={};const k=V=>{if(!V||typeof V.type!="string")return;const E=h[W(V.type)];typeof E=="function"&&E(V)},ne=L.on("*",k);for(const[V,E]of Object.entries(G.imperative))E!==void 0&&(X[V](L,E),N[V]=E);let z=!1;return{grid:L,update(V){if(z)return;const E=ee(V||{});h=E.handlers;const $={};for(const[A,S]of Object.entries(E.config))Object.is(D[A],S)||($[A]=S);for(const A of Object.keys(D))Object.hasOwn(E.config,A)||($[A]=void 0);Object.keys($).length&&L.setAll($),D=E.config;for(const[A,S]of Object.entries(X)){const I=E.imperative[A];Object.is(N[A],I)||I===void 0&&!Object.hasOwn(N,A)||(S(L,I),N[A]=I)}},destroy(){z||(z=!0,ne(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(i,Y){"use strict";Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"partitionViewerProps",{enumerable:!0,get:function(){return _}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return ee}});const X=Y("packages/core/src/internal/util.js").warnOnce,W=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:(l,c)=>l.setRows(Array.isArray(c)?c:[])}),kanban:Object.freeze({rows:(l,c)=>l.setRows(Array.isArray(c)?c:[]),quickFilter:(l,c)=>l.setQuickFilter(typeof c=="string"?c:""),sprint:(l,c)=>l.setSprint(c),epic:(l,c)=>l.setEpic(c),loading:(l,c)=>l.setLoading(!!c),error:(l,c)=>l.setError(c??null)}),gantt:Object.freeze({tasks:(l,c)=>l.setTasks(Array.isArray(c)?c:[]),dependencies:(l,c)=>l.setDependencies(Array.isArray(c)?c:[])}),tabs:Object.freeze({active:(l,c)=>{typeof c=="string"&&l.activate(c)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function H(l){return`on${String(l).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(W).map(([l,c])=>[l,Object.freeze(Object.fromEntries(c.map(b=>[H(b),b])))])));function _(l,c){const b=x[l]||{},G=q[l]||{},L={},h={},D={};for(const[N,k]of Object.entries(c||{})){if(Object.hasOwn(b,N)){D[N]=k;continue}if(Object.hasOwn(G,N)){h[N]=k,L[N]=k;continue}L[N]=k}return{config:L,live:h,handlers:D}}function ee(l){const c=String(l.viewer),b=l.mount,G=l.name||c;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${c}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=_(c,l.props||{}),h=b(l.element,{...L.config});if(!h||typeof h!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let D=L.handlers,N=L.config;const k={...L.live},ne=[];if(typeof h.on=="function")for(const $ of W[c]||[]){const A=H($),S=h.on($,I=>{const C=D[A];typeof C=="function"&&C(I)});typeof S=="function"&&ne.push(S)}const z=J[c],V=q[c]||{};let E=!1;return{instance:h,update($){if(E)return;const A=_(c,$||{});D=A.handlers;const S={};for(const[C,M]of Object.entries(A.config))Object.is(N[C],M)||(S[C]=M);if(N=A.config,!Object.keys(S).length)return;const I=[];for(const C of Object.keys(S)){const M=V[C];if(M){M(h,S[C]),k[C]=S[C];continue}z&&typeof h[z]=="function"||I.push(C)}if(z&&typeof h[z]=="function"){const C={};for(const M of Object.keys(S))V[M]||(C[M]=S[M]);Object.keys(C).length&&h[z](C)}I.length&&X(`react.viewer.${c}.mountOnly.${I.join(".")}`,`${G}: ${I.map(C=>`\`${C}\``).join(", ")} changed, but ${G} takes ${I.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(!E){E=!0;for(const $ of ne)try{$()}catch{}ne.length=0,typeof h.destroy=="function"&&h.destroy()}}}}}),ce("packages/modules/vue/index.js",function(i,Y){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return b}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return G}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return h}}),Object.defineProperty(i,"createLatticeGrid",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"createLatticeGridContext",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"createLatticeViewer",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"createLatticeKPI",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"createLatticeChart",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(i,"createLatticeKanban",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"createLatticeGantt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(i,"createLatticeLayout",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"createLatticeTabs",{enumerable:!0,get:function(){return de}}),Object.defineProperty(i,"createLatticeRouter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(i,"createLatticeVue",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return pe}});const X=Y("packages/core/src/internal/util.js").warnOnce,W=Y("packages/modules/shared/adapter.js"),q=W.createGridController,J=W.EVENT_NAMES,H=W.dashedName,x=W.handlerName,_=W.isHandlerProp,ee=W.aliasConfigKey,l=Y("packages/modules/react/viewers.js"),c=l.VIEWER_EVENTS,b=l.VIEWER_APPLY,G=l.viewerHandlerName,L=l.createViewerController,h="default",D=new Set(["class","style","id"]),N=Symbol.for("lattice.vue.gridRegistry"),k=Symbol.for("lattice.vue.router"),ne=Symbol.for("lattice.vue.attrsProbe");function z(r,o){if(!r||typeof r.h!="function")throw new TypeError(`${o} needs the Vue runtime: ${o}({ vue, … }).`)}function V(r,o){return typeof r.defineComponent=="function"?r.defineComponent(o):o}function E(r){const o=[],u=Object.keys(r||{}),y=new Set(u);for(const g of u){if(D.has(g)||_(g))continue;const d=ee(g);o.push({to:d!==g&&!y.has(d)?d:g,from:g})}return o}function $(r){const o={};for(const u of D)r&&Object.hasOwn(r,u)&&(o[u]=r[u]);return o}function A(r,o,u){const{watch:y}=r,g=new Map,d={flush:"post"},v=()=>{const m=o(),w=new Set(E(m).map(s=>s.from));for(const s of w)g.has(s)||g.set(s,y(()=>o()[s],u,d));for(const[s,e]of[...g])w.has(s)||(e(),g.delete(s))},K=y(()=>{const m=o();return m[ne],Object.keys(m).sort().join("\0")},()=>{v(),u()},d);return v(),()=>{K();for(const m of g.values())m();g.clear()}}function S(r,o,u){const y=o&&typeof o=="object"?o:{},g=u&&typeof u=="object"?u:{};for(const[d,v]of Object.entries(y))Object.is(g[d],v)||r.filters.where(d,typeof v=="function"?v:null);for(const d of Object.keys(g))Object.hasOwn(y,d)||r.filters.where(d,null)}function I(r){const o=r&&r.vue,u=r&&r.createGrid;if(z(o,"createLatticeGrid"),typeof u!="function")throw new TypeError("createLatticeGrid needs createGrid: createLatticeGrid({ vue, createGrid }).");const{h:y,ref:g,shallowRef:d,onMounted:v,onBeforeUnmount:Q}=o,K=typeof o.inject=="function"?o.inject:null;return V(o,{name:"LatticeGrid",props:{rowUpdates:{type:Object,default:void 0},predicates:{type:Object,default:void 0},name:{type:String,default:void 0},route:{type:null,default:void 0},routeOptions:{type:Object,default:void 0}},emits:[...J.map(H),"grid-ready","grid-destroyed"],inheritAttrs:!1,setup(m,w){const s=g(null),e=d(null),t=K?K(N,null):null,n=K?K(k,null):null,a={predicates:void 0};let j=h,O=null;const P=()=>{const f={},T=w.attrs||{};for(const{to:F,from:U}of E(T))f[F]=T[U];for(const F of J)f[x(F)]=U=>w.emit(H(F),U);return f};v(()=>{const f=q({createGrid:u,element:s.value,props:P()});e.value=f;const{grid:T}=f;m.predicates&&(S(T,m.predicates,{}),a.predicates=m.predicates),j=typeof m.name=="string"&&m.name?m.name:h,t&&t.publish(j,T),n&&m.route!==void 0&&n.attach(T,m.route,m.routeOptions||{}),w.emit("grid-ready",T),O=A(o,()=>w.attrs||{},()=>{const F=e.value;F&&F.update(P())})}),o.watch(()=>m.predicates,(f,T)=>{const F=e.value;F&&(S(F.grid,f,T),a.predicates=f)},{flush:"post"}),o.watch(()=>m.rowUpdates,f=>{const T=e.value;!T||!f||T.grid.rows.apply(f)},{flush:"post"}),Q(()=>{const f=e.value;if(e.value=null,O&&O(),O=null,!!f){if(w.emit("grid-destroyed"),n)try{n.detach(f.grid)}catch{}t&&t.publish(j,null),a.predicates=void 0,f.destroy()}});const p=()=>e.value?e.value.grid:null;return typeof w.expose=="function"&&w.expose({grid:p}),()=>y("div",{...$(w.attrs||{}),ref:s})}})}function C(r){const o=r&&r.vue;if(z(o,"createLatticeGridContext"),typeof o.provide!="function"||typeof o.inject!="function")throw new TypeError("createLatticeGridContext needs a Vue with provide and inject.");const{h:u,shallowRef:y,provide:g,inject:d,computed:v}=o,Q=()=>{const s=y({});return{grids:s,publish(e,t){const n=e||h,a=s.value;if(Object.is(a[n],t))return;const j={...a};t==null?delete j[n]:j[n]=t,s.value=j}}},K=()=>{const s=Q();return g(N,s),s};return{LatticeGridProvider:V(o,{name:"LatticeGridProvider",setup(s,e){return K(),()=>e.slots&&e.slots.default?e.slots.default():null}}),provideLatticeGrids:K,useLatticeGrid:(s=h)=>{const e=d(N,null);return v(()=>e?e.grids.value[s||h]??null:null)}}}function M(r){const o=r&&r.vue;z(o,"createLatticeViewer");const u=String(r&&r.viewer||""),y=r.mount,g=r.name||`Lattice${u.charAt(0).toUpperCase()}${u.slice(1)}`,d=Array.isArray(r.requires)?r.requires:[],v=r.fromContext||null;if(typeof y!="function")throw new TypeError(`${g} needs a mount factory: createLatticeViewer({ vue, mount }).`);if(!Object.hasOwn(c,u))throw new TypeError(`createLatticeViewer: "${u}" is not a viewer this adapter knows; expected one of ${Object.keys(c).join(", ")}.`);const{h:Q,ref:K,shallowRef:m,onMounted:w,onBeforeUnmount:s}=o,e=typeof o.inject=="function"?o.inject:null,t=c[u];return V(o,{name:g,props:{grid:{type:null,default:void 0},gridName:{type:String,default:void 0}},emits:[...t.map(H),"ready","destroyed"],inheritAttrs:!1,setup(n,a){const j=K(null),O=m(null),P=v&&e?e(N,null):null;let p=null,f=null;const T=()=>{if(!v)return null;if(n.grid!==void 0)return n.grid;if(!P)return null;const R=typeof n.gridName=="string"&&n.gridName?n.gridName:h;return P.grids.value[R]??null},F=()=>{const R={},oe=a.attrs||{};for(const{to:te,from:he}of E(oe))R[te]=oe[he];if(v){const te=T();te&&(R[v]=te)}for(const te of t)R[G(te)]=he=>a.emit(H(te),he);return R},U=()=>{if(O.value||!j.value)return;const R=F();if(d.some(te=>R[te]===null||R[te]===void 0))return;const oe=L({viewer:u,mount:y,element:j.value,props:R,name:g});O.value=oe,f=v?R[v]??null:null,a.emit("ready",oe.instance)},re=()=>{const R=O.value;O.value=null,f=null,R&&(a.emit("destroyed"),R.destroy())};w(()=>{U(),p=A(o,()=>a.attrs||{},()=>{const R=O.value;R?R.update(F()):U()})}),o.watch(T,R=>{O.value&&Object.is(f,R??null)||(re(),U())},{flush:"post"}),s(()=>{p&&p(),p=null,re()});const B=()=>O.value?O.value.instance:null;return typeof a.expose=="function"&&a.expose({instance:B}),()=>Q("div",{...$(a.attrs||{}),ref:j})}})}function ae(r){const o=r&&r.createKPI;if(typeof o!="function")throw new TypeError("createLatticeKPI needs createKPI: createLatticeKPI({ vue, createKPI }).");return M({vue:r.vue,viewer:"kpi",name:"LatticeKPI",mount:(u,y)=>o(u,y),fromContext:"grid"})}function ue(r){const o=r&&r.createChart;if(typeof o!="function")throw new TypeError("createLatticeChart needs createChart: createLatticeChart({ vue, createChart }).");return M({vue:r.vue,viewer:"chart",name:"LatticeChart",mount:(u,y)=>o({...y,container:u}),requires:["grid"],fromContext:"grid"})}function le(r){const o=r&&r.createKanban;if(typeof o!="function")throw new TypeError("createLatticeKanban needs createKanban: createLatticeKanban({ vue, createKanban }).");return M({vue:r.vue,viewer:"kanban",name:"LatticeKanban",mount:(u,y)=>o(u,y),fromContext:"grid"})}function se(r){const o=r&&r.createGantt;if(typeof o!="function")throw new TypeError("createLatticeGantt needs createGantt: createLatticeGantt({ vue, createGantt }).");return M({vue:r.vue,viewer:"gantt",name:"LatticeGantt",mount:(u,y)=>o({...y,element:u})})}function fe(r){const o=r&&r.createLayout;if(typeof o!="function")throw new TypeError("createLatticeLayout needs createLayout: createLatticeLayout({ vue, createLayout }).");return M({vue:r.vue,viewer:"layout",name:"LatticeLayout",mount:(u,y)=>o(u,y)})}function be(r){return[String(r),`tab-${String(r)}`]}function de(r){const o=r&&r.vue,u=r&&r.createTabs;if(z(o,"createLatticeTabs"),typeof u!="function")throw new TypeError("createLatticeTabs needs createTabs: createLatticeTabs({ vue, createTabs }).");if(!o.Teleport)throw new TypeError("createLatticeTabs needs a Vue with Teleport, which is how a tab's slot reaches the strip's panel.");const{h:y,ref:g,shallowRef:d,Teleport:v,Fragment:Q,onMounted:K,onBeforeUnmount:m}=o;return V(o,{name:"LatticeTabs",props:{tabs:{type:Array,default:()=>[]},active:{type:String,default:void 0}},emits:[...c.tabs.map(H),"ready","destroyed"],inheritAttrs:!1,setup(w,s){const e=g(null),t=d(null),n=d({}),a=[];let j=null;const O=p=>{const f=s.slots||{};for(const T of be(p))if(typeof f[T]=="function")return f[T];return null};K(()=>{const p={},f=s.attrs||{};for(const{to:re,from:B}of E(f))p[re]=f[B];const F=(Array.isArray(w.tabs)?w.tabs:[]).map(re=>{const B=re;return O(B.id)?{...B,view:R=>(n.value={...n.value,[B.id]:R},{destroy(){if(!Object.hasOwn(n.value,B.id))return;const oe={...n.value};delete oe[B.id],n.value=oe}})}:B}),U=u(e.value,{...p,tabs:F,createGrid:r.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a slot nor a `createGrid` to build it with. Give the tab a <template #‹id›> slot, or pass createGrid into createLatticeTabs.")}),...typeof w.active=="string"?{active:w.active}:{}});t.value=U,j=w.tabs;for(const re of c.tabs){const B=U.on(re,R=>s.emit(H(re),R));typeof B=="function"&&a.push(B)}s.emit("ready",U)}),o.watch(()=>w.active,p=>{const f=t.value;f&&typeof p=="string"&&f.activeId!==p&&f.activate(p)},{flush:"post"}),o.watch(()=>w.tabs,p=>{!t.value||Object.is(j,p)||(j=p,X("vue.tabs.mountOnly.tabs","LatticeTabs: `tabs` changed (a label, a badge or a descriptor), but the strip takes it only when created — the module has no way to repaint an existing tab. Nothing was applied and the strip was NOT rebuilt — rebuilding it would lose whichever tab is open and any state its content holds. Give the component a `key` that changes when a genuine rebuild is wanted; a live badge otherwise needs to live in your own render."))},{flush:"post"}),m(()=>{const p=t.value;t.value=null;for(const f of a)try{f()}catch{}a.length=0,p&&(s.emit("destroyed"),p.destroy(),n.value={})});const P=()=>t.value;return typeof s.expose=="function"&&s.expose({instance:P,tabs:P}),()=>{const p=[y("div",{...$(s.attrs||{}),ref:e})];for(const f of Array.isArray(w.tabs)?w.tabs:[]){const T=f,F=n.value[T.id],U=O(T.id);!F||!U||p.push(y(v,{to:F,key:T.id},U()))}return y(Q,null,p)}}})}function ie(r){const o=r&&r.vue,u=r&&r.createDataRouter;if(z(o,"createLatticeRouter"),typeof o.provide!="function"||typeof o.inject!="function")throw new TypeError("createLatticeRouter needs a Vue with provide and inject.");if(typeof u!="function")throw new TypeError("createLatticeRouter needs createDataRouter: createLatticeRouter({ vue, createDataRouter }).");const{provide:y,inject:g}=o,d=K=>{let m=null,w=!1;const s={get router(){return!m&&!w&&(m=u(K||{})),m},attach(e,t,n){w||s.router.attach(e,t,n||{})},detach(e){w||!m||m.detach(e)},destroy(){w=!0;const e=m;m=null,e&&e.destroy()}};return y(k,s),o.onScopeDispose(()=>s.destroy()),s},v=()=>g(k,null),Q=V(o,{name:"LatticeRouterProvider",props:{config:{type:Object,default:()=>({})}},setup(K,m){return d(K.config),()=>m.slots&&m.slots.default?m.slots.default():null}});return{provideLatticeRouter:d,useLatticeRouter:v,LatticeRouterProvider:Q}}function ye(r){const o=r&&r.vue;z(o,"createLatticeVue");const{LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g}=C({vue:o}),d={LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g};return typeof r.createGrid=="function"&&(d.LatticeGrid=I({vue:o,createGrid:r.createGrid})),typeof r.createKPI=="function"&&(d.LatticeKPI=ae({vue:o,createKPI:r.createKPI})),typeof r.createChart=="function"&&(d.LatticeChart=ue({vue:o,createChart:r.createChart})),typeof r.createKanban=="function"&&(d.LatticeKanban=le({vue:o,createKanban:r.createKanban})),typeof r.createGantt=="function"&&(d.LatticeGantt=se({vue:o,createGantt:r.createGantt})),typeof r.createLayout=="function"&&(d.LatticeLayout=fe({vue:o,createLayout:r.createLayout})),typeof r.createTabs=="function"&&(d.LatticeTabs=de({vue:o,createTabs:r.createTabs,createGrid:r.createGrid})),typeof r.createDataRouter=="function"&&Object.assign(d,ie({vue:o,createDataRouter:r.createDataRouter})),d}const pe=I});var me=Oe("packages/modules/vue/index.js");typeof module=="object"&&module.exports?module.exports=me:typeof define=="function"&&define.amd?define(function(){return me}):je.LatticeGridVue=me})(typeof globalThis<"u"?globalThis:this);
6
+ (function(je){"use strict";var ge=Object.create(null),we=Object.create(null);function ce(i,Y){ge[i]=Y}function Oe(i){var Y=we[i];if(Y)return Y;var Z=Object.create(null);we[i]=Z;var X=ge[i];if(!X)throw new Error("[lattice] missing module: "+i);return X(Z,Oe),Z}ce("packages/core/src/internal/util.js",function(i,Y){"use strict";Object.defineProperty(i,"VERSION",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"reportedWarnings",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(i,"infoOnce",{enumerable:!0,get:function(){return G}}),Object.defineProperty(i,"resetWarnings",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"fail",{enumerable:!0,get:function(){return h}}),Object.defineProperty(i,"invariant",{enumerable:!0,get:function(){return D}}),Object.defineProperty(i,"DEV",{enumerable:!0,get:function(){return N}}),Object.defineProperty(i,"isObject",{enumerable:!0,get:function(){return k}}),Object.defineProperty(i,"isFunction",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(i,"isNil",{enumerable:!0,get:function(){return z}}),Object.defineProperty(i,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(i,"isCtor",{enumerable:!0,get:function(){return E}}),Object.defineProperty(i,"pathGetter",{enumerable:!0,get:function(){return A}}),Object.defineProperty(i,"pathSetter",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"getPath",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"setPath",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"humanise",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"escapeHtml",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"titleCase",{enumerable:!0,get:function(){return se}}),Object.defineProperty(i,"expand",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"toArray",{enumerable:!0,get:function(){return be}}),Object.defineProperty(i,"merge",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(i,"mergeRow",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(i,"Lru",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(i,"collator",{enumerable:!0,get:function(){return o}}),Object.defineProperty(i,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(i,"now",{enumerable:!0,get:function(){return y}}),Object.defineProperty(i,"nextFrame",{enumerable:!0,get:function(){return d}}),Object.defineProperty(i,"cancelFrame",{enumerable:!0,get:function(){return v}}),Object.defineProperty(i,"frameBatched",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(i,"settleDebounce",{enumerable:!0,get:function(){return K}}),Object.defineProperty(i,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(i,"uid",{enumerable:!0,get:function(){return s}});const Z="1.71.3";async function X(){return Z}const W="1.71.3",q=new Set,J=2e3;function H(e){if(q.add(e),q.size>J){const t=q.values().next().value;t!==void 0&&q.delete(t)}}const x=[],_=500;function ee(e,t,n){x.push({key:e,level:t,message:n.map(a=>typeof a=="string"?a:l(a)).join(" "),at:Date.now()}),x.length>_&&x.shift()}function l(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function c(){return x.map(e=>({...e}))}function b(e,...t){q.has(e)||(H(e),ee(e,"warn",t),console.warn("[lattice]",...t))}function G(e,...t){q.has(e)||(H(e),ee(e,"info",t),console.info("[lattice]",...t))}function L(){q.clear(),x.length=0}function h(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function D(e,t){e||h(t)}const N=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function k(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ne(e){return typeof e=="function"}function z(e){return e==null}function V(e){return e==null||e===""}function E(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const $=new Map;function A(e){let t=$.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),a=n.length;t=j=>{let O=j;for(let P=0;P<a;P++){if(O==null)return;O=O[n[P]]}return O}}return $.set(e,t),t}const S=new Map;function I(e){let t=S.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=(j,O)=>{let P=j;for(let p=0;p<a;p++){if(P==null)return;const f=n[p];P[f]==null&&(P[f]={}),P=P[f]}P!=null&&(P[n[a]]=O)}}return S.set(e,t),t}function C(e,t){return A(t)(e)}function M(e,t,n){I(t)(e,n)}function ae(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 ue={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function le(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ue[n]):t}function se(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function fe(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:k(e)?e:{[t]:e,enabled:!0}}function be(e){return e==null?[]:Array.isArray(e)?e:[e]}const de=Object.freeze(new Set(["__proto__","constructor","prototype"]));function ie(e,t){if(!k(e))return k(t)?{...t}:t;if(!k(t))return t===void 0?e:t;const n={...e};for(const a of Object.keys(t)){if(de.has(a))continue;const j=t[a];j!==void 0&&(n[a]=k(j)&&k(n[a])?ie(n[a],j):j)}return n}function ye(e,t){if(!k(e)||!k(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class pe{#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 u(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 g=typeof requestAnimationFrame=="function";function d(e){return g?requestAnimationFrame(e):setTimeout(()=>e(y()),16)}function v(e){e!=null&&(g?cancelAnimationFrame(e):clearTimeout(e))}function Q(e){let t=null,n=null;const a=()=>{t=null;const O=n;n=null,e(...O||[])},j=(...O)=>{n=O,t===null&&(t=d(a))};return j.cancel=()=>{v(t),t=null,n=null},j.flush=()=>{t!==null&&(v(t),a())},j}function K(e,t){let n=null,a=null;const j=()=>{if(n=null,a===null)return;const p=a;a=null,e(...p),O()},O=()=>{n=setTimeout(j,t),typeof n?.unref=="function"&&n.unref()},P=(...p)=>{n===null?(e(...p),O()):(a=p,clearTimeout(n),O())};return P.flush=()=>{if(n!==null&&clearTimeout(n),n=null,a===null)return;const p=a;a=null,e(...p)},P.cancel=()=>{n!==null&&clearTimeout(n),n=null,a=null},P.pending=()=>n!==null||a!==null,P}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let w=0;function s(e="l"){return`${e}${(++w).toString(36)}`}}),ce("packages/modules/shared/adapter.js",function(i,Y){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(i,"handlerName",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"aliasConfigKey",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"isHandlerProp",{enumerable:!0,get:function(){return _}}),Object.defineProperty(i,"partition",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(i,"createGridController",{enumerable:!0,get:function(){return l}});const Z=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","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","formatting:changed","redaction:changed","permissions:changed","presentation:changed","presentation:started","presentation:ended","presentation:view","presentation:scale","presentation:spotlight","presentation:captured","comment:added","comment:edited","comment:deleted","comment:failed","comment:resolved","comment:unresolved","comment:threadOpened","comment:threadClosed","comment:indexLoaded","presence:published","presence:joined","presence:updated","presence:left","presence:failed","presence:lockRefused","diff:changed","diff:swapped","timeline:attached","timeline:detached","timeline:seek","timeline:seeking","annotation:changed","validation:failed","validation:cleared","export:progress","export:request","export:done","shortcuts:opened","shortcuts:closed","print:before","print:after","beforeEdit","beforeSort","beforeFilter","beforeColumnMove","beforeColumnResize","beforeColumnHide","beforeSelect","beforeRowAdd","beforeDelete","beforeRowMove","beforeGroup","beforeRowReceive","edit:cancelled","sort:cancelled","filter:cancelled","columnMove:cancelled","columnResize:cancelled","columnHide:cancelled","selection:cancelled","rowAdd:cancelled","delete:cancelled","rowMove:cancelled","group:cancelled","rowReceive:cancelled"]),X=Object.freeze({sort:(c,b)=>c.sort.set(b||[]),filters:(c,b)=>c.filters.set(b||null),quickFilter:(c,b)=>{if(b&&typeof b=="object"){c.filters.quick(b.text||"",{mode:b.mode});return}c.filters.quick(typeof b=="string"?b:"")},selectedKeys:(c,b)=>c.selection.set(Array.isArray(b)?b:[])});function W(c){return`on${String(c).split(":").map(G=>G.charAt(0).toUpperCase()+G.slice(1)).join("")}`}function q(c){return String(c).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function H(c){return Object.hasOwn(J,c)?J[c]:c}const x=Object.freeze(Object.fromEntries(Z.map(c=>[W(c),c])));function _(c){return Object.hasOwn(x,c)}function ee(c){const b={},G={},L={};for(const[h,D]of Object.entries(c||{})){if(_(h)){L[h]=D;continue}if(Object.hasOwn(X,h)){G[h]=D;continue}b[h]=D}return{config:b,imperative:G,handlers:L}}function l(c){const b=c.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const G=ee(c.props||{}),L=b(c.element,{...G.config});let h=G.handlers,D=G.config,N={};const k=V=>{if(!V||typeof V.type!="string")return;const E=h[W(V.type)];typeof E=="function"&&E(V)},ne=L.on("*",k);for(const[V,E]of Object.entries(G.imperative))E!==void 0&&(X[V](L,E),N[V]=E);let z=!1;return{grid:L,update(V){if(z)return;const E=ee(V||{});h=E.handlers;const $={};for(const[A,S]of Object.entries(E.config))Object.is(D[A],S)||($[A]=S);for(const A of Object.keys(D))Object.hasOwn(E.config,A)||($[A]=void 0);Object.keys($).length&&L.setAll($),D=E.config;for(const[A,S]of Object.entries(X)){const I=E.imperative[A];Object.is(N[A],I)||I===void 0&&!Object.hasOwn(N,A)||(S(L,I),N[A]=I)}},destroy(){z||(z=!0,ne(),L.destroy())}}}}),ce("packages/modules/react/viewers.js",function(i,Y){"use strict";Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return W}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return q}}),Object.defineProperty(i,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"partitionViewerProps",{enumerable:!0,get:function(){return _}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return ee}});const X=Y("packages/core/src/internal/util.js").warnOnce,W=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:(l,c)=>l.setRows(Array.isArray(c)?c:[])}),kanban:Object.freeze({rows:(l,c)=>l.setRows(Array.isArray(c)?c:[]),quickFilter:(l,c)=>l.setQuickFilter(typeof c=="string"?c:""),sprint:(l,c)=>l.setSprint(c),epic:(l,c)=>l.setEpic(c),loading:(l,c)=>l.setLoading(!!c),error:(l,c)=>l.setError(c??null)}),gantt:Object.freeze({tasks:(l,c)=>l.setTasks(Array.isArray(c)?c:[]),dependencies:(l,c)=>l.setDependencies(Array.isArray(c)?c:[])}),tabs:Object.freeze({active:(l,c)=>{typeof c=="string"&&l.activate(c)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function H(l){return`on${String(l).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries(W).map(([l,c])=>[l,Object.freeze(Object.fromEntries(c.map(b=>[H(b),b])))])));function _(l,c){const b=x[l]||{},G=q[l]||{},L={},h={},D={};for(const[N,k]of Object.entries(c||{})){if(Object.hasOwn(b,N)){D[N]=k;continue}if(Object.hasOwn(G,N)){h[N]=k,L[N]=k;continue}L[N]=k}return{config:L,live:h,handlers:D}}function ee(l){const c=String(l.viewer),b=l.mount,G=l.name||c;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${c}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const L=_(c,l.props||{}),h=b(l.element,{...L.config});if(!h||typeof h!="object")throw new TypeError(`the ${G} factory returned no instance; nothing can be driven.`);let D=L.handlers,N=L.config;const k={...L.live},ne=[];if(typeof h.on=="function")for(const $ of W[c]||[]){const A=H($),S=h.on($,I=>{const C=D[A];typeof C=="function"&&C(I)});typeof S=="function"&&ne.push(S)}const z=J[c],V=q[c]||{};let E=!1;return{instance:h,update($){if(E)return;const A=_(c,$||{});D=A.handlers;const S={};for(const[C,M]of Object.entries(A.config))Object.is(N[C],M)||(S[C]=M);if(N=A.config,!Object.keys(S).length)return;const I=[];for(const C of Object.keys(S)){const M=V[C];if(M){M(h,S[C]),k[C]=S[C];continue}z&&typeof h[z]=="function"||I.push(C)}if(z&&typeof h[z]=="function"){const C={};for(const M of Object.keys(S))V[M]||(C[M]=S[M]);Object.keys(C).length&&h[z](C)}I.length&&X(`react.viewer.${c}.mountOnly.${I.join(".")}`,`${G}: ${I.map(C=>`\`${C}\``).join(", ")} changed, but ${G} takes ${I.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(!E){E=!0;for(const $ of ne)try{$()}catch{}ne.length=0,typeof h.destroy=="function"&&h.destroy()}}}}}),ce("packages/modules/vue/index.js",function(i,Y){"use strict";Object.defineProperty(i,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(i,"dashedName",{enumerable:!0,get:function(){return H}}),Object.defineProperty(i,"VIEWER_EVENTS",{enumerable:!0,get:function(){return c}}),Object.defineProperty(i,"VIEWER_APPLY",{enumerable:!0,get:function(){return b}}),Object.defineProperty(i,"viewerHandlerName",{enumerable:!0,get:function(){return G}}),Object.defineProperty(i,"createViewerController",{enumerable:!0,get:function(){return L}}),Object.defineProperty(i,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return h}}),Object.defineProperty(i,"createLatticeGrid",{enumerable:!0,get:function(){return I}}),Object.defineProperty(i,"createLatticeGridContext",{enumerable:!0,get:function(){return C}}),Object.defineProperty(i,"createLatticeViewer",{enumerable:!0,get:function(){return M}}),Object.defineProperty(i,"createLatticeKPI",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(i,"createLatticeChart",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(i,"createLatticeKanban",{enumerable:!0,get:function(){return le}}),Object.defineProperty(i,"createLatticeGantt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(i,"createLatticeLayout",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(i,"createLatticeTabs",{enumerable:!0,get:function(){return de}}),Object.defineProperty(i,"createLatticeRouter",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(i,"createLatticeVue",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return pe}});const X=Y("packages/core/src/internal/util.js").warnOnce,W=Y("packages/modules/shared/adapter.js"),q=W.createGridController,J=W.EVENT_NAMES,H=W.dashedName,x=W.handlerName,_=W.isHandlerProp,ee=W.aliasConfigKey,l=Y("packages/modules/react/viewers.js"),c=l.VIEWER_EVENTS,b=l.VIEWER_APPLY,G=l.viewerHandlerName,L=l.createViewerController,h="default",D=new Set(["class","style","id"]),N=Symbol.for("lattice.vue.gridRegistry"),k=Symbol.for("lattice.vue.router"),ne=Symbol.for("lattice.vue.attrsProbe");function z(r,o){if(!r||typeof r.h!="function")throw new TypeError(`${o} needs the Vue runtime: ${o}({ vue, … }).`)}function V(r,o){return typeof r.defineComponent=="function"?r.defineComponent(o):o}function E(r){const o=[],u=Object.keys(r||{}),y=new Set(u);for(const g of u){if(D.has(g)||_(g))continue;const d=ee(g);o.push({to:d!==g&&!y.has(d)?d:g,from:g})}return o}function $(r){const o={};for(const u of D)r&&Object.hasOwn(r,u)&&(o[u]=r[u]);return o}function A(r,o,u){const{watch:y}=r,g=new Map,d={flush:"post"},v=()=>{const m=o(),w=new Set(E(m).map(s=>s.from));for(const s of w)g.has(s)||g.set(s,y(()=>o()[s],u,d));for(const[s,e]of[...g])w.has(s)||(e(),g.delete(s))},K=y(()=>{const m=o();return m[ne],Object.keys(m).sort().join("\0")},()=>{v(),u()},d);return v(),()=>{K();for(const m of g.values())m();g.clear()}}function S(r,o,u){const y=o&&typeof o=="object"?o:{},g=u&&typeof u=="object"?u:{};for(const[d,v]of Object.entries(y))Object.is(g[d],v)||r.filters.where(d,typeof v=="function"?v:null);for(const d of Object.keys(g))Object.hasOwn(y,d)||r.filters.where(d,null)}function I(r){const o=r&&r.vue,u=r&&r.createGrid;if(z(o,"createLatticeGrid"),typeof u!="function")throw new TypeError("createLatticeGrid needs createGrid: createLatticeGrid({ vue, createGrid }).");const{h:y,ref:g,shallowRef:d,onMounted:v,onBeforeUnmount:Q}=o,K=typeof o.inject=="function"?o.inject:null;return V(o,{name:"LatticeGrid",props:{rowUpdates:{type:Object,default:void 0},predicates:{type:Object,default:void 0},name:{type:String,default:void 0},route:{type:null,default:void 0},routeOptions:{type:Object,default:void 0}},emits:[...J.map(H),"grid-ready","grid-destroyed"],inheritAttrs:!1,setup(m,w){const s=g(null),e=d(null),t=K?K(N,null):null,n=K?K(k,null):null,a={predicates:void 0};let j=h,O=null;const P=()=>{const f={},T=w.attrs||{};for(const{to:F,from:U}of E(T))f[F]=T[U];for(const F of J)f[x(F)]=U=>w.emit(H(F),U);return f};v(()=>{const f=q({createGrid:u,element:s.value,props:P()});e.value=f;const{grid:T}=f;m.predicates&&(S(T,m.predicates,{}),a.predicates=m.predicates),j=typeof m.name=="string"&&m.name?m.name:h,t&&t.publish(j,T),n&&m.route!==void 0&&n.attach(T,m.route,m.routeOptions||{}),w.emit("grid-ready",T),O=A(o,()=>w.attrs||{},()=>{const F=e.value;F&&F.update(P())})}),o.watch(()=>m.predicates,(f,T)=>{const F=e.value;F&&(S(F.grid,f,T),a.predicates=f)},{flush:"post"}),o.watch(()=>m.rowUpdates,f=>{const T=e.value;!T||!f||T.grid.rows.apply(f)},{flush:"post"}),Q(()=>{const f=e.value;if(e.value=null,O&&O(),O=null,!!f){if(w.emit("grid-destroyed"),n)try{n.detach(f.grid)}catch{}t&&t.publish(j,null),a.predicates=void 0,f.destroy()}});const p=()=>e.value?e.value.grid:null;return typeof w.expose=="function"&&w.expose({grid:p}),()=>y("div",{...$(w.attrs||{}),ref:s})}})}function C(r){const o=r&&r.vue;if(z(o,"createLatticeGridContext"),typeof o.provide!="function"||typeof o.inject!="function")throw new TypeError("createLatticeGridContext needs a Vue with provide and inject.");const{h:u,shallowRef:y,provide:g,inject:d,computed:v}=o,Q=()=>{const s=y({});return{grids:s,publish(e,t){const n=e||h,a=s.value;if(Object.is(a[n],t))return;const j={...a};t==null?delete j[n]:j[n]=t,s.value=j}}},K=()=>{const s=Q();return g(N,s),s};return{LatticeGridProvider:V(o,{name:"LatticeGridProvider",setup(s,e){return K(),()=>e.slots&&e.slots.default?e.slots.default():null}}),provideLatticeGrids:K,useLatticeGrid:(s=h)=>{const e=d(N,null);return v(()=>e?e.grids.value[s||h]??null:null)}}}function M(r){const o=r&&r.vue;z(o,"createLatticeViewer");const u=String(r&&r.viewer||""),y=r.mount,g=r.name||`Lattice${u.charAt(0).toUpperCase()}${u.slice(1)}`,d=Array.isArray(r.requires)?r.requires:[],v=r.fromContext||null;if(typeof y!="function")throw new TypeError(`${g} needs a mount factory: createLatticeViewer({ vue, mount }).`);if(!Object.hasOwn(c,u))throw new TypeError(`createLatticeViewer: "${u}" is not a viewer this adapter knows; expected one of ${Object.keys(c).join(", ")}.`);const{h:Q,ref:K,shallowRef:m,onMounted:w,onBeforeUnmount:s}=o,e=typeof o.inject=="function"?o.inject:null,t=c[u];return V(o,{name:g,props:{grid:{type:null,default:void 0},gridName:{type:String,default:void 0}},emits:[...t.map(H),"ready","destroyed"],inheritAttrs:!1,setup(n,a){const j=K(null),O=m(null),P=v&&e?e(N,null):null;let p=null,f=null;const T=()=>{if(!v)return null;if(n.grid!==void 0)return n.grid;if(!P)return null;const R=typeof n.gridName=="string"&&n.gridName?n.gridName:h;return P.grids.value[R]??null},F=()=>{const R={},oe=a.attrs||{};for(const{to:te,from:he}of E(oe))R[te]=oe[he];if(v){const te=T();te&&(R[v]=te)}for(const te of t)R[G(te)]=he=>a.emit(H(te),he);return R},U=()=>{if(O.value||!j.value)return;const R=F();if(d.some(te=>R[te]===null||R[te]===void 0))return;const oe=L({viewer:u,mount:y,element:j.value,props:R,name:g});O.value=oe,f=v?R[v]??null:null,a.emit("ready",oe.instance)},re=()=>{const R=O.value;O.value=null,f=null,R&&(a.emit("destroyed"),R.destroy())};w(()=>{U(),p=A(o,()=>a.attrs||{},()=>{const R=O.value;R?R.update(F()):U()})}),o.watch(T,R=>{O.value&&Object.is(f,R??null)||(re(),U())},{flush:"post"}),s(()=>{p&&p(),p=null,re()});const B=()=>O.value?O.value.instance:null;return typeof a.expose=="function"&&a.expose({instance:B}),()=>Q("div",{...$(a.attrs||{}),ref:j})}})}function ae(r){const o=r&&r.createKPI;if(typeof o!="function")throw new TypeError("createLatticeKPI needs createKPI: createLatticeKPI({ vue, createKPI }).");return M({vue:r.vue,viewer:"kpi",name:"LatticeKPI",mount:(u,y)=>o(u,y),fromContext:"grid"})}function ue(r){const o=r&&r.createChart;if(typeof o!="function")throw new TypeError("createLatticeChart needs createChart: createLatticeChart({ vue, createChart }).");return M({vue:r.vue,viewer:"chart",name:"LatticeChart",mount:(u,y)=>o({...y,container:u}),requires:["grid"],fromContext:"grid"})}function le(r){const o=r&&r.createKanban;if(typeof o!="function")throw new TypeError("createLatticeKanban needs createKanban: createLatticeKanban({ vue, createKanban }).");return M({vue:r.vue,viewer:"kanban",name:"LatticeKanban",mount:(u,y)=>o(u,y),fromContext:"grid"})}function se(r){const o=r&&r.createGantt;if(typeof o!="function")throw new TypeError("createLatticeGantt needs createGantt: createLatticeGantt({ vue, createGantt }).");return M({vue:r.vue,viewer:"gantt",name:"LatticeGantt",mount:(u,y)=>o({...y,element:u})})}function fe(r){const o=r&&r.createLayout;if(typeof o!="function")throw new TypeError("createLatticeLayout needs createLayout: createLatticeLayout({ vue, createLayout }).");return M({vue:r.vue,viewer:"layout",name:"LatticeLayout",mount:(u,y)=>o(u,y)})}function be(r){return[String(r),`tab-${String(r)}`]}function de(r){const o=r&&r.vue,u=r&&r.createTabs;if(z(o,"createLatticeTabs"),typeof u!="function")throw new TypeError("createLatticeTabs needs createTabs: createLatticeTabs({ vue, createTabs }).");if(!o.Teleport)throw new TypeError("createLatticeTabs needs a Vue with Teleport, which is how a tab's slot reaches the strip's panel.");const{h:y,ref:g,shallowRef:d,Teleport:v,Fragment:Q,onMounted:K,onBeforeUnmount:m}=o;return V(o,{name:"LatticeTabs",props:{tabs:{type:Array,default:()=>[]},active:{type:String,default:void 0}},emits:[...c.tabs.map(H),"ready","destroyed"],inheritAttrs:!1,setup(w,s){const e=g(null),t=d(null),n=d({}),a=[];let j=null;const O=p=>{const f=s.slots||{};for(const T of be(p))if(typeof f[T]=="function")return f[T];return null};K(()=>{const p={},f=s.attrs||{};for(const{to:re,from:B}of E(f))p[re]=f[B];const F=(Array.isArray(w.tabs)?w.tabs:[]).map(re=>{const B=re;return O(B.id)?{...B,view:R=>(n.value={...n.value,[B.id]:R},{destroy(){if(!Object.hasOwn(n.value,B.id))return;const oe={...n.value};delete oe[B.id],n.value=oe}})}:B}),U=u(e.value,{...p,tabs:F,createGrid:r.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a slot nor a `createGrid` to build it with. Give the tab a <template #‹id›> slot, or pass createGrid into createLatticeTabs.")}),...typeof w.active=="string"?{active:w.active}:{}});t.value=U,j=w.tabs;for(const re of c.tabs){const B=U.on(re,R=>s.emit(H(re),R));typeof B=="function"&&a.push(B)}s.emit("ready",U)}),o.watch(()=>w.active,p=>{const f=t.value;f&&typeof p=="string"&&f.activeId!==p&&f.activate(p)},{flush:"post"}),o.watch(()=>w.tabs,p=>{!t.value||Object.is(j,p)||(j=p,X("vue.tabs.mountOnly.tabs","LatticeTabs: `tabs` changed (a label, a badge or a descriptor), but the strip takes it only when created — the module has no way to repaint an existing tab. Nothing was applied and the strip was NOT rebuilt — rebuilding it would lose whichever tab is open and any state its content holds. Give the component a `key` that changes when a genuine rebuild is wanted; a live badge otherwise needs to live in your own render."))},{flush:"post"}),m(()=>{const p=t.value;t.value=null;for(const f of a)try{f()}catch{}a.length=0,p&&(s.emit("destroyed"),p.destroy(),n.value={})});const P=()=>t.value;return typeof s.expose=="function"&&s.expose({instance:P,tabs:P}),()=>{const p=[y("div",{...$(s.attrs||{}),ref:e})];for(const f of Array.isArray(w.tabs)?w.tabs:[]){const T=f,F=n.value[T.id],U=O(T.id);!F||!U||p.push(y(v,{to:F,key:T.id},U()))}return y(Q,null,p)}}})}function ie(r){const o=r&&r.vue,u=r&&r.createDataRouter;if(z(o,"createLatticeRouter"),typeof o.provide!="function"||typeof o.inject!="function")throw new TypeError("createLatticeRouter needs a Vue with provide and inject.");if(typeof u!="function")throw new TypeError("createLatticeRouter needs createDataRouter: createLatticeRouter({ vue, createDataRouter }).");const{provide:y,inject:g}=o,d=K=>{let m=null,w=!1;const s={get router(){return!m&&!w&&(m=u(K||{})),m},attach(e,t,n){w||s.router.attach(e,t,n||{})},detach(e){w||!m||m.detach(e)},destroy(){w=!0;const e=m;m=null,e&&e.destroy()}};return y(k,s),o.onScopeDispose(()=>s.destroy()),s},v=()=>g(k,null),Q=V(o,{name:"LatticeRouterProvider",props:{config:{type:Object,default:()=>({})}},setup(K,m){return d(K.config),()=>m.slots&&m.slots.default?m.slots.default():null}});return{provideLatticeRouter:d,useLatticeRouter:v,LatticeRouterProvider:Q}}function ye(r){const o=r&&r.vue;z(o,"createLatticeVue");const{LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g}=C({vue:o}),d={LatticeGridProvider:u,provideLatticeGrids:y,useLatticeGrid:g};return typeof r.createGrid=="function"&&(d.LatticeGrid=I({vue:o,createGrid:r.createGrid})),typeof r.createKPI=="function"&&(d.LatticeKPI=ae({vue:o,createKPI:r.createKPI})),typeof r.createChart=="function"&&(d.LatticeChart=ue({vue:o,createChart:r.createChart})),typeof r.createKanban=="function"&&(d.LatticeKanban=le({vue:o,createKanban:r.createKanban})),typeof r.createGantt=="function"&&(d.LatticeGantt=se({vue:o,createGantt:r.createGantt})),typeof r.createLayout=="function"&&(d.LatticeLayout=fe({vue:o,createLayout:r.createLayout})),typeof r.createTabs=="function"&&(d.LatticeTabs=de({vue:o,createTabs:r.createTabs,createGrid:r.createGrid})),typeof r.createDataRouter=="function"&&Object.assign(d,ie({vue:o,createDataRouter:r.createDataRouter})),d}const pe=I});var me=Oe("packages/modules/vue/index.js");typeof module=="object"&&module.exports?module.exports=me:typeof define=="function"&&define.amd?define(function(){return me}):je.LatticeGridVue=me})(typeof globalThis<"u"?globalThis:this);
7
7
 
8
8
  //# sourceMappingURL=vue.min.js.map