@toclocoinc/lattice-grid 1.71.0 → 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.
- package/CHANGELOG.md +20 -0
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +73 -15
- package/docs/api/adapters.html +1 -1
- package/docs/api/ai.html +1 -1
- package/docs/api/alarms.html +1 -1
- package/docs/api/charts.html +70 -12
- package/docs/api/data-router.html +1 -1
- package/docs/api/gantt.html +1 -1
- package/docs/api/grid.html +2 -2
- package/docs/api/index.html +2 -2
- package/docs/api/kanban.html +1 -1
- package/docs/api/kpi.html +1 -1
- package/docs/api/layout.html +1 -1
- package/docs/api/mock-socket.html +1 -1
- package/docs/api/tabs.html +1 -1
- package/docs/api/types.html +1 -1
- package/docs/api-detail.html +4 -4
- package/docs/warnings.json +13 -2
- package/lattice-grid.d.ts +53 -7
- package/lattice-grid.esm.min.js +3 -3
- package/lattice-grid.min.cjs +3 -3
- package/lattice-grid.min.js +3 -3
- package/modules/ai.d.ts +1 -1
- package/modules/ai.esm.min.js +2 -2
- package/modules/ai.min.cjs +2 -2
- package/modules/ai.min.js +2 -2
- package/modules/alarms.d.ts +1 -1
- package/modules/alarms.esm.min.js +2 -2
- package/modules/alarms.min.cjs +2 -2
- package/modules/alarms.min.js +2 -2
- package/modules/angular.d.ts +1 -1
- package/modules/angular.esm.min.js +2 -2
- package/modules/angular.min.cjs +2 -2
- package/modules/angular.min.js +2 -2
- package/modules/chart-alluvial.d.ts +1 -1
- package/modules/chart-alluvial.esm.min.js +1 -1
- package/modules/chart-alluvial.min.cjs +1 -1
- package/modules/chart-alluvial.min.js +1 -1
- package/modules/chart-arc.d.ts +1 -1
- package/modules/chart-arc.esm.min.js +1 -1
- package/modules/chart-arc.min.cjs +1 -1
- package/modules/chart-arc.min.js +1 -1
- package/modules/chart-bubblemap.d.ts +1 -1
- package/modules/chart-bubblemap.esm.min.js +1 -1
- package/modules/chart-bubblemap.min.cjs +1 -1
- package/modules/chart-bubblemap.min.js +1 -1
- package/modules/chart-bump.d.ts +1 -1
- package/modules/chart-bump.esm.min.js +1 -1
- package/modules/chart-bump.min.cjs +1 -1
- package/modules/chart-bump.min.js +1 -1
- package/modules/chart-calendar.d.ts +1 -1
- package/modules/chart-calendar.esm.min.js +1 -1
- package/modules/chart-calendar.min.cjs +1 -1
- package/modules/chart-calendar.min.js +1 -1
- package/modules/chart-decomposition.d.ts +1 -1
- package/modules/chart-decomposition.esm.min.js +1 -1
- package/modules/chart-decomposition.min.cjs +1 -1
- package/modules/chart-decomposition.min.js +1 -1
- package/modules/chart-diverging.d.ts +1 -1
- package/modules/chart-diverging.esm.min.js +1 -1
- package/modules/chart-diverging.min.cjs +1 -1
- package/modules/chart-diverging.min.js +1 -1
- package/modules/chart-dumbbell.d.ts +1 -1
- package/modules/chart-dumbbell.esm.min.js +1 -1
- package/modules/chart-dumbbell.min.cjs +1 -1
- package/modules/chart-dumbbell.min.js +1 -1
- package/modules/chart-fan.d.ts +1 -1
- package/modules/chart-fan.esm.min.js +1 -1
- package/modules/chart-fan.min.cjs +1 -1
- package/modules/chart-fan.min.js +1 -1
- package/modules/chart-hexbin.d.ts +1 -1
- package/modules/chart-hexbin.esm.min.js +1 -1
- package/modules/chart-hexbin.min.cjs +1 -1
- package/modules/chart-hexbin.min.js +1 -1
- package/modules/chart-hexmap.d.ts +1 -1
- package/modules/chart-hexmap.esm.min.js +1 -1
- package/modules/chart-hexmap.min.cjs +1 -1
- package/modules/chart-hexmap.min.js +1 -1
- package/modules/chart-icicle.d.ts +1 -1
- package/modules/chart-icicle.esm.min.js +1 -1
- package/modules/chart-icicle.min.cjs +1 -1
- package/modules/chart-icicle.min.js +1 -1
- package/modules/chart-markermap.d.ts +1 -1
- package/modules/chart-markermap.esm.min.js +1 -1
- package/modules/chart-markermap.min.cjs +1 -1
- package/modules/chart-markermap.min.js +1 -1
- package/modules/chart-parallel.d.ts +1 -1
- package/modules/chart-parallel.esm.min.js +1 -1
- package/modules/chart-parallel.min.cjs +1 -1
- package/modules/chart-parallel.min.js +1 -1
- package/modules/chart-ridgeline.d.ts +1 -1
- package/modules/chart-ridgeline.esm.min.js +1 -1
- package/modules/chart-ridgeline.min.cjs +1 -1
- package/modules/chart-ridgeline.min.js +1 -1
- package/modules/chart-roc.d.ts +1 -1
- package/modules/chart-roc.esm.min.js +1 -1
- package/modules/chart-roc.min.cjs +1 -1
- package/modules/chart-roc.min.js +1 -1
- package/modules/chart-slope.d.ts +1 -1
- package/modules/chart-slope.esm.min.js +1 -1
- package/modules/chart-slope.min.cjs +1 -1
- package/modules/chart-slope.min.js +1 -1
- package/modules/chart-splom.d.ts +1 -1
- package/modules/chart-splom.esm.min.js +1 -1
- package/modules/chart-splom.min.cjs +1 -1
- package/modules/chart-splom.min.js +1 -1
- package/modules/chart-waffle.d.ts +1 -1
- package/modules/chart-waffle.esm.min.js +1 -1
- package/modules/chart-waffle.min.cjs +1 -1
- package/modules/chart-waffle.min.js +1 -1
- package/modules/charts.d.ts +1 -1
- package/modules/charts.esm.min.js +141 -137
- package/modules/charts.esm.min.js.map +2 -2
- package/modules/charts.min.cjs +141 -137
- package/modules/charts.min.js +141 -137
- package/modules/charts.min.js.map +2 -2
- package/modules/data-router.d.ts +1 -1
- package/modules/data-router.esm.min.js +2 -2
- package/modules/data-router.min.cjs +2 -2
- package/modules/data-router.min.js +2 -2
- package/modules/devtools.d.ts +1 -1
- package/modules/devtools.esm.min.js +1 -1
- package/modules/devtools.min.cjs +1 -1
- package/modules/devtools.min.js +1 -1
- package/modules/dhtmlx-compat.d.ts +1 -1
- package/modules/dhtmlx-compat.esm.min.js +2 -2
- package/modules/dhtmlx-compat.min.cjs +2 -2
- package/modules/dhtmlx-compat.min.js +2 -2
- package/modules/gantt.d.ts +1 -1
- package/modules/gantt.esm.min.js +2 -2
- package/modules/gantt.min.cjs +2 -2
- package/modules/gantt.min.js +2 -2
- package/modules/geo-europe-nuts.d.ts +1 -1
- package/modules/geo-europe-nuts.esm.min.js +1 -1
- package/modules/geo-europe-nuts.min.cjs +8 -0
- package/modules/geo-europe-nuts.min.js +8 -0
- package/modules/geo-europe-nuts.min.js.map +6 -0
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-uk.min.cjs +8 -0
- package/modules/geo-uk.min.js +8 -0
- package/modules/geo-uk.min.js.map +6 -0
- package/modules/geo-us-states.d.ts +1 -1
- package/modules/geo-us-states.esm.min.js +1 -1
- package/modules/geo-us-states.min.cjs +8 -0
- package/modules/geo-us-states.min.js +8 -0
- package/modules/geo-us-states.min.js.map +6 -0
- package/modules/geo-world-110m.d.ts +1 -1
- package/modules/geo-world-110m.esm.min.js +1 -1
- package/modules/geo-world-110m.min.cjs +8 -0
- package/modules/geo-world-110m.min.js +8 -0
- package/modules/geo-world-110m.min.js.map +6 -0
- package/modules/geo-world-50m.d.ts +1 -1
- package/modules/geo-world-50m.esm.min.js +1 -1
- package/modules/geo-world-50m.min.cjs +8 -0
- package/modules/geo-world-50m.min.js +8 -0
- package/modules/geo-world-50m.min.js.map +6 -0
- package/modules/htmx.d.ts +1 -1
- package/modules/htmx.esm.min.js +3 -3
- package/modules/htmx.min.cjs +3 -3
- package/modules/htmx.min.js +3 -3
- package/modules/kanban.d.ts +1 -1
- package/modules/kanban.esm.min.js +2 -2
- package/modules/kanban.min.cjs +2 -2
- package/modules/kanban.min.js +2 -2
- package/modules/kpi.d.ts +1 -1
- package/modules/kpi.esm.min.js +2 -2
- package/modules/kpi.min.cjs +2 -2
- package/modules/kpi.min.js +2 -2
- package/modules/layout.d.ts +1 -1
- package/modules/layout.esm.min.js +2 -2
- package/modules/layout.min.cjs +2 -2
- package/modules/layout.min.js +2 -2
- package/modules/mock-socket.d.ts +1 -1
- package/modules/mock-socket.esm.min.js +1 -1
- package/modules/mock-socket.min.cjs +1 -1
- package/modules/mock-socket.min.js +1 -1
- package/modules/react.d.ts +1 -1
- package/modules/react.esm.min.js +2 -2
- package/modules/react.min.cjs +2 -2
- package/modules/react.min.js +2 -2
- package/modules/svelte.d.ts +1 -1
- package/modules/svelte.esm.min.js +2 -2
- package/modules/svelte.min.cjs +2 -2
- package/modules/svelte.min.js +2 -2
- package/modules/tabs.d.ts +1 -1
- package/modules/tabs.esm.min.js +2 -2
- package/modules/tabs.min.cjs +2 -2
- package/modules/tabs.min.js +2 -2
- package/modules/vue.d.ts +1 -1
- package/modules/vue.esm.min.js +2 -2
- package/modules/vue.min.cjs +2 -2
- package/modules/vue.min.js +2 -2
- package/modules/webcomponent.d.ts +1 -1
- package/modules/webcomponent.esm.min.js +3 -3
- package/modules/webcomponent.min.cjs +3 -3
- package/modules/webcomponent.min.js +3 -3
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.71.
|
|
2
|
+
* Lattice Grid 1.71.3, svelte module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
var se=Object.create(null),le=Object.create(null);function re(r,B){se[r]=B}function de(r){var B=le[r];if(B)return B;var Z=Object.create(null);le[r]=Z;var J=se[r];if(!J)throw new Error("[lattice] missing module: "+r);return J(Z,de),Z}re("packages/core/src/internal/util.js",function(r,B){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return H}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return te}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const Z="1.71.0";async function J(){return Z}const $="1.71.0",M=new Set,Q=2e3;function X(e){if(M.add(e),M.size>Q){const t=M.values().next().value;t!==void 0&&M.delete(t)}}const x=[],_=500;function F(e,t,n){x.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:f(l)).join(" "),at:Date.now()}),x.length>_&&x.shift()}function f(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return x.map(e=>({...e}))}function b(e,...t){M.has(e)||(X(e),F(e,"warn",t),console.warn("[lattice]",...t))}function R(e,...t){M.has(e)||(X(e),F(e,"info",t),console.info("[lattice]",...t))}function N(){M.clear(),x.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const V=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function H(e){return typeof e=="function"}function K(e){return e==null}function D(e){return e==null||e===""}function k(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const v=new Map;function T(e){let t=v.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=U=>{let Y=U;for(let W=0;W<l;W++){if(Y==null)return;Y=Y[n[W]]}return Y}}return v.set(e,t),t}const j=new Map;function L(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(U,Y)=>{let W=U;for(let ee=0;ee<l;ee++){if(W==null)return;const ue=n[ee];W[ue]==null&&(W[ue]={}),W=W[ue]}W!=null&&(W[n[l]]=Y)}}return j.set(e,t),t}function A(e,t){return T(t)(e)}function q(e,t,n){L(t)(e,n)}function te(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function d(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const U=t[l];U!==void 0&&(n[l]=S(U)&&S(n[l])?d(n[l],U):U)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function I(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function p(e){let t=null,n=null;const l=()=>{t=null;const Y=n;n=null,e(...Y||[])},U=(...Y)=>{n=Y,t===null&&(t=I(l))};return U.cancel=()=>{h(t),t=null,n=null},U.flush=()=>{t!==null&&(h(t),l())},U}function P(e,t){let n=null,l=null;const U=()=>{if(n=null,l===null)return;const ee=l;l=null,e(...ee),Y()},Y=()=>{n=setTimeout(U,t),typeof n?.unref=="function"&&n.unref()},W=(...ee)=>{n===null?(e(...ee),Y()):(l=ee,clearTimeout(n),Y())};return W.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const ee=l;l=null,e(...ee)},W.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},W.pending=()=>n!==null||l!==null,W}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),re("packages/modules/shared/adapter.js",function(r,B){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return _}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return F}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return f}});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"]),J=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function $(o){return`on${String(o).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function M(o){return String(o).replace(/:/g,"-")}const Q=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function X(o){return Object.hasOwn(Q,o)?Q[o]:o}const x=Object.freeze(Object.fromEntries(Z.map(o=>[$(o),o])));function _(o){return Object.hasOwn(x,o)}function F(o){const b={},R={},N={};for(const[y,z]of Object.entries(o||{})){if(_(y)){N[y]=z;continue}if(Object.hasOwn(J,y)){R[y]=z;continue}b[y]=z}return{config:b,imperative:R,handlers:N}}function f(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=F(o.props||{}),N=b(o.element,{...R.config});let y=R.handlers,z=R.config,V={};const S=D=>{if(!D||typeof D.type!="string")return;const k=y[$(D.type)];typeof k=="function"&&k(D)},H=N.on("*",S);for(const[D,k]of Object.entries(R.imperative))k!==void 0&&(J[D](N,k),V[D]=k);let K=!1;return{grid:N,update(D){if(K)return;const k=F(D||{});y=k.handlers;const v={};for(const[T,j]of Object.entries(k.config))Object.is(z[T],j)||(v[T]=j);for(const T of Object.keys(z))Object.hasOwn(k.config,T)||(v[T]=void 0);Object.keys(v).length&&N.setAll(v),z=k.config;for(const[T,j]of Object.entries(J)){const L=k.imperative[T];Object.is(V[T],L)||L===void 0&&!Object.hasOwn(V,T)||(j(N,L),V[T]=L)}},destroy(){K||(K=!0,H(),N.destroy())}}}}),re("packages/modules/react/viewers.js",function(r,B){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return _}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return F}});const J=B("packages/core/src/internal/util.js").warnOnce,$=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"])}),M=Object.freeze({kpi:Object.freeze({rows:(f,o)=>f.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(f,o)=>f.setRows(Array.isArray(o)?o:[]),quickFilter:(f,o)=>f.setQuickFilter(typeof o=="string"?o:""),sprint:(f,o)=>f.setSprint(o),epic:(f,o)=>f.setEpic(o),loading:(f,o)=>f.setLoading(!!o),error:(f,o)=>f.setError(o??null)}),gantt:Object.freeze({tasks:(f,o)=>f.setTasks(Array.isArray(o)?o:[]),dependencies:(f,o)=>f.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(f,o)=>{typeof o=="string"&&f.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Q=Object.freeze({chart:"update"});function X(f){return`on${String(f).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries($).map(([f,o])=>[f,Object.freeze(Object.fromEntries(o.map(b=>[X(b),b])))])));function _(f,o){const b=x[f]||{},R=M[f]||{},N={},y={},z={};for(const[V,S]of Object.entries(o||{})){if(Object.hasOwn(b,V)){z[V]=S;continue}if(Object.hasOwn(R,V)){y[V]=S,N[V]=S;continue}N[V]=S}return{config:N,live:y,handlers:z}}function F(f){const o=String(f.viewer),b=f.mount,R=f.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const N=_(o,f.props||{}),y=b(f.element,{...N.config});if(!y||typeof y!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let z=N.handlers,V=N.config;const S={...N.live},H=[];if(typeof y.on=="function")for(const v of $[o]||[]){const T=X(v),j=y.on(v,L=>{const A=z[T];typeof A=="function"&&A(L)});typeof j=="function"&&H.push(j)}const K=Q[o],D=M[o]||{};let k=!1;return{instance:y,update(v){if(k)return;const T=_(o,v||{});z=T.handlers;const j={};for(const[A,q]of Object.entries(T.config))Object.is(V[A],q)||(j[A]=q);if(V=T.config,!Object.keys(j).length)return;const L=[];for(const A of Object.keys(j)){const q=D[A];if(q){q(y,j[A]),S[A]=j[A];continue}K&&typeof y[K]=="function"||L.push(A)}if(K&&typeof y[K]=="function"){const A={};for(const q of Object.keys(j))D[q]||(A[q]=j[q]);Object.keys(A).length&&y[K](A)}L.length&&J(`react.viewer.${o}.mountOnly.${L.join(".")}`,`${R}: ${L.map(A=>`\`${A}\``).join(", ")} changed, but ${R} takes ${L.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const v of H)try{v()}catch{}H.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),re("packages/modules/svelte/index.js",function(r,B){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return H}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return te}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const J=B("packages/core/src/internal/util.js").warnOnce,$=B("packages/modules/shared/adapter.js"),M=$.createGridController,Q=$.EVENT_NAMES,X=$.dashedName,x=$.handlerName,_=$.aliasConfigKey,F=B("packages/modules/react/viewers.js"),f=F.VIEWER_EVENTS,o=F.VIEWER_APPLY,b=F.viewerHandlerName,R=F.createViewerController,N=Object.freeze(["onGrid"]);function y(i){const d=i&&i.createGrid;if(typeof d!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=p=>P=>{if(!s)return;const m=p==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(X(p),{detail:m}))},I=p=>{const P={...p||{}};for(const m of N)delete P[m];for(const m of Q)P[`on${m.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(m);return P},h=p=>{const P=p&&p.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=M({createGrid:d,element:c,props:I(g)}),h(g),{update(p){u.update(I(p)),h(p)},destroy(){u.destroy()}}}}const z=y,V=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),H="default",K=new Set(["class","style","id","children"]),D=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),k=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function v(i,d){const s=i||{},a=Object.hasOwn(s,d)?s[d]:s[d.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},d=(s,a,c)=>{const g=new Set(a.map(c));for(const w of k[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};d("grid",Q,x);for(const s of Object.keys(f))d(s,f[s],b);return i})();function j(i,d){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(f).join(", ")}.`);const a=D[i]||D.viewer,c={},g={};for(const[u,w]of Object.entries(d||{})){if(K.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[_(u)]=w}for(const u of k[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function L(){const i=new Map,d=new Set,s=()=>{for(const a of[...d])a()};return{publish(a,c){const g=a||H;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||H)||null},names(){return[...i.keys()]},subscribe(a){return d.add(a),()=>{d.delete(a)}}}}function A(i,d,s){const a=d&&typeof d=="object"?d:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function q(i){const d=i&&i.createGrid;if(typeof d!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=M({createGrid:d,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(A(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:H;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let I=c.own.rowUpdates;const h=v(c.own,"onGridReady");h&&h(u);let p=!1;return{grid:u,update(P){if(p)return;const m=j("grid",P||{});g.update(m.config),Object.is(m.own.predicates,w)||(A(u,m.own.predicates,w),w=m.own.predicates),m.own.rowUpdates&&!Object.is(m.own.rowUpdates,I)&&u.rows.apply(m.own.rowUpdates),I=m.own.rowUpdates;const O=typeof m.own.name=="string"&&m.own.name?m.own.name:H;O!==E&&J("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(p)return;p=!0;const m=v(j("grid",P||{}).own,"onGridDestroyed");if(m&&m(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const te=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,d){return i==="chart"?(s,a)=>d({...a,container:s}):i==="gantt"?(s,a)=>d({...a,element:s}):(s,a)=>d(s,a)}function oe(i){const d=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(te,d))throw new TypeError(`bindViewer: "${d}" is not a viewer this adapter knows; expected one of ${Object.keys(te).join(", ")}.`);const{label:a,requires:c,fromContext:g}=te[d];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(d,s),w=i.registry||null;let E=null,I=null,h={},p=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:H;return w.get(G)},m=()=>{const O=E;if(E=null,I=null,!O)return;const G=v(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(p)return;const G=j(d,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(I,e)&&m(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=R({viewer:d,mount:u,element:i.element,props:G.config,name:a}),I=e;const t=v(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){p||(p=!0,m())}}}function ie(i,d){const s=Array.isArray(i)?i:[],a=d||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const d=i&&i.createTabs;if(typeof d!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(I,h)=>{const p=Array.isArray(I.tabs)?I.tabs:[],P=new Set(h);return p.map(m=>{const O=m;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(I){if(u)return;const h=j("tabs",I||{}),p=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,p)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=R({viewer:"tabs",mount:d,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=v(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,J("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...m}=h.config;c.update(m)},place(I,h){const p=a.get(I),P=h;!P||!p||P.parentNode===p||p.appendChild(P)},destroy(I){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const p=v(j("tabs",I||{}).own,"onDestroyed");p&&p(),h.destroy()}}}function ae(i){const d=i&&i.createDataRouter;if(typeof d!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=d((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});const C=de("packages/modules/svelte/index.js"),fe=C.EVENT_NAMES,be=C.dashedName,ge=C.VIEWER_EVENTS,pe=C.VIEWER_APPLY,me=C.viewerHandlerName,ye=C.createViewerController,he=C.createLatticeAction,we=C.GRID_REGISTRY_KEY,Oe=C.ROUTER_KEY,je=C.DEFAULT_GRID_NAME,Ee=C.pickCallback,Pe=C.adaptProps,Re=C.createGridRegistry,Ne=C.bindGrid,ve=C.VIEWER_BINDING,Ae=C.viewerMount,ke=C.bindViewer,Te=C.snippetTabIds,Ie=C.bindTabs,Ce=C.createRouterHandle;var Se=C.default;export{je as DEFAULT_GRID_NAME,fe as EVENT_NAMES,we as GRID_REGISTRY_KEY,Oe as ROUTER_KEY,pe as VIEWER_APPLY,ve as VIEWER_BINDING,ge as VIEWER_EVENTS,Pe as adaptProps,Ne as bindGrid,Ie as bindTabs,ke as bindViewer,Re as createGridRegistry,he as createLatticeAction,Ce as createRouterHandle,ye as createViewerController,be as dashedName,Se as default,Ee as pickCallback,Te as snippetTabIds,me as viewerHandlerName,Ae as viewerMount};
|
|
6
|
+
var se=Object.create(null),le=Object.create(null);function re(r,B){se[r]=B}function de(r){var B=le[r];if(B)return B;var Z=Object.create(null);le[r]=Z;var J=se[r];if(!J)throw new Error("[lattice] missing module: "+r);return J(Z,de),Z}re("packages/core/src/internal/util.js",function(r,B){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return H}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return te}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const Z="1.71.3";async function J(){return Z}const $="1.71.3",M=new Set,Q=2e3;function X(e){if(M.add(e),M.size>Q){const t=M.values().next().value;t!==void 0&&M.delete(t)}}const x=[],_=500;function F(e,t,n){x.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:f(l)).join(" "),at:Date.now()}),x.length>_&&x.shift()}function f(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return x.map(e=>({...e}))}function b(e,...t){M.has(e)||(X(e),F(e,"warn",t),console.warn("[lattice]",...t))}function R(e,...t){M.has(e)||(X(e),F(e,"info",t),console.info("[lattice]",...t))}function N(){M.clear(),x.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const V=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function H(e){return typeof e=="function"}function K(e){return e==null}function D(e){return e==null||e===""}function k(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const v=new Map;function T(e){let t=v.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=U=>{let Y=U;for(let W=0;W<l;W++){if(Y==null)return;Y=Y[n[W]]}return Y}}return v.set(e,t),t}const j=new Map;function L(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(U,Y)=>{let W=U;for(let ee=0;ee<l;ee++){if(W==null)return;const ue=n[ee];W[ue]==null&&(W[ue]={}),W=W[ue]}W!=null&&(W[n[l]]=Y)}}return j.set(e,t),t}function A(e,t){return T(t)(e)}function q(e,t,n){L(t)(e,n)}function te(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function d(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const U=t[l];U!==void 0&&(n[l]=S(U)&&S(n[l])?d(n[l],U):U)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function I(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function p(e){let t=null,n=null;const l=()=>{t=null;const Y=n;n=null,e(...Y||[])},U=(...Y)=>{n=Y,t===null&&(t=I(l))};return U.cancel=()=>{h(t),t=null,n=null},U.flush=()=>{t!==null&&(h(t),l())},U}function P(e,t){let n=null,l=null;const U=()=>{if(n=null,l===null)return;const ee=l;l=null,e(...ee),Y()},Y=()=>{n=setTimeout(U,t),typeof n?.unref=="function"&&n.unref()},W=(...ee)=>{n===null?(e(...ee),Y()):(l=ee,clearTimeout(n),Y())};return W.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const ee=l;l=null,e(...ee)},W.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},W.pending=()=>n!==null||l!==null,W}function m(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),re("packages/modules/shared/adapter.js",function(r,B){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return _}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return F}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return f}});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"]),J=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function $(o){return`on${String(o).split(":").map(R=>R.charAt(0).toUpperCase()+R.slice(1)).join("")}`}function M(o){return String(o).replace(/:/g,"-")}const Q=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function X(o){return Object.hasOwn(Q,o)?Q[o]:o}const x=Object.freeze(Object.fromEntries(Z.map(o=>[$(o),o])));function _(o){return Object.hasOwn(x,o)}function F(o){const b={},R={},N={};for(const[y,z]of Object.entries(o||{})){if(_(y)){N[y]=z;continue}if(Object.hasOwn(J,y)){R[y]=z;continue}b[y]=z}return{config:b,imperative:R,handlers:N}}function f(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const R=F(o.props||{}),N=b(o.element,{...R.config});let y=R.handlers,z=R.config,V={};const S=D=>{if(!D||typeof D.type!="string")return;const k=y[$(D.type)];typeof k=="function"&&k(D)},H=N.on("*",S);for(const[D,k]of Object.entries(R.imperative))k!==void 0&&(J[D](N,k),V[D]=k);let K=!1;return{grid:N,update(D){if(K)return;const k=F(D||{});y=k.handlers;const v={};for(const[T,j]of Object.entries(k.config))Object.is(z[T],j)||(v[T]=j);for(const T of Object.keys(z))Object.hasOwn(k.config,T)||(v[T]=void 0);Object.keys(v).length&&N.setAll(v),z=k.config;for(const[T,j]of Object.entries(J)){const L=k.imperative[T];Object.is(V[T],L)||L===void 0&&!Object.hasOwn(V,T)||(j(N,L),V[T]=L)}},destroy(){K||(K=!0,H(),N.destroy())}}}}),re("packages/modules/react/viewers.js",function(r,B){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return $}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return _}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return F}});const J=B("packages/core/src/internal/util.js").warnOnce,$=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"])}),M=Object.freeze({kpi:Object.freeze({rows:(f,o)=>f.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(f,o)=>f.setRows(Array.isArray(o)?o:[]),quickFilter:(f,o)=>f.setQuickFilter(typeof o=="string"?o:""),sprint:(f,o)=>f.setSprint(o),epic:(f,o)=>f.setEpic(o),loading:(f,o)=>f.setLoading(!!o),error:(f,o)=>f.setError(o??null)}),gantt:Object.freeze({tasks:(f,o)=>f.setTasks(Array.isArray(o)?o:[]),dependencies:(f,o)=>f.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(f,o)=>{typeof o=="string"&&f.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),Q=Object.freeze({chart:"update"});function X(f){return`on${String(f).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const x=Object.freeze(Object.fromEntries(Object.entries($).map(([f,o])=>[f,Object.freeze(Object.fromEntries(o.map(b=>[X(b),b])))])));function _(f,o){const b=x[f]||{},R=M[f]||{},N={},y={},z={};for(const[V,S]of Object.entries(o||{})){if(Object.hasOwn(b,V)){z[V]=S;continue}if(Object.hasOwn(R,V)){y[V]=S,N[V]=S;continue}N[V]=S}return{config:N,live:y,handlers:z}}function F(f){const o=String(f.viewer),b=f.mount,R=f.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const N=_(o,f.props||{}),y=b(f.element,{...N.config});if(!y||typeof y!="object")throw new TypeError(`the ${R} factory returned no instance; nothing can be driven.`);let z=N.handlers,V=N.config;const S={...N.live},H=[];if(typeof y.on=="function")for(const v of $[o]||[]){const T=X(v),j=y.on(v,L=>{const A=z[T];typeof A=="function"&&A(L)});typeof j=="function"&&H.push(j)}const K=Q[o],D=M[o]||{};let k=!1;return{instance:y,update(v){if(k)return;const T=_(o,v||{});z=T.handlers;const j={};for(const[A,q]of Object.entries(T.config))Object.is(V[A],q)||(j[A]=q);if(V=T.config,!Object.keys(j).length)return;const L=[];for(const A of Object.keys(j)){const q=D[A];if(q){q(y,j[A]),S[A]=j[A];continue}K&&typeof y[K]=="function"||L.push(A)}if(K&&typeof y[K]=="function"){const A={};for(const q of Object.keys(j))D[q]||(A[q]=j[q]);Object.keys(A).length&&y[K](A)}L.length&&J(`react.viewer.${o}.mountOnly.${L.join(".")}`,`${R}: ${L.map(A=>`\`${A}\``).join(", ")} changed, but ${R} takes ${L.length===1?"it":"them"} only when the viewer is created. Nothing was applied and the viewer was NOT rebuilt — rebuilding it silently would throw away scroll position, selection and expansion. Give the component a \`key\` that changes when this must take effect, so the rebuild is yours and visible, or drive the instance through the ref.`)},destroy(){if(!k){k=!0;for(const v of H)try{v()}catch{}H.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),re("packages/modules/svelte/index.js",function(r,B){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return X}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return H}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return te}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const J=B("packages/core/src/internal/util.js").warnOnce,$=B("packages/modules/shared/adapter.js"),M=$.createGridController,Q=$.EVENT_NAMES,X=$.dashedName,x=$.handlerName,_=$.aliasConfigKey,F=B("packages/modules/react/viewers.js"),f=F.VIEWER_EVENTS,o=F.VIEWER_APPLY,b=F.viewerHandlerName,R=F.createViewerController,N=Object.freeze(["onGrid"]);function y(i){const d=i&&i.createGrid;if(typeof d!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=p=>P=>{if(!s)return;const m=p==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(X(p),{detail:m}))},I=p=>{const P={...p||{}};for(const m of N)delete P[m];for(const m of Q)P[`on${m.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(m);return P},h=p=>{const P=p&&p.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=M({createGrid:d,element:c,props:I(g)}),h(g),{update(p){u.update(I(p)),h(p)},destroy(){u.destroy()}}}}const z=y,V=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),H="default",K=new Set(["class","style","id","children"]),D=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),k=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function v(i,d){const s=i||{},a=Object.hasOwn(s,d)?s[d]:s[d.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},d=(s,a,c)=>{const g=new Set(a.map(c));for(const w of k[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};d("grid",Q,x);for(const s of Object.keys(f))d(s,f[s],b);return i})();function j(i,d){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(f).join(", ")}.`);const a=D[i]||D.viewer,c={},g={};for(const[u,w]of Object.entries(d||{})){if(K.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[_(u)]=w}for(const u of k[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function L(){const i=new Map,d=new Set,s=()=>{for(const a of[...d])a()};return{publish(a,c){const g=a||H;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||H)||null},names(){return[...i.keys()]},subscribe(a){return d.add(a),()=>{d.delete(a)}}}}function A(i,d,s){const a=d&&typeof d=="object"?d:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function q(i){const d=i&&i.createGrid;if(typeof d!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=M({createGrid:d,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(A(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:H;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let I=c.own.rowUpdates;const h=v(c.own,"onGridReady");h&&h(u);let p=!1;return{grid:u,update(P){if(p)return;const m=j("grid",P||{});g.update(m.config),Object.is(m.own.predicates,w)||(A(u,m.own.predicates,w),w=m.own.predicates),m.own.rowUpdates&&!Object.is(m.own.rowUpdates,I)&&u.rows.apply(m.own.rowUpdates),I=m.own.rowUpdates;const O=typeof m.own.name=="string"&&m.own.name?m.own.name:H;O!==E&&J("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(p)return;p=!0;const m=v(j("grid",P||{}).own,"onGridDestroyed");if(m&&m(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const te=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,d){return i==="chart"?(s,a)=>d({...a,container:s}):i==="gantt"?(s,a)=>d({...a,element:s}):(s,a)=>d(s,a)}function oe(i){const d=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(te,d))throw new TypeError(`bindViewer: "${d}" is not a viewer this adapter knows; expected one of ${Object.keys(te).join(", ")}.`);const{label:a,requires:c,fromContext:g}=te[d];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(d,s),w=i.registry||null;let E=null,I=null,h={},p=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:H;return w.get(G)},m=()=>{const O=E;if(E=null,I=null,!O)return;const G=v(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(p)return;const G=j(d,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(I,e)&&m(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=R({viewer:d,mount:u,element:i.element,props:G.config,name:a}),I=e;const t=v(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){p||(p=!0,m())}}}function ie(i,d){const s=Array.isArray(i)?i:[],a=d||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const d=i&&i.createTabs;if(typeof d!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(I,h)=>{const p=Array.isArray(I.tabs)?I.tabs:[],P=new Set(h);return p.map(m=>{const O=m;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(I){if(u)return;const h=j("tabs",I||{}),p=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,p)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=R({viewer:"tabs",mount:d,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=v(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,J("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...m}=h.config;c.update(m)},place(I,h){const p=a.get(I),P=h;!P||!p||P.parentNode===p||p.appendChild(P)},destroy(I){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const p=v(j("tabs",I||{}).own,"onDestroyed");p&&p(),h.destroy()}}}function ae(i){const d=i&&i.createDataRouter;if(typeof d!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=d((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});const C=de("packages/modules/svelte/index.js"),fe=C.EVENT_NAMES,be=C.dashedName,ge=C.VIEWER_EVENTS,pe=C.VIEWER_APPLY,me=C.viewerHandlerName,ye=C.createViewerController,he=C.createLatticeAction,we=C.GRID_REGISTRY_KEY,Oe=C.ROUTER_KEY,je=C.DEFAULT_GRID_NAME,Ee=C.pickCallback,Pe=C.adaptProps,Re=C.createGridRegistry,Ne=C.bindGrid,ve=C.VIEWER_BINDING,Ae=C.viewerMount,ke=C.bindViewer,Te=C.snippetTabIds,Ie=C.bindTabs,Ce=C.createRouterHandle;var Se=C.default;export{je as DEFAULT_GRID_NAME,fe as EVENT_NAMES,we as GRID_REGISTRY_KEY,Oe as ROUTER_KEY,pe as VIEWER_APPLY,ve as VIEWER_BINDING,ge as VIEWER_EVENTS,Pe as adaptProps,Ne as bindGrid,Ie as bindTabs,ke as bindViewer,Re as createGridRegistry,he as createLatticeAction,Ce as createRouterHandle,ye as createViewerController,be as dashedName,Se as default,Ee as pickCallback,Te as snippetTabIds,me as viewerHandlerName,Ae as viewerMount};
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=svelte.esm.min.js.map
|
package/modules/svelte.min.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.71.
|
|
2
|
+
* Lattice Grid 1.71.3, svelte module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(de){"use strict";var se=Object.create(null),le=Object.create(null);function te(r,Y){se[r]=Y}function fe(r){var Y=le[r];if(Y)return Y;var B=Object.create(null);le[r]=B;var Z=se[r];if(!Z)throw new Error("[lattice] missing module: "+r);return Z(B,fe),B}te("packages/core/src/internal/util.js",function(r,Y){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const B="1.71.0";async function Z(){return B}const M="1.71.0",L=new Set,J=2e3;function Q(e){if(L.add(e),L.size>J){const t=L.values().next().value;t!==void 0&&L.delete(t)}}const X=[],x=500;function U(e,t,n){X.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:d(l)).join(" "),at:Date.now()}),X.length>x&&X.shift()}function d(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return X.map(e=>({...e}))}function b(e,...t){L.has(e)||(Q(e),U(e,"warn",t),console.warn("[lattice]",...t))}function v(e,...t){L.has(e)||(Q(e),U(e,"info",t),console.info("[lattice]",...t))}function R(){L.clear(),X.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const I=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function W(e){return typeof e=="function"}function q(e){return e==null}function V(e){return e==null||e===""}function A(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const k=new Map;function T(e){let t=k.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=H=>{let F=H;for(let $=0;$<l;$++){if(F==null)return;F=F[n[$]]}return F}}return k.set(e,t),t}const j=new Map;function D(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(H,F)=>{let $=H;for(let _=0;_<l;_++){if($==null)return;const ue=n[_];$[ue]==null&&($[ue]={}),$=$[ue]}$!=null&&($[n[l]]=F)}}return j.set(e,t),t}function N(e,t){return T(t)(e)}function K(e,t,n){D(t)(e,n)}function ee(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function f(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const H=t[l];H!==void 0&&(n[l]=S(H)&&S(n[l])?f(n[l],H):H)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function C(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function m(e){let t=null,n=null;const l=()=>{t=null;const F=n;n=null,e(...F||[])},H=(...F)=>{n=F,t===null&&(t=C(l))};return H.cancel=()=>{h(t),t=null,n=null},H.flush=()=>{t!==null&&(h(t),l())},H}function P(e,t){let n=null,l=null;const H=()=>{if(n=null,l===null)return;const _=l;l=null,e(..._),F()},F=()=>{n=setTimeout(H,t),typeof n?.unref=="function"&&n.unref()},$=(..._)=>{n===null?(e(..._),F()):(l=_,clearTimeout(n),F())};return $.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const _=l;l=null,e(..._)},$.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},$.pending=()=>n!==null||l!==null,$}function p(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return U}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return d}});const B=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"]),Z=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function M(o){return`on${String(o).split(":").map(v=>v.charAt(0).toUpperCase()+v.slice(1)).join("")}`}function L(o){return String(o).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Q(o){return Object.hasOwn(J,o)?J[o]:o}const X=Object.freeze(Object.fromEntries(B.map(o=>[M(o),o])));function x(o){return Object.hasOwn(X,o)}function U(o){const b={},v={},R={};for(const[y,z]of Object.entries(o||{})){if(x(y)){R[y]=z;continue}if(Object.hasOwn(Z,y)){v[y]=z;continue}b[y]=z}return{config:b,imperative:v,handlers:R}}function d(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const v=U(o.props||{}),R=b(o.element,{...v.config});let y=v.handlers,z=v.config,I={};const S=V=>{if(!V||typeof V.type!="string")return;const A=y[M(V.type)];typeof A=="function"&&A(V)},W=R.on("*",S);for(const[V,A]of Object.entries(v.imperative))A!==void 0&&(Z[V](R,A),I[V]=A);let q=!1;return{grid:R,update(V){if(q)return;const A=U(V||{});y=A.handlers;const k={};for(const[T,j]of Object.entries(A.config))Object.is(z[T],j)||(k[T]=j);for(const T of Object.keys(z))Object.hasOwn(A.config,T)||(k[T]=void 0);Object.keys(k).length&&R.setAll(k),z=A.config;for(const[T,j]of Object.entries(Z)){const D=A.imperative[T];Object.is(I[T],D)||D===void 0&&!Object.hasOwn(I,T)||(j(R,D),I[T]=D)}},destroy(){q||(q=!0,W(),R.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,Y){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return U}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=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"])}),L=Object.freeze({kpi:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[]),quickFilter:(d,o)=>d.setQuickFilter(typeof o=="string"?o:""),sprint:(d,o)=>d.setSprint(o),epic:(d,o)=>d.setEpic(o),loading:(d,o)=>d.setLoading(!!o),error:(d,o)=>d.setError(o??null)}),gantt:Object.freeze({tasks:(d,o)=>d.setTasks(Array.isArray(o)?o:[]),dependencies:(d,o)=>d.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(d,o)=>{typeof o=="string"&&d.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function Q(d){return`on${String(d).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(M).map(([d,o])=>[d,Object.freeze(Object.fromEntries(o.map(b=>[Q(b),b])))])));function x(d,o){const b=X[d]||{},v=L[d]||{},R={},y={},z={};for(const[I,S]of Object.entries(o||{})){if(Object.hasOwn(b,I)){z[I]=S;continue}if(Object.hasOwn(v,I)){y[I]=S,R[I]=S;continue}R[I]=S}return{config:R,live:y,handlers:z}}function U(d){const o=String(d.viewer),b=d.mount,v=d.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const R=x(o,d.props||{}),y=b(d.element,{...R.config});if(!y||typeof y!="object")throw new TypeError(`the ${v} factory returned no instance; nothing can be driven.`);let z=R.handlers,I=R.config;const S={...R.live},W=[];if(typeof y.on=="function")for(const k of M[o]||[]){const T=Q(k),j=y.on(k,D=>{const N=z[T];typeof N=="function"&&N(D)});typeof j=="function"&&W.push(j)}const q=J[o],V=L[o]||{};let A=!1;return{instance:y,update(k){if(A)return;const T=x(o,k||{});z=T.handlers;const j={};for(const[N,K]of Object.entries(T.config))Object.is(I[N],K)||(j[N]=K);if(I=T.config,!Object.keys(j).length)return;const D=[];for(const N of Object.keys(j)){const K=V[N];if(K){K(y,j[N]),S[N]=j[N];continue}q&&typeof y[q]=="function"||D.push(N)}if(q&&typeof y[q]=="function"){const N={};for(const K of Object.keys(j))V[K]||(N[K]=j[K]);Object.keys(N).length&&y[q](N)}D.length&&Z(`react.viewer.${o}.mountOnly.${D.join(".")}`,`${v}: ${D.map(N=>`\`${N}\``).join(", ")} changed, but ${v} takes ${D.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(!A){A=!0;for(const k of W)try{k()}catch{}W.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),te("packages/modules/svelte/index.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=Y("packages/modules/shared/adapter.js"),L=M.createGridController,J=M.EVENT_NAMES,Q=M.dashedName,X=M.handlerName,x=M.aliasConfigKey,U=Y("packages/modules/react/viewers.js"),d=U.VIEWER_EVENTS,o=U.VIEWER_APPLY,b=U.viewerHandlerName,v=U.createViewerController,R=Object.freeze(["onGrid"]);function y(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=m=>P=>{if(!s)return;const p=m==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(Q(m),{detail:p}))},C=m=>{const P={...m||{}};for(const p of R)delete P[p];for(const p of J)P[`on${p.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(p);return P},h=m=>{const P=m&&m.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=L({createGrid:f,element:c,props:C(g)}),h(g),{update(m){u.update(C(m)),h(m)},destroy(){u.destroy()}}}}const z=y,I=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),W="default",q=new Set(["class","style","id","children"]),V=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),A=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function k(i,f){const s=i||{},a=Object.hasOwn(s,f)?s[f]:s[f.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},f=(s,a,c)=>{const g=new Set(a.map(c));for(const w of A[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};f("grid",J,X);for(const s of Object.keys(d))f(s,d[s],b);return i})();function j(i,f){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(d).join(", ")}.`);const a=V[i]||V.viewer,c={},g={};for(const[u,w]of Object.entries(f||{})){if(q.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[x(u)]=w}for(const u of A[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function D(){const i=new Map,f=new Set,s=()=>{for(const a of[...f])a()};return{publish(a,c){const g=a||W;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||W)||null},names(){return[...i.keys()]},subscribe(a){return f.add(a),()=>{f.delete(a)}}}}function N(i,f,s){const a=f&&typeof f=="object"?f:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function K(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=L({createGrid:f,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(N(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:W;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let C=c.own.rowUpdates;const h=k(c.own,"onGridReady");h&&h(u);let m=!1;return{grid:u,update(P){if(m)return;const p=j("grid",P||{});g.update(p.config),Object.is(p.own.predicates,w)||(N(u,p.own.predicates,w),w=p.own.predicates),p.own.rowUpdates&&!Object.is(p.own.rowUpdates,C)&&u.rows.apply(p.own.rowUpdates),C=p.own.rowUpdates;const O=typeof p.own.name=="string"&&p.own.name?p.own.name:W;O!==E&&Z("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(m)return;m=!0;const p=k(j("grid",P||{}).own,"onGridDestroyed");if(p&&p(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const ee=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,f){return i==="chart"?(s,a)=>f({...a,container:s}):i==="gantt"?(s,a)=>f({...a,element:s}):(s,a)=>f(s,a)}function oe(i){const f=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(ee,f))throw new TypeError(`bindViewer: "${f}" is not a viewer this adapter knows; expected one of ${Object.keys(ee).join(", ")}.`);const{label:a,requires:c,fromContext:g}=ee[f];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(f,s),w=i.registry||null;let E=null,C=null,h={},m=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:W;return w.get(G)},p=()=>{const O=E;if(E=null,C=null,!O)return;const G=k(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(m)return;const G=j(f,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(C,e)&&p(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=v({viewer:f,mount:u,element:i.element,props:G.config,name:a}),C=e;const t=k(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){m||(m=!0,p())}}}function ie(i,f){const s=Array.isArray(i)?i:[],a=f||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const f=i&&i.createTabs;if(typeof f!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(C,h)=>{const m=Array.isArray(C.tabs)?C.tabs:[],P=new Set(h);return m.map(p=>{const O=p;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(C){if(u)return;const h=j("tabs",C||{}),m=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,m)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=v({viewer:"tabs",mount:f,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=k(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,Z("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...p}=h.config;c.update(p)},place(C,h){const m=a.get(C),P=h;!P||!m||P.parentNode===m||m.appendChild(P)},destroy(C){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const m=k(j("tabs",C||{}).own,"onDestroyed");m&&m(),h.destroy()}}}function ae(i){const f=i&&i.createDataRouter;if(typeof f!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=f((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});var re=fe("packages/modules/svelte/index.js");typeof module=="object"&&module.exports?module.exports=re:typeof define=="function"&&define.amd?define(function(){return re}):de.LatticeGridSvelte=re})(typeof globalThis<"u"?globalThis:this);
|
|
6
|
+
(function(de){"use strict";var se=Object.create(null),le=Object.create(null);function te(r,Y){se[r]=Y}function fe(r){var Y=le[r];if(Y)return Y;var B=Object.create(null);le[r]=B;var Z=se[r];if(!Z)throw new Error("[lattice] missing module: "+r);return Z(B,fe),B}te("packages/core/src/internal/util.js",function(r,Y){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const B="1.71.3";async function Z(){return B}const M="1.71.3",L=new Set,J=2e3;function Q(e){if(L.add(e),L.size>J){const t=L.values().next().value;t!==void 0&&L.delete(t)}}const X=[],x=500;function U(e,t,n){X.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:d(l)).join(" "),at:Date.now()}),X.length>x&&X.shift()}function d(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return X.map(e=>({...e}))}function b(e,...t){L.has(e)||(Q(e),U(e,"warn",t),console.warn("[lattice]",...t))}function v(e,...t){L.has(e)||(Q(e),U(e,"info",t),console.info("[lattice]",...t))}function R(){L.clear(),X.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const I=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function W(e){return typeof e=="function"}function q(e){return e==null}function V(e){return e==null||e===""}function A(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const k=new Map;function T(e){let t=k.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=H=>{let F=H;for(let $=0;$<l;$++){if(F==null)return;F=F[n[$]]}return F}}return k.set(e,t),t}const j=new Map;function D(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(H,F)=>{let $=H;for(let _=0;_<l;_++){if($==null)return;const ue=n[_];$[ue]==null&&($[ue]={}),$=$[ue]}$!=null&&($[n[l]]=F)}}return j.set(e,t),t}function N(e,t){return T(t)(e)}function K(e,t,n){D(t)(e,n)}function ee(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function f(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const H=t[l];H!==void 0&&(n[l]=S(H)&&S(n[l])?f(n[l],H):H)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function C(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function m(e){let t=null,n=null;const l=()=>{t=null;const F=n;n=null,e(...F||[])},H=(...F)=>{n=F,t===null&&(t=C(l))};return H.cancel=()=>{h(t),t=null,n=null},H.flush=()=>{t!==null&&(h(t),l())},H}function P(e,t){let n=null,l=null;const H=()=>{if(n=null,l===null)return;const _=l;l=null,e(..._),F()},F=()=>{n=setTimeout(H,t),typeof n?.unref=="function"&&n.unref()},$=(..._)=>{n===null?(e(..._),F()):(l=_,clearTimeout(n),F())};return $.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const _=l;l=null,e(..._)},$.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},$.pending=()=>n!==null||l!==null,$}function p(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return U}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return d}});const B=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"]),Z=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function M(o){return`on${String(o).split(":").map(v=>v.charAt(0).toUpperCase()+v.slice(1)).join("")}`}function L(o){return String(o).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Q(o){return Object.hasOwn(J,o)?J[o]:o}const X=Object.freeze(Object.fromEntries(B.map(o=>[M(o),o])));function x(o){return Object.hasOwn(X,o)}function U(o){const b={},v={},R={};for(const[y,z]of Object.entries(o||{})){if(x(y)){R[y]=z;continue}if(Object.hasOwn(Z,y)){v[y]=z;continue}b[y]=z}return{config:b,imperative:v,handlers:R}}function d(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const v=U(o.props||{}),R=b(o.element,{...v.config});let y=v.handlers,z=v.config,I={};const S=V=>{if(!V||typeof V.type!="string")return;const A=y[M(V.type)];typeof A=="function"&&A(V)},W=R.on("*",S);for(const[V,A]of Object.entries(v.imperative))A!==void 0&&(Z[V](R,A),I[V]=A);let q=!1;return{grid:R,update(V){if(q)return;const A=U(V||{});y=A.handlers;const k={};for(const[T,j]of Object.entries(A.config))Object.is(z[T],j)||(k[T]=j);for(const T of Object.keys(z))Object.hasOwn(A.config,T)||(k[T]=void 0);Object.keys(k).length&&R.setAll(k),z=A.config;for(const[T,j]of Object.entries(Z)){const D=A.imperative[T];Object.is(I[T],D)||D===void 0&&!Object.hasOwn(I,T)||(j(R,D),I[T]=D)}},destroy(){q||(q=!0,W(),R.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,Y){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return U}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=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"])}),L=Object.freeze({kpi:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[]),quickFilter:(d,o)=>d.setQuickFilter(typeof o=="string"?o:""),sprint:(d,o)=>d.setSprint(o),epic:(d,o)=>d.setEpic(o),loading:(d,o)=>d.setLoading(!!o),error:(d,o)=>d.setError(o??null)}),gantt:Object.freeze({tasks:(d,o)=>d.setTasks(Array.isArray(o)?o:[]),dependencies:(d,o)=>d.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(d,o)=>{typeof o=="string"&&d.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function Q(d){return`on${String(d).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(M).map(([d,o])=>[d,Object.freeze(Object.fromEntries(o.map(b=>[Q(b),b])))])));function x(d,o){const b=X[d]||{},v=L[d]||{},R={},y={},z={};for(const[I,S]of Object.entries(o||{})){if(Object.hasOwn(b,I)){z[I]=S;continue}if(Object.hasOwn(v,I)){y[I]=S,R[I]=S;continue}R[I]=S}return{config:R,live:y,handlers:z}}function U(d){const o=String(d.viewer),b=d.mount,v=d.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const R=x(o,d.props||{}),y=b(d.element,{...R.config});if(!y||typeof y!="object")throw new TypeError(`the ${v} factory returned no instance; nothing can be driven.`);let z=R.handlers,I=R.config;const S={...R.live},W=[];if(typeof y.on=="function")for(const k of M[o]||[]){const T=Q(k),j=y.on(k,D=>{const N=z[T];typeof N=="function"&&N(D)});typeof j=="function"&&W.push(j)}const q=J[o],V=L[o]||{};let A=!1;return{instance:y,update(k){if(A)return;const T=x(o,k||{});z=T.handlers;const j={};for(const[N,K]of Object.entries(T.config))Object.is(I[N],K)||(j[N]=K);if(I=T.config,!Object.keys(j).length)return;const D=[];for(const N of Object.keys(j)){const K=V[N];if(K){K(y,j[N]),S[N]=j[N];continue}q&&typeof y[q]=="function"||D.push(N)}if(q&&typeof y[q]=="function"){const N={};for(const K of Object.keys(j))V[K]||(N[K]=j[K]);Object.keys(N).length&&y[q](N)}D.length&&Z(`react.viewer.${o}.mountOnly.${D.join(".")}`,`${v}: ${D.map(N=>`\`${N}\``).join(", ")} changed, but ${v} takes ${D.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(!A){A=!0;for(const k of W)try{k()}catch{}W.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),te("packages/modules/svelte/index.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=Y("packages/modules/shared/adapter.js"),L=M.createGridController,J=M.EVENT_NAMES,Q=M.dashedName,X=M.handlerName,x=M.aliasConfigKey,U=Y("packages/modules/react/viewers.js"),d=U.VIEWER_EVENTS,o=U.VIEWER_APPLY,b=U.viewerHandlerName,v=U.createViewerController,R=Object.freeze(["onGrid"]);function y(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=m=>P=>{if(!s)return;const p=m==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(Q(m),{detail:p}))},C=m=>{const P={...m||{}};for(const p of R)delete P[p];for(const p of J)P[`on${p.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(p);return P},h=m=>{const P=m&&m.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=L({createGrid:f,element:c,props:C(g)}),h(g),{update(m){u.update(C(m)),h(m)},destroy(){u.destroy()}}}}const z=y,I=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),W="default",q=new Set(["class","style","id","children"]),V=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),A=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function k(i,f){const s=i||{},a=Object.hasOwn(s,f)?s[f]:s[f.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},f=(s,a,c)=>{const g=new Set(a.map(c));for(const w of A[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};f("grid",J,X);for(const s of Object.keys(d))f(s,d[s],b);return i})();function j(i,f){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(d).join(", ")}.`);const a=V[i]||V.viewer,c={},g={};for(const[u,w]of Object.entries(f||{})){if(q.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[x(u)]=w}for(const u of A[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function D(){const i=new Map,f=new Set,s=()=>{for(const a of[...f])a()};return{publish(a,c){const g=a||W;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||W)||null},names(){return[...i.keys()]},subscribe(a){return f.add(a),()=>{f.delete(a)}}}}function N(i,f,s){const a=f&&typeof f=="object"?f:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function K(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=L({createGrid:f,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(N(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:W;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let C=c.own.rowUpdates;const h=k(c.own,"onGridReady");h&&h(u);let m=!1;return{grid:u,update(P){if(m)return;const p=j("grid",P||{});g.update(p.config),Object.is(p.own.predicates,w)||(N(u,p.own.predicates,w),w=p.own.predicates),p.own.rowUpdates&&!Object.is(p.own.rowUpdates,C)&&u.rows.apply(p.own.rowUpdates),C=p.own.rowUpdates;const O=typeof p.own.name=="string"&&p.own.name?p.own.name:W;O!==E&&Z("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(m)return;m=!0;const p=k(j("grid",P||{}).own,"onGridDestroyed");if(p&&p(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const ee=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,f){return i==="chart"?(s,a)=>f({...a,container:s}):i==="gantt"?(s,a)=>f({...a,element:s}):(s,a)=>f(s,a)}function oe(i){const f=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(ee,f))throw new TypeError(`bindViewer: "${f}" is not a viewer this adapter knows; expected one of ${Object.keys(ee).join(", ")}.`);const{label:a,requires:c,fromContext:g}=ee[f];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(f,s),w=i.registry||null;let E=null,C=null,h={},m=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:W;return w.get(G)},p=()=>{const O=E;if(E=null,C=null,!O)return;const G=k(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(m)return;const G=j(f,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(C,e)&&p(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=v({viewer:f,mount:u,element:i.element,props:G.config,name:a}),C=e;const t=k(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){m||(m=!0,p())}}}function ie(i,f){const s=Array.isArray(i)?i:[],a=f||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const f=i&&i.createTabs;if(typeof f!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(C,h)=>{const m=Array.isArray(C.tabs)?C.tabs:[],P=new Set(h);return m.map(p=>{const O=p;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(C){if(u)return;const h=j("tabs",C||{}),m=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,m)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=v({viewer:"tabs",mount:f,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=k(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,Z("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...p}=h.config;c.update(p)},place(C,h){const m=a.get(C),P=h;!P||!m||P.parentNode===m||m.appendChild(P)},destroy(C){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const m=k(j("tabs",C||{}).own,"onDestroyed");m&&m(),h.destroy()}}}function ae(i){const f=i&&i.createDataRouter;if(typeof f!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=f((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});var re=fe("packages/modules/svelte/index.js");typeof module=="object"&&module.exports?module.exports=re:typeof define=="function"&&define.amd?define(function(){return re}):de.LatticeGridSvelte=re})(typeof globalThis<"u"?globalThis:this);
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=svelte.min.js.map
|
package/modules/svelte.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.71.
|
|
2
|
+
* Lattice Grid 1.71.3, svelte module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(de){"use strict";var se=Object.create(null),le=Object.create(null);function te(r,Y){se[r]=Y}function fe(r){var Y=le[r];if(Y)return Y;var B=Object.create(null);le[r]=B;var Z=se[r];if(!Z)throw new Error("[lattice] missing module: "+r);return Z(B,fe),B}te("packages/core/src/internal/util.js",function(r,Y){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const B="1.71.0";async function Z(){return B}const M="1.71.0",L=new Set,J=2e3;function Q(e){if(L.add(e),L.size>J){const t=L.values().next().value;t!==void 0&&L.delete(t)}}const X=[],x=500;function U(e,t,n){X.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:d(l)).join(" "),at:Date.now()}),X.length>x&&X.shift()}function d(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return X.map(e=>({...e}))}function b(e,...t){L.has(e)||(Q(e),U(e,"warn",t),console.warn("[lattice]",...t))}function v(e,...t){L.has(e)||(Q(e),U(e,"info",t),console.info("[lattice]",...t))}function R(){L.clear(),X.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const I=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function W(e){return typeof e=="function"}function q(e){return e==null}function V(e){return e==null||e===""}function A(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const k=new Map;function T(e){let t=k.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=H=>{let F=H;for(let $=0;$<l;$++){if(F==null)return;F=F[n[$]]}return F}}return k.set(e,t),t}const j=new Map;function D(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(H,F)=>{let $=H;for(let _=0;_<l;_++){if($==null)return;const ue=n[_];$[ue]==null&&($[ue]={}),$=$[ue]}$!=null&&($[n[l]]=F)}}return j.set(e,t),t}function N(e,t){return T(t)(e)}function K(e,t,n){D(t)(e,n)}function ee(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function f(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const H=t[l];H!==void 0&&(n[l]=S(H)&&S(n[l])?f(n[l],H):H)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function C(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function m(e){let t=null,n=null;const l=()=>{t=null;const F=n;n=null,e(...F||[])},H=(...F)=>{n=F,t===null&&(t=C(l))};return H.cancel=()=>{h(t),t=null,n=null},H.flush=()=>{t!==null&&(h(t),l())},H}function P(e,t){let n=null,l=null;const H=()=>{if(n=null,l===null)return;const _=l;l=null,e(..._),F()},F=()=>{n=setTimeout(H,t),typeof n?.unref=="function"&&n.unref()},$=(..._)=>{n===null?(e(..._),F()):(l=_,clearTimeout(n),F())};return $.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const _=l;l=null,e(..._)},$.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},$.pending=()=>n!==null||l!==null,$}function p(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return U}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return d}});const B=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"]),Z=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function M(o){return`on${String(o).split(":").map(v=>v.charAt(0).toUpperCase()+v.slice(1)).join("")}`}function L(o){return String(o).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Q(o){return Object.hasOwn(J,o)?J[o]:o}const X=Object.freeze(Object.fromEntries(B.map(o=>[M(o),o])));function x(o){return Object.hasOwn(X,o)}function U(o){const b={},v={},R={};for(const[y,z]of Object.entries(o||{})){if(x(y)){R[y]=z;continue}if(Object.hasOwn(Z,y)){v[y]=z;continue}b[y]=z}return{config:b,imperative:v,handlers:R}}function d(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const v=U(o.props||{}),R=b(o.element,{...v.config});let y=v.handlers,z=v.config,I={};const S=V=>{if(!V||typeof V.type!="string")return;const A=y[M(V.type)];typeof A=="function"&&A(V)},W=R.on("*",S);for(const[V,A]of Object.entries(v.imperative))A!==void 0&&(Z[V](R,A),I[V]=A);let q=!1;return{grid:R,update(V){if(q)return;const A=U(V||{});y=A.handlers;const k={};for(const[T,j]of Object.entries(A.config))Object.is(z[T],j)||(k[T]=j);for(const T of Object.keys(z))Object.hasOwn(A.config,T)||(k[T]=void 0);Object.keys(k).length&&R.setAll(k),z=A.config;for(const[T,j]of Object.entries(Z)){const D=A.imperative[T];Object.is(I[T],D)||D===void 0&&!Object.hasOwn(I,T)||(j(R,D),I[T]=D)}},destroy(){q||(q=!0,W(),R.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,Y){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return U}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=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"])}),L=Object.freeze({kpi:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[]),quickFilter:(d,o)=>d.setQuickFilter(typeof o=="string"?o:""),sprint:(d,o)=>d.setSprint(o),epic:(d,o)=>d.setEpic(o),loading:(d,o)=>d.setLoading(!!o),error:(d,o)=>d.setError(o??null)}),gantt:Object.freeze({tasks:(d,o)=>d.setTasks(Array.isArray(o)?o:[]),dependencies:(d,o)=>d.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(d,o)=>{typeof o=="string"&&d.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function Q(d){return`on${String(d).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(M).map(([d,o])=>[d,Object.freeze(Object.fromEntries(o.map(b=>[Q(b),b])))])));function x(d,o){const b=X[d]||{},v=L[d]||{},R={},y={},z={};for(const[I,S]of Object.entries(o||{})){if(Object.hasOwn(b,I)){z[I]=S;continue}if(Object.hasOwn(v,I)){y[I]=S,R[I]=S;continue}R[I]=S}return{config:R,live:y,handlers:z}}function U(d){const o=String(d.viewer),b=d.mount,v=d.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const R=x(o,d.props||{}),y=b(d.element,{...R.config});if(!y||typeof y!="object")throw new TypeError(`the ${v} factory returned no instance; nothing can be driven.`);let z=R.handlers,I=R.config;const S={...R.live},W=[];if(typeof y.on=="function")for(const k of M[o]||[]){const T=Q(k),j=y.on(k,D=>{const N=z[T];typeof N=="function"&&N(D)});typeof j=="function"&&W.push(j)}const q=J[o],V=L[o]||{};let A=!1;return{instance:y,update(k){if(A)return;const T=x(o,k||{});z=T.handlers;const j={};for(const[N,K]of Object.entries(T.config))Object.is(I[N],K)||(j[N]=K);if(I=T.config,!Object.keys(j).length)return;const D=[];for(const N of Object.keys(j)){const K=V[N];if(K){K(y,j[N]),S[N]=j[N];continue}q&&typeof y[q]=="function"||D.push(N)}if(q&&typeof y[q]=="function"){const N={};for(const K of Object.keys(j))V[K]||(N[K]=j[K]);Object.keys(N).length&&y[q](N)}D.length&&Z(`react.viewer.${o}.mountOnly.${D.join(".")}`,`${v}: ${D.map(N=>`\`${N}\``).join(", ")} changed, but ${v} takes ${D.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(!A){A=!0;for(const k of W)try{k()}catch{}W.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),te("packages/modules/svelte/index.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=Y("packages/modules/shared/adapter.js"),L=M.createGridController,J=M.EVENT_NAMES,Q=M.dashedName,X=M.handlerName,x=M.aliasConfigKey,U=Y("packages/modules/react/viewers.js"),d=U.VIEWER_EVENTS,o=U.VIEWER_APPLY,b=U.viewerHandlerName,v=U.createViewerController,R=Object.freeze(["onGrid"]);function y(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=m=>P=>{if(!s)return;const p=m==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(Q(m),{detail:p}))},C=m=>{const P={...m||{}};for(const p of R)delete P[p];for(const p of J)P[`on${p.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(p);return P},h=m=>{const P=m&&m.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=L({createGrid:f,element:c,props:C(g)}),h(g),{update(m){u.update(C(m)),h(m)},destroy(){u.destroy()}}}}const z=y,I=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),W="default",q=new Set(["class","style","id","children"]),V=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),A=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function k(i,f){const s=i||{},a=Object.hasOwn(s,f)?s[f]:s[f.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},f=(s,a,c)=>{const g=new Set(a.map(c));for(const w of A[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};f("grid",J,X);for(const s of Object.keys(d))f(s,d[s],b);return i})();function j(i,f){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(d).join(", ")}.`);const a=V[i]||V.viewer,c={},g={};for(const[u,w]of Object.entries(f||{})){if(q.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[x(u)]=w}for(const u of A[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function D(){const i=new Map,f=new Set,s=()=>{for(const a of[...f])a()};return{publish(a,c){const g=a||W;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||W)||null},names(){return[...i.keys()]},subscribe(a){return f.add(a),()=>{f.delete(a)}}}}function N(i,f,s){const a=f&&typeof f=="object"?f:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function K(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=L({createGrid:f,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(N(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:W;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let C=c.own.rowUpdates;const h=k(c.own,"onGridReady");h&&h(u);let m=!1;return{grid:u,update(P){if(m)return;const p=j("grid",P||{});g.update(p.config),Object.is(p.own.predicates,w)||(N(u,p.own.predicates,w),w=p.own.predicates),p.own.rowUpdates&&!Object.is(p.own.rowUpdates,C)&&u.rows.apply(p.own.rowUpdates),C=p.own.rowUpdates;const O=typeof p.own.name=="string"&&p.own.name?p.own.name:W;O!==E&&Z("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(m)return;m=!0;const p=k(j("grid",P||{}).own,"onGridDestroyed");if(p&&p(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const ee=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,f){return i==="chart"?(s,a)=>f({...a,container:s}):i==="gantt"?(s,a)=>f({...a,element:s}):(s,a)=>f(s,a)}function oe(i){const f=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(ee,f))throw new TypeError(`bindViewer: "${f}" is not a viewer this adapter knows; expected one of ${Object.keys(ee).join(", ")}.`);const{label:a,requires:c,fromContext:g}=ee[f];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(f,s),w=i.registry||null;let E=null,C=null,h={},m=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:W;return w.get(G)},p=()=>{const O=E;if(E=null,C=null,!O)return;const G=k(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(m)return;const G=j(f,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(C,e)&&p(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=v({viewer:f,mount:u,element:i.element,props:G.config,name:a}),C=e;const t=k(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){m||(m=!0,p())}}}function ie(i,f){const s=Array.isArray(i)?i:[],a=f||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const f=i&&i.createTabs;if(typeof f!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(C,h)=>{const m=Array.isArray(C.tabs)?C.tabs:[],P=new Set(h);return m.map(p=>{const O=p;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(C){if(u)return;const h=j("tabs",C||{}),m=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,m)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=v({viewer:"tabs",mount:f,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=k(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,Z("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...p}=h.config;c.update(p)},place(C,h){const m=a.get(C),P=h;!P||!m||P.parentNode===m||m.appendChild(P)},destroy(C){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const m=k(j("tabs",C||{}).own,"onDestroyed");m&&m(),h.destroy()}}}function ae(i){const f=i&&i.createDataRouter;if(typeof f!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=f((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});var re=fe("packages/modules/svelte/index.js");typeof module=="object"&&module.exports?module.exports=re:typeof define=="function"&&define.amd?define(function(){return re}):de.LatticeGridSvelte=re})(typeof globalThis<"u"?globalThis:this);
|
|
6
|
+
(function(de){"use strict";var se=Object.create(null),le=Object.create(null);function te(r,Y){se[r]=Y}function fe(r){var Y=le[r];if(Y)return Y;var B=Object.create(null);le[r]=B;var Z=se[r];if(!Z)throw new Error("[lattice] missing module: "+r);return Z(B,fe),B}te("packages/core/src/internal/util.js",function(r,Y){"use strict";Object.defineProperty(r,"VERSION",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"reportedWarnings",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"infoOnce",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"resetWarnings",{enumerable:!0,get:function(){return R}}),Object.defineProperty(r,"fail",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"invariant",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"DEV",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"isObject",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"isFunction",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"isNil",{enumerable:!0,get:function(){return q}}),Object.defineProperty(r,"isBlank",{enumerable:!0,get:function(){return V}}),Object.defineProperty(r,"isCtor",{enumerable:!0,get:function(){return A}}),Object.defineProperty(r,"pathGetter",{enumerable:!0,get:function(){return T}}),Object.defineProperty(r,"pathSetter",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"getPath",{enumerable:!0,get:function(){return N}}),Object.defineProperty(r,"setPath",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"humanise",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"escapeHtml",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"titleCase",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"expand",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"toArray",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(r,"merge",{enumerable:!0,get:function(){return f}}),Object.defineProperty(r,"mergeRow",{enumerable:!0,get:function(){return s}}),Object.defineProperty(r,"Lru",{enumerable:!0,get:function(){return a}}),Object.defineProperty(r,"collator",{enumerable:!0,get:function(){return g}}),Object.defineProperty(r,"defaultCompare",{enumerable:!0,get:function(){return u}}),Object.defineProperty(r,"now",{enumerable:!0,get:function(){return w}}),Object.defineProperty(r,"nextFrame",{enumerable:!0,get:function(){return C}}),Object.defineProperty(r,"cancelFrame",{enumerable:!0,get:function(){return h}}),Object.defineProperty(r,"frameBatched",{enumerable:!0,get:function(){return m}}),Object.defineProperty(r,"settleDebounce",{enumerable:!0,get:function(){return P}}),Object.defineProperty(r,"whenIdle",{enumerable:!0,get:function(){return p}}),Object.defineProperty(r,"uid",{enumerable:!0,get:function(){return G}});const B="1.71.3";async function Z(){return B}const M="1.71.3",L=new Set,J=2e3;function Q(e){if(L.add(e),L.size>J){const t=L.values().next().value;t!==void 0&&L.delete(t)}}const X=[],x=500;function U(e,t,n){X.push({key:e,level:t,message:n.map(l=>typeof l=="string"?l:d(l)).join(" "),at:Date.now()}),X.length>x&&X.shift()}function d(e){if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function o(){return X.map(e=>({...e}))}function b(e,...t){L.has(e)||(Q(e),U(e,"warn",t),console.warn("[lattice]",...t))}function v(e,...t){L.has(e)||(Q(e),U(e,"info",t),console.info("[lattice]",...t))}function R(){L.clear(),X.length=0}function y(e,t){const n=new Error(`[lattice] ${e}`);throw t!==void 0&&(n.cause=t),n}function z(e,t){e||y(t)}const I=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function S(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function W(e){return typeof e=="function"}function q(e){return e==null}function V(e){return e==null||e===""}function A(e){return typeof e!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(e))?!0:!!(e.prototype&&Object.getOwnPropertyNames(e.prototype).length>1)}const k=new Map;function T(e){let t=k.get(e);if(t)return t;if(!e.includes("."))t=n=>n?.[e];else{const n=e.split("."),l=n.length;t=H=>{let F=H;for(let $=0;$<l;$++){if(F==null)return;F=F[n[$]]}return F}}return k.set(e,t),t}const j=new Map;function D(e){let t=j.get(e);if(t)return t;if(!e.includes("."))t=(n,l)=>{n!=null&&(n[e]=l)};else{const n=e.split("."),l=n.length-1;t=(H,F)=>{let $=H;for(let _=0;_<l;_++){if($==null)return;const ue=n[_];$[ue]==null&&($[ue]={}),$=$[ue]}$!=null&&($[n[l]]=F)}}return j.set(e,t),t}function N(e,t){return T(t)(e)}function K(e,t,n){D(t)(e,n)}function ee(e){return e?(e.includes(".")?e.slice(e.lastIndexOf(".")+1):e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/^./,n=>n.toUpperCase()):""}const ne={"&":"&","<":"<",">":">",'"':""","'":"'"};function oe(e){const t=e==null?"":String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,n=>ne[n]):t}function ie(e){return String(e).replace(/\w\S*/g,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}function ce(e,t,n){if(e!==void 0)return e===!0?{enabled:!0,...n}:e===!1?{enabled:!1}:S(e)?e:{[t]:e,enabled:!0}}function ae(e){return e==null?[]:Array.isArray(e)?e:[e]}const i=Object.freeze(new Set(["__proto__","constructor","prototype"]));function f(e,t){if(!S(e))return S(t)?{...t}:t;if(!S(t))return t===void 0?e:t;const n={...e};for(const l of Object.keys(t)){if(i.has(l))continue;const H=t[l];H!==void 0&&(n[l]=S(H)&&S(n[l])?f(n[l],H):H)}return n}function s(e,t){if(!S(e)||!S(t)||e===t)return t;const n=Object.create(Object.getPrototypeOf(e));return Object.assign(n,e,t),n}class a{#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 l=n.get(t);return n.delete(t),n.set(t,l),l}peek(t){return this.#e.get(t)}set(t,n){const l=this.#e;return l.has(t)&&l.delete(t),l.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,l=t.get(n);t.delete(n),this.#t&&this.#t(l,n)}}}const c=new Map;function g(e,t){const n=`${e||""}|${t?JSON.stringify(t):""}`;let l=c.get(n);return l||(l=new Intl.Collator(e||void 0,{numeric:!0,sensitivity:"variant",...t}),c.set(n,l)),l}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),l=String(t);return n<l?-1:n>l?1:0}function w(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const E=typeof requestAnimationFrame=="function";function C(e){return E?requestAnimationFrame(e):setTimeout(()=>e(w()),16)}function h(e){e!=null&&(E?cancelAnimationFrame(e):clearTimeout(e))}function m(e){let t=null,n=null;const l=()=>{t=null;const F=n;n=null,e(...F||[])},H=(...F)=>{n=F,t===null&&(t=C(l))};return H.cancel=()=>{h(t),t=null,n=null},H.flush=()=>{t!==null&&(h(t),l())},H}function P(e,t){let n=null,l=null;const H=()=>{if(n=null,l===null)return;const _=l;l=null,e(..._),F()},F=()=>{n=setTimeout(H,t),typeof n?.unref=="function"&&n.unref()},$=(..._)=>{n===null?(e(..._),F()):(l=_,clearTimeout(n),F())};return $.flush=()=>{if(n!==null&&clearTimeout(n),n=null,l===null)return;const _=l;l=null,e(..._)},$.cancel=()=>{n!==null&&clearTimeout(n),n=null,l=null},$.pending=()=>n!==null||l!==null,$}function p(e,t=50){return typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:t}):setTimeout(()=>e({timeRemaining:()=>0,didTimeout:!0}),1)}let O=0;function G(e="l"){return`${e}${(++O).toString(36)}`}}),te("packages/modules/shared/adapter.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return B}}),Object.defineProperty(r,"handlerName",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"CONFIG_KEY_ALIASES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"aliasConfigKey",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"isHandlerProp",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"partition",{enumerable:!0,get:function(){return U}}),Object.defineProperty(r,"createGridController",{enumerable:!0,get:function(){return d}});const B=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"]),Z=Object.freeze({sort:(o,b)=>o.sort.set(b||[]),filters:(o,b)=>o.filters.set(b||null),quickFilter:(o,b)=>{if(b&&typeof b=="object"){o.filters.quick(b.text||"",{mode:b.mode});return}o.filters.quick(typeof b=="string"?b:"")},selectedKeys:(o,b)=>o.selection.set(Array.isArray(b)?b:[])});function M(o){return`on${String(o).split(":").map(v=>v.charAt(0).toUpperCase()+v.slice(1)).join("")}`}function L(o){return String(o).replace(/:/g,"-")}const J=Object.freeze({"row-key":"rowKey","row-height":"rowHeight","header-height":"headerHeight","auto-height":"autoHeight"});function Q(o){return Object.hasOwn(J,o)?J[o]:o}const X=Object.freeze(Object.fromEntries(B.map(o=>[M(o),o])));function x(o){return Object.hasOwn(X,o)}function U(o){const b={},v={},R={};for(const[y,z]of Object.entries(o||{})){if(x(y)){R[y]=z;continue}if(Object.hasOwn(Z,y)){v[y]=z;continue}b[y]=z}return{config:b,imperative:v,handlers:R}}function d(o){const b=o.createGrid;if(typeof b!="function")throw new TypeError("createGridController needs createGrid; pass it in from the grid package.");const v=U(o.props||{}),R=b(o.element,{...v.config});let y=v.handlers,z=v.config,I={};const S=V=>{if(!V||typeof V.type!="string")return;const A=y[M(V.type)];typeof A=="function"&&A(V)},W=R.on("*",S);for(const[V,A]of Object.entries(v.imperative))A!==void 0&&(Z[V](R,A),I[V]=A);let q=!1;return{grid:R,update(V){if(q)return;const A=U(V||{});y=A.handlers;const k={};for(const[T,j]of Object.entries(A.config))Object.is(z[T],j)||(k[T]=j);for(const T of Object.keys(z))Object.hasOwn(A.config,T)||(k[T]=void 0);Object.keys(k).length&&R.setAll(k),z=A.config;for(const[T,j]of Object.entries(Z)){const D=A.imperative[T];Object.is(I[T],D)||D===void 0&&!Object.hasOwn(I,T)||(j(R,D),I[T]=D)}},destroy(){q||(q=!0,W(),R.destroy())}}}}),te("packages/modules/react/viewers.js",function(r,Y){"use strict";Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return M}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return L}}),Object.defineProperty(r,"VIEWER_BULK_UPDATE",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"partitionViewerProps",{enumerable:!0,get:function(){return x}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return U}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=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"])}),L=Object.freeze({kpi:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[])}),kanban:Object.freeze({rows:(d,o)=>d.setRows(Array.isArray(o)?o:[]),quickFilter:(d,o)=>d.setQuickFilter(typeof o=="string"?o:""),sprint:(d,o)=>d.setSprint(o),epic:(d,o)=>d.setEpic(o),loading:(d,o)=>d.setLoading(!!o),error:(d,o)=>d.setError(o??null)}),gantt:Object.freeze({tasks:(d,o)=>d.setTasks(Array.isArray(o)?o:[]),dependencies:(d,o)=>d.setDependencies(Array.isArray(o)?o:[])}),tabs:Object.freeze({active:(d,o)=>{typeof o=="string"&&d.activate(o)}}),chart:Object.freeze({}),layout:Object.freeze({})}),J=Object.freeze({chart:"update"});function Q(d){return`on${String(d).split(":").map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join("")}`}const X=Object.freeze(Object.fromEntries(Object.entries(M).map(([d,o])=>[d,Object.freeze(Object.fromEntries(o.map(b=>[Q(b),b])))])));function x(d,o){const b=X[d]||{},v=L[d]||{},R={},y={},z={};for(const[I,S]of Object.entries(o||{})){if(Object.hasOwn(b,I)){z[I]=S;continue}if(Object.hasOwn(v,I)){y[I]=S,R[I]=S;continue}R[I]=S}return{config:R,live:y,handlers:z}}function U(d){const o=String(d.viewer),b=d.mount,v=d.name||o;if(typeof b!="function")throw new TypeError(`createViewerController needs a mount factory for "${o}"; pass the module's own factory in, e.g. { createKPI } from lattice-grid/modules/kpi.`);const R=x(o,d.props||{}),y=b(d.element,{...R.config});if(!y||typeof y!="object")throw new TypeError(`the ${v} factory returned no instance; nothing can be driven.`);let z=R.handlers,I=R.config;const S={...R.live},W=[];if(typeof y.on=="function")for(const k of M[o]||[]){const T=Q(k),j=y.on(k,D=>{const N=z[T];typeof N=="function"&&N(D)});typeof j=="function"&&W.push(j)}const q=J[o],V=L[o]||{};let A=!1;return{instance:y,update(k){if(A)return;const T=x(o,k||{});z=T.handlers;const j={};for(const[N,K]of Object.entries(T.config))Object.is(I[N],K)||(j[N]=K);if(I=T.config,!Object.keys(j).length)return;const D=[];for(const N of Object.keys(j)){const K=V[N];if(K){K(y,j[N]),S[N]=j[N];continue}q&&typeof y[q]=="function"||D.push(N)}if(q&&typeof y[q]=="function"){const N={};for(const K of Object.keys(j))V[K]||(N[K]=j[K]);Object.keys(N).length&&y[q](N)}D.length&&Z(`react.viewer.${o}.mountOnly.${D.join(".")}`,`${v}: ${D.map(N=>`\`${N}\``).join(", ")} changed, but ${v} takes ${D.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(!A){A=!0;for(const k of W)try{k()}catch{}W.length=0,typeof y.destroy=="function"&&y.destroy()}}}}}),te("packages/modules/svelte/index.js",function(r,Y){"use strict";Object.defineProperty(r,"EVENT_NAMES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(r,"dashedName",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(r,"VIEWER_EVENTS",{enumerable:!0,get:function(){return d}}),Object.defineProperty(r,"VIEWER_APPLY",{enumerable:!0,get:function(){return o}}),Object.defineProperty(r,"viewerHandlerName",{enumerable:!0,get:function(){return b}}),Object.defineProperty(r,"createViewerController",{enumerable:!0,get:function(){return v}}),Object.defineProperty(r,"createLatticeAction",{enumerable:!0,get:function(){return y}}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return z}}),Object.defineProperty(r,"GRID_REGISTRY_KEY",{enumerable:!0,get:function(){return I}}),Object.defineProperty(r,"ROUTER_KEY",{enumerable:!0,get:function(){return S}}),Object.defineProperty(r,"DEFAULT_GRID_NAME",{enumerable:!0,get:function(){return W}}),Object.defineProperty(r,"pickCallback",{enumerable:!0,get:function(){return k}}),Object.defineProperty(r,"adaptProps",{enumerable:!0,get:function(){return j}}),Object.defineProperty(r,"createGridRegistry",{enumerable:!0,get:function(){return D}}),Object.defineProperty(r,"bindGrid",{enumerable:!0,get:function(){return K}}),Object.defineProperty(r,"VIEWER_BINDING",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(r,"viewerMount",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(r,"bindViewer",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(r,"snippetTabIds",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(r,"bindTabs",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(r,"createRouterHandle",{enumerable:!0,get:function(){return ae}});const Z=Y("packages/core/src/internal/util.js").warnOnce,M=Y("packages/modules/shared/adapter.js"),L=M.createGridController,J=M.EVENT_NAMES,Q=M.dashedName,X=M.handlerName,x=M.aliasConfigKey,U=Y("packages/modules/react/viewers.js"),d=U.VIEWER_EVENTS,o=U.VIEWER_APPLY,b=U.viewerHandlerName,v=U.createViewerController,R=Object.freeze(["onGrid"]);function y(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("createLatticeAction needs createGrid: createLatticeAction({ createGrid }).");const s=i&&i.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);return function(c,g){let u,w=null;const E=m=>P=>{if(!s)return;const p=m==="ready"&&u?{...P,grid:u.grid}:P;c.dispatchEvent(new s(Q(m),{detail:p}))},C=m=>{const P={...m||{}};for(const p of R)delete P[p];for(const p of J)P[`on${p.split(":").map(O=>O.charAt(0).toUpperCase()+O.slice(1)).join("")}`]=E(p);return P},h=m=>{const P=m&&m.onGrid;typeof P=="function"&&P!==w&&(w=P,P(u.grid))};return u=L({createGrid:f,element:c,props:C(g)}),h(g),{update(m){u.update(C(m)),h(m)},destroy(){u.destroy()}}}}const z=y,I=Symbol.for("lattice.svelte.gridRegistry"),S=Symbol.for("lattice.svelte.router"),W="default",q=new Set(["class","style","id","children"]),V=Object.freeze({grid:new Set(["name","route","routeOptions","predicates","rowUpdates"]),viewer:new Set(["grid","gridName"]),tabs:new Set(["contentIds"])}),A=Object.freeze({grid:Object.freeze(["onGridReady","onGridDestroyed"]),viewer:Object.freeze(["onReady","onDestroyed"])});function k(i,f){const s=i||{},a=Object.hasOwn(s,f)?s[f]:s[f.toLowerCase()];return typeof a=="function"?a:null}const T=(()=>{const i={},f=(s,a,c)=>{const g=new Set(a.map(c));for(const w of A[s==="grid"?"grid":"viewer"])g.add(w);const u=new Map([...g].map(w=>[w.toLowerCase(),w]));i[s]={events:a,canonical:g,lower:u}};f("grid",J,X);for(const s of Object.keys(d))f(s,d[s],b);return i})();function j(i,f){const s=T[i];if(!s)throw new TypeError(`adaptProps: "${i}" is not a component kind this adapter knows; expected grid or one of ${Object.keys(d).join(", ")}.`);const a=V[i]||V.viewer,c={},g={};for(const[u,w]of Object.entries(f||{})){if(q.has(u))continue;if(a.has(u)){g[u]=w;continue}if(s.canonical.has(u)){c[u]=w;continue}const E=s.lower.get(u);if(E){c[E]=w;continue}c[x(u)]=w}for(const u of A[i==="grid"?"grid":"viewer"])Object.hasOwn(c,u)&&(g[u]=c[u],delete c[u]);return{config:c,own:g}}function D(){const i=new Map,f=new Set,s=()=>{for(const a of[...f])a()};return{publish(a,c){const g=a||W;c?i.set(g,c):i.delete(g),s()},get(a){return i.get(a||W)||null},names(){return[...i.keys()]},subscribe(a){return f.add(a),()=>{f.delete(a)}}}}function N(i,f,s){const a=f&&typeof f=="object"?f:{},c=s&&typeof s=="object"?s:{};for(const[g,u]of Object.entries(a))Object.is(c[g],u)||i.filters.where(g,typeof u=="function"?u:null);for(const g of Object.keys(c))Object.hasOwn(a,g)||i.filters.where(g,null)}function K(i){const f=i&&i.createGrid;if(typeof f!="function")throw new TypeError("bindGrid needs createGrid: bindGrid({ createGrid, element, props }).");const s=i&&i.registry||null,a=i&&i.router||null,c=j("grid",i.props||{}),g=L({createGrid:f,element:i.element,props:c.config}),{grid:u}=g;let w;c.own.predicates&&(N(u,c.own.predicates,{}),w=c.own.predicates);const E=typeof c.own.name=="string"&&c.own.name?c.own.name:W;s&&s.publish(E,u),a&&c.own.route!==void 0&&a.attach(u,c.own.route,c.own.routeOptions||{});let C=c.own.rowUpdates;const h=k(c.own,"onGridReady");h&&h(u);let m=!1;return{grid:u,update(P){if(m)return;const p=j("grid",P||{});g.update(p.config),Object.is(p.own.predicates,w)||(N(u,p.own.predicates,w),w=p.own.predicates),p.own.rowUpdates&&!Object.is(p.own.rowUpdates,C)&&u.rows.apply(p.own.rowUpdates),C=p.own.rowUpdates;const O=typeof p.own.name=="string"&&p.own.name?p.own.name:W;O!==E&&Z("svelte.grid.mountOnly.name",`LatticeGrid: \`name\` changed from "${E}" to "${O}", but a grid publishes itself under the name it had when it mounted. Nothing was republished and the grid was NOT rebuilt — rebuilding it would throw away scroll position, selection and expansion. Give the component a \`key\`-style \`{#if}\` when a genuine rebuild is wanted.`)},destroy(P){if(m)return;m=!0;const p=k(j("grid",P||{}).own,"onGridDestroyed");if(p&&p(),a)try{a.detach(u)}catch{}s&&s.publish(E,null),g.destroy()}}}const ee=Object.freeze({kpi:Object.freeze({label:"LatticeKPI",requires:Object.freeze([]),fromContext:"grid"}),chart:Object.freeze({label:"LatticeChart",requires:Object.freeze(["grid"]),fromContext:"grid"}),kanban:Object.freeze({label:"LatticeKanban",requires:Object.freeze([]),fromContext:"grid"}),gantt:Object.freeze({label:"LatticeGantt",requires:Object.freeze([]),fromContext:null}),layout:Object.freeze({label:"LatticeLayout",requires:Object.freeze([]),fromContext:null})});function ne(i,f){return i==="chart"?(s,a)=>f({...a,container:s}):i==="gantt"?(s,a)=>f({...a,element:s}):(s,a)=>f(s,a)}function oe(i){const f=String(i&&i.viewer||""),s=i&&i.factory;if(!Object.hasOwn(ee,f))throw new TypeError(`bindViewer: "${f}" is not a viewer this adapter knows; expected one of ${Object.keys(ee).join(", ")}.`);const{label:a,requires:c,fromContext:g}=ee[f];if(typeof s!="function")throw new TypeError(`${a} needs the module's factory: bindViewer({ viewer, factory, element }).`);const u=ne(f,s),w=i.registry||null;let E=null,C=null,h={},m=!1;const P=O=>{if(!g)return null;if(O.grid!==void 0)return O.grid||null;if(!w)return null;const G=typeof O.gridName=="string"&&O.gridName?O.gridName:W;return w.get(G)},p=()=>{const O=E;if(E=null,C=null,!O)return;const G=k(h,"onDestroyed");G&&G(),O.destroy()};return{get instance(){return E?E.instance:null},sync(O){if(m)return;const G=j(f,O||{});h=G.own;const e=P(G.own);if(g&&e&&(G.config[g]=e),E&&!Object.is(C,e)&&p(),!E){for(const n of c)if(G.config[n]===void 0||G.config[n]===null)return;E=v({viewer:f,mount:u,element:i.element,props:G.config,name:a}),C=e;const t=k(G.own,"onReady");t&&t(E.instance);return}E.update(G.config)},destroy(){m||(m=!0,p())}}}function ie(i,f){const s=Array.isArray(i)?i:[],a=f||{};return s.map(c=>c&&c.id).filter(c=>typeof c=="string"&&typeof a[c]=="function")}function ce(i){const f=i&&i.createTabs;if(typeof f!="function")throw new TypeError("bindTabs needs createTabs: bindTabs({ createTabs, element }).");const s=typeof i.onPanels=="function"?i.onPanels:()=>{},a=new Map;let c=null,g=null,u=!1;const w=()=>s([...a.keys()]),E=(C,h)=>{const m=Array.isArray(C.tabs)?C.tabs:[],P=new Set(h);return m.map(p=>{const O=p;return P.has(O.id)?{...O,view:G=>(a.set(O.id,G),w(),{destroy(){a.delete(O.id),w()}})}:O})};return{get instance(){return c?c.instance:null},sync(C){if(u)return;const h=j("tabs",C||{}),m=Array.isArray(h.own.contentIds)?h.own.contentIds:[];if(!c){const O={...h.config,tabs:E(h.config,m)};O.createGrid=i.createGrid||(()=>{throw new Error("[lattice] LatticeTabs: a tab has neither a {#snippet} nor a grid factory to build it with. Give the tab a snippet named after its id, or import the Tabs component from a build that carries createGrid.")}),c=v({viewer:"tabs",mount:f,element:i.element,props:O,name:"LatticeTabs"}),g=h.config.tabs;const G=k(h.own,"onReady");G&&G(c.instance);return}Object.is(g,h.config.tabs)||(g=h.config.tabs,Z("svelte.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, which would have lost whichever tab is open and any state its content holds. Wrap the strip in an `{#if}` you toggle when a genuine rebuild is wanted; a live badge otherwise belongs in your own markup."));const{tabs:P,...p}=h.config;c.update(p)},place(C,h){const m=a.get(C),P=h;!P||!m||P.parentNode===m||m.appendChild(P)},destroy(C){if(u)return;u=!0;const h=c;if(c=null,a.clear(),!h)return;const m=k(j("tabs",C||{}).own,"onDestroyed");m&&m(),h.destroy()}}}function ae(i){const f=i&&i.createDataRouter;if(typeof f!="function")throw new TypeError("createRouterHandle needs createDataRouter: createRouterHandle({ createDataRouter }).");const s=i&&i.config;let a=null,c=!1;const g={get router(){return!a&&!c&&(a=f((typeof s=="function"?s():s)||{})),a},attach(u,w,E){c||g.router.attach(u,w,E||{})},detach(u){c||!a||a.detach(u)},destroy(){c=!0;const u=a;a=null,u&&u.destroy()}};return g}});var re=fe("packages/modules/svelte/index.js");typeof module=="object"&&module.exports?module.exports=re:typeof define=="function"&&define.amd?define(function(){return re}):de.LatticeGridSvelte=re})(typeof globalThis<"u"?globalThis:this);
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=svelte.min.js.map
|
package/modules/tabs.d.ts
CHANGED
package/modules/tabs.esm.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.71.
|
|
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
|
-
var we=Object.create(null),$e=Object.create(null);function be(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}be("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 se}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return le}}),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 de}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ye}});const A="1.71.0";async function D(){return A}const w="1.71.0",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 p=new Map;function y(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=G=>{let B=G;for(let I=0;I<g;I++){if(B==null)return;B=B[s[I]]}return B}}return p.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=(G,B)=>{let I=G;for(let q=0;q<g;q++){if(I==null)return;const e=s[q];I[e]==null&&(I[e]={}),I=I[e]}I!=null&&(I[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 _={"&":"&","<":"<",">":">",'"':""","'":"'"};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 ae=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(ae.has(g))continue;const G=r[g];G!==void 0&&(s[g]=z(G)&&z(s[g])?te(s[g],G):G)}return s}function se(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 ge{#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 ue=new Map;function ce(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ue.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ue.set(s,g)),g}function he(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 le(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const fe=typeof requestAnimationFrame=="function";function ne(n){return fe?requestAnimationFrame(n):setTimeout(()=>n(le()),16)}function re(n){n!=null&&(fe?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},G=(...B)=>{s=B,r===null&&(r=ne(g))};return G.cancel=()=>{re(r),r=null,s=null},G.flush=()=>{r!==null&&(re(r),g())},G}function pe(n,r){let s=null,g=null;const G=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(G,r),typeof s?.unref=="function"&&s.unref()},I=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return I.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},I.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},I.pending=()=>s!==null||g!==null,I}function de(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let me=0;function ye(n="l"){return`${n}${(++me).toString(36)}`}}),be("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 p of[...l])p(b)}emitBefore(d,b,l){const p=l??(b&&b.origin),y=p==="api"||p==="user"||p==="init"?p:"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
|
+
var we=Object.create(null),$e=Object.create(null);function be(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}be("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 se}}),Object.defineProperty(c,"Lru",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(c,"collator",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(c,"defaultCompare",{enumerable:!0,get:function(){return he}}),Object.defineProperty(c,"now",{enumerable:!0,get:function(){return le}}),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 de}}),Object.defineProperty(c,"uid",{enumerable:!0,get:function(){return ye}});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 p=new Map;function y(n){let r=p.get(n);if(r)return r;if(!n.includes("."))r=s=>s?.[n];else{const s=n.split("."),g=s.length;r=G=>{let B=G;for(let I=0;I<g;I++){if(B==null)return;B=B[s[I]]}return B}}return p.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=(G,B)=>{let I=G;for(let q=0;q<g;q++){if(I==null)return;const e=s[q];I[e]==null&&(I[e]={}),I=I[e]}I!=null&&(I[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 _={"&":"&","<":"<",">":">",'"':""","'":"'"};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 ae=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(ae.has(g))continue;const G=r[g];G!==void 0&&(s[g]=z(G)&&z(s[g])?te(s[g],G):G)}return s}function se(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 ge{#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 ue=new Map;function ce(n,r){const s=`${n||""}|${r?JSON.stringify(r):""}`;let g=ue.get(s);return g||(g=new Intl.Collator(n||void 0,{numeric:!0,sensitivity:"variant",...r}),ue.set(s,g)),g}function he(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 le(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const fe=typeof requestAnimationFrame=="function";function ne(n){return fe?requestAnimationFrame(n):setTimeout(()=>n(le()),16)}function re(n){n!=null&&(fe?cancelAnimationFrame(n):clearTimeout(n))}function oe(n){let r=null,s=null;const g=()=>{r=null;const B=s;s=null,n(...B||[])},G=(...B)=>{s=B,r===null&&(r=ne(g))};return G.cancel=()=>{re(r),r=null,s=null},G.flush=()=>{r!==null&&(re(r),g())},G}function pe(n,r){let s=null,g=null;const G=()=>{if(s=null,g===null)return;const q=g;g=null,n(...q),B()},B=()=>{s=setTimeout(G,r),typeof s?.unref=="function"&&s.unref()},I=(...q)=>{s===null?(n(...q),B()):(g=q,clearTimeout(s),B())};return I.flush=()=>{if(s!==null&&clearTimeout(s),s=null,g===null)return;const q=g;g=null,n(...q)},I.cancel=()=>{s!==null&&clearTimeout(s),s=null,g=null},I.pending=()=>s!==null||g!==null,I}function de(n,r=50){return typeof requestIdleCallback=="function"?requestIdleCallback(n,{timeout:r}):setTimeout(()=>n({timeRemaining:()=>0,didTimeout:!0}),1)}let me=0;function ye(n="l"){return`${n}${(++me).toString(36)}`}}),be("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 p of[...l])p(b)}emitBefore(d,b,l){const p=l??(b&&b.origin),y=p==="api"||p==="user"||p==="init"?p:"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)));
|