@toclocoinc/lattice-grid 1.89.0 → 1.89.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +5 -5
- package/docs/THEMING.md +27 -0
- package/docs/api/adapters.html +1 -1
- package/docs/api/ai.html +1 -1
- package/docs/api/alarms.html +1 -1
- package/docs/api/calendar.html +1 -1
- package/docs/api/charts.html +1 -1
- package/docs/api/dashboard.html +1 -1
- package/docs/api/data-router.html +1 -1
- package/docs/api/deckgl.html +1 -1
- package/docs/api/designer.html +2 -2
- package/docs/api/gantt.html +1 -1
- package/docs/api/geometry.html +1 -1
- package/docs/api/grid.html +2 -2
- package/docs/api/index.html +1 -1
- package/docs/api/kanban.html +1 -1
- package/docs/api/kpi.html +1 -1
- package/docs/api/layout.html +1 -1
- package/docs/api/leaflet.html +1 -1
- package/docs/api/list.html +1 -1
- package/docs/api/mapview.html +1 -1
- package/docs/api/mock-socket.html +1 -1
- package/docs/api/presets.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 +1 -1
- package/lattice-grid.d.ts +1 -1
- package/lattice-grid.esm.min.js +3 -3
- package/lattice-grid.min.cjs +3 -3
- package/lattice-grid.min.css +1 -1
- 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/calendar.d.ts +1 -1
- package/modules/calendar.esm.min.js +2 -2
- package/modules/calendar.min.cjs +2 -2
- package/modules/calendar.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-barrace.d.ts +1 -1
- package/modules/chart-barrace.esm.min.js +1 -1
- package/modules/chart-barrace.min.cjs +1 -1
- package/modules/chart-barrace.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-choropleth.d.ts +1 -1
- package/modules/chart-choropleth.esm.min.js +1 -1
- package/modules/chart-choropleth.min.cjs +1 -1
- package/modules/chart-choropleth.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-forcetree.d.ts +1 -1
- package/modules/chart-forcetree.esm.min.js +1 -1
- package/modules/chart-forcetree.min.cjs +1 -1
- package/modules/chart-forcetree.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-motion.d.ts +1 -1
- package/modules/chart-motion.esm.min.js +1 -1
- package/modules/chart-motion.min.cjs +1 -1
- package/modules/chart-motion.min.js +1 -1
- package/modules/chart-pack.d.ts +1 -1
- package/modules/chart-pack.esm.min.js +1 -1
- package/modules/chart-pack.min.cjs +1 -1
- package/modules/chart-pack.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-pictorial.d.ts +1 -1
- package/modules/chart-pictorial.esm.min.js +1 -1
- package/modules/chart-pictorial.min.cjs +1 -1
- package/modules/chart-pictorial.min.js +1 -1
- package/modules/chart-polararea.d.ts +1 -1
- package/modules/chart-polararea.esm.min.js +1 -1
- package/modules/chart-polararea.min.cjs +1 -1
- package/modules/chart-polararea.min.js +1 -1
- package/modules/chart-polarscatter.d.ts +1 -1
- package/modules/chart-polarscatter.esm.min.js +1 -1
- package/modules/chart-polarscatter.min.cjs +1 -1
- package/modules/chart-polarscatter.min.js +1 -1
- package/modules/chart-pyramid.d.ts +1 -1
- package/modules/chart-pyramid.esm.min.js +1 -1
- package/modules/chart-pyramid.min.cjs +1 -1
- package/modules/chart-pyramid.min.js +1 -1
- package/modules/chart-radialbar.d.ts +1 -1
- package/modules/chart-radialbar.esm.min.js +1 -1
- package/modules/chart-radialbar.min.cjs +1 -1
- package/modules/chart-radialbar.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-serpentine.d.ts +1 -1
- package/modules/chart-serpentine.esm.min.js +1 -1
- package/modules/chart-serpentine.min.cjs +1 -1
- package/modules/chart-serpentine.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-spiral.d.ts +1 -1
- package/modules/chart-spiral.esm.min.js +1 -1
- package/modules/chart-spiral.min.cjs +1 -1
- package/modules/chart-spiral.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-tree.d.ts +1 -1
- package/modules/chart-tree.esm.min.js +1 -1
- package/modules/chart-tree.min.cjs +1 -1
- package/modules/chart-tree.min.js +1 -1
- package/modules/chart-venn.d.ts +1 -1
- package/modules/chart-venn.esm.min.js +1 -1
- package/modules/chart-venn.min.cjs +1 -1
- package/modules/chart-venn.min.js +1 -1
- package/modules/chart-voronoi.d.ts +1 -1
- package/modules/chart-voronoi.esm.min.js +1 -1
- package/modules/chart-voronoi.min.cjs +1 -1
- package/modules/chart-voronoi.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/chart-wordcloud.d.ts +1 -1
- package/modules/chart-wordcloud.esm.min.js +1 -1
- package/modules/chart-wordcloud.min.cjs +1 -1
- package/modules/chart-wordcloud.min.js +1 -1
- package/modules/charts.d.ts +1 -1
- package/modules/charts.esm.min.js +2 -2
- package/modules/charts.min.cjs +2 -2
- package/modules/charts.min.js +2 -2
- package/modules/dashboard.d.ts +1 -1
- package/modules/dashboard.esm.min.js +2 -2
- package/modules/dashboard.min.cjs +2 -2
- package/modules/dashboard.min.js +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/deckgl.d.ts +1 -1
- package/modules/deckgl.esm.min.js +2 -2
- package/modules/deckgl.min.cjs +2 -2
- package/modules/deckgl.min.js +2 -2
- package/modules/designer.d.ts +1 -1
- package/modules/designer.esm.min.js +187 -73
- package/modules/designer.esm.min.js.map +2 -2
- package/modules/designer.min.cjs +187 -73
- package/modules/designer.min.js +187 -73
- package/modules/designer.min.js.map +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 +1 -1
- package/modules/geo-europe-nuts.min.js +1 -1
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-uk.min.cjs +1 -1
- package/modules/geo-uk.min.js +1 -1
- 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 +1 -1
- package/modules/geo-us-states.min.js +1 -1
- 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 +1 -1
- package/modules/geo-world-110m.min.js +1 -1
- 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 +1 -1
- package/modules/geo-world-50m.min.js +1 -1
- package/modules/geometry.d.ts +1 -1
- package/modules/geometry.esm.min.js +2 -2
- package/modules/geometry.min.cjs +2 -2
- package/modules/geometry.min.js +2 -2
- 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/leaflet.d.ts +1 -1
- package/modules/leaflet.esm.min.js +2 -2
- package/modules/leaflet.min.cjs +2 -2
- package/modules/leaflet.min.js +2 -2
- package/modules/list.d.ts +1 -1
- package/modules/list.esm.min.js +2 -2
- package/modules/list.min.cjs +2 -2
- package/modules/list.min.js +2 -2
- package/modules/mapview.d.ts +1 -1
- package/modules/mapview.esm.min.js +2 -2
- package/modules/mapview.min.cjs +2 -2
- package/modules/mapview.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/presets/antd5.css +9 -0
- package/modules/presets/bootstrap5.css +9 -0
- package/modules/presets/fluent2.css +9 -0
- package/modules/presets/material3.css +9 -0
- package/modules/presets.d.ts +1 -1
- package/modules/presets.esm.min.js +2 -2
- package/modules/presets.min.cjs +2 -2
- package/modules/presets.min.js +2 -2
- 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
package/modules/htmx.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.89.
|
|
2
|
+
* Lattice Grid 1.89.1, htmx module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(mr){"use strict";var _n=Object.create(null),qn=Object.create(null);function $e(e,W){_n[e]=W}function Rn(e){var W=qn[e];if(W)return W;var Z=Object.create(null);qn[e]=Z;var $=_n[e];if(!$)throw new Error("[lattice] missing module: "+e);return $(Z,Rn),Z}$e("packages/core/src/internal/util.js",function(e,W){"use strict";Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"reportedWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"warnOnce",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"infoOnce",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"resetWarnings",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"fail",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"invariant",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"DEV",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"isObject",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"isFunction",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"isNil",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"isBlank",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"isCtor",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"pathGetter",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"pathSetter",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"getPath",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"setPath",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"humanise",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"escapeHtml",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"titleCase",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"mergeRow",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"Lru",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"collator",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"defaultCompare",{enumerable:!0,get:function(){return R}}),Object.defineProperty(e,"now",{enumerable:!0,get:function(){return k}}),Object.defineProperty(e,"nextFrame",{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,"cancelFrame",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"frameBatched",{enumerable:!0,get:function(){return q}}),Object.defineProperty(e,"settleDebounce",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(e,"whenIdle",{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,"uid",{enumerable:!0,get:function(){return ne}});const Z="1.89.0";async function $(){return Z}const B="1.89.0",D=new Set,K=2e3;function Q(ie){if(D.add(ie),D.size>K){const se=D.values().next().value;se!==void 0&&D.delete(se)}}const G=[],H=500;function _(ie,se,we){G.push({key:ie,level:se,message:we.map(he=>typeof he=="string"?he:z(he)).join(" "),at:Date.now()}),G.length>H&&G.shift()}function z(ie){if(ie instanceof Error)return ie.message;try{return JSON.stringify(ie)}catch{return String(ie)}}function v(){return G.map(ie=>({...ie}))}function S(ie){if(ie.length===0||typeof ie[0]!="string")return ie;const se=ie[0].replace(/^\[lattice\]\s*/,"");return se===ie[0]?ie:[se,...ie.slice(1)]}function g(ie,...se){if(D.has(ie))return;Q(ie);const we=S(se);_(ie,"warn",we),console.warn("[lattice]",...we)}function u(ie,...se){if(D.has(ie))return;Q(ie);const we=S(se);_(ie,"info",we),console.info("[lattice]",...we)}function f(){D.clear(),G.length=0}function a(ie,se){const we=new Error(`[lattice] ${ie}`);throw se!==void 0&&(we.cause=se),we}function r(ie,se){ie||a(se)}const t=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function n(ie){return ie!==null&&typeof ie=="object"&&!Array.isArray(ie)}function o(ie){return typeof ie=="function"}function l(ie){return ie==null}function c(ie){return ie==null||ie===""}function i(ie){return typeof ie!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(ie))?!0:!!(ie.prototype&&Object.getOwnPropertyNames(ie.prototype).length>1)}const m=new Map;function d(ie){let se=m.get(ie);if(se)return se;if(!ie.includes("."))se=we=>we?.[ie];else{const we=ie.split("."),he=we.length;se=te=>{let ae=te;for(let ge=0;ge<he;ge++){if(ae==null)return;ae=ae[we[ge]]}return ae}}return m.set(ie,se),se}const h=new Map;function s(ie){let se=h.get(ie);if(se)return se;if(!ie.includes("."))se=(we,he)=>{we!=null&&(we[ie]=he)};else{const we=ie.split("."),he=we.length-1;se=(te,ae)=>{let ge=te;for(let be=0;be<he;be++){if(ge==null)return;const je=we[be];ge[je]==null&&(ge[je]={}),ge=ge[je]}ge!=null&&(ge[we[he]]=ae)}}return h.set(ie,se),se}function p(ie,se){return d(se)(ie)}function w(ie,se,we){s(se)(ie,we)}function A(ie){return ie?(ie.includes(".")?ie.slice(ie.lastIndexOf(".")+1):ie).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(/^./,we=>we.toUpperCase()):""}const P={"&":"&","<":"<",">":">",'"':""","'":"'"};function b(ie){const se=ie==null?"":String(ie);return/[&<>"']/.test(se)?se.replace(/[&<>"']/g,we=>P[we]):se}function O(ie){return String(ie).replace(/\w\S*/g,se=>se[0].toUpperCase()+se.slice(1).toLowerCase())}function x(ie,se,we){if(ie!==void 0)return ie===!0?{enabled:!0,...we}:ie===!1?{enabled:!1}:n(ie)?ie:{[se]:ie,enabled:!0}}function j(ie){return ie==null?[]:Array.isArray(ie)?ie:[ie]}const F=Object.freeze(new Set(["__proto__","constructor","prototype"]));function C(ie,se){if(!n(ie))return n(se)?{...se}:se;if(!n(se))return se===void 0?ie:se;const we={...ie};for(const he of Object.keys(se)){if(F.has(he))continue;const te=se[he];te!==void 0&&(we[he]=n(te)&&n(we[he])?C(we[he],te):te)}return we}function M(ie,se){if(!n(ie)||!n(se)||ie===se)return se;const we=Object.create(Object.getPrototypeOf(ie));return Object.assign(we,ie,se),we}class L{#e;#t=new Map;#n;constructor(se=256,we=null){this.#e=se,this.#n=we}get size(){return this.#t.size}get max(){return this.#e}set max(se){this.#e=se,this.#r()}has(se){return this.#t.has(se)}get(se){const we=this.#t;if(!we.has(se))return;const he=we.get(se);return we.delete(se),we.set(se,he),he}peek(se){return this.#t.get(se)}set(se,we){const he=this.#t;return he.has(se)&&he.delete(se),he.set(se,we),this.#r(),we}delete(se){const we=this.#t.get(se);return this.#t.delete(se)&&this.#n&&this.#n(we,se),we}clear(){if(this.#n)for(const[se,we]of this.#t)this.#n(we,se);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const se=this.#t;for(;se.size>this.#e;){const we=se.keys().next().value,he=se.get(we);se.delete(we),this.#n&&this.#n(he,we)}}}const E=new Map;function I(ie,se){const we=`${ie||""}|${se?JSON.stringify(se):""}`;let he=E.get(we);return he||(he=new Intl.Collator(ie||void 0,{numeric:!0,sensitivity:"variant",...se}),E.set(we,he)),he}function R(ie,se){if(ie===se)return 0;if(ie==null)return 1;if(se==null)return-1;if(typeof ie=="number"&&typeof se=="number")return Number.isNaN(ie)?Number.isNaN(se)?0:1:Number.isNaN(se)||ie<se?-1:ie>se?1:0;const we=String(ie),he=String(se);return we<he?-1:we>he?1:0}function k(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const y=typeof requestAnimationFrame=="function";function T(ie){return y?requestAnimationFrame(ie):setTimeout(()=>ie(k()),16)}function V(ie){ie!=null&&(y?cancelAnimationFrame(ie):clearTimeout(ie))}function q(ie){let se=null,we=null;const he=()=>{se=null;const ae=we;we=null,ie(...ae||[])},te=(...ae)=>{we=ae,se===null&&(se=T(he))};return te.cancel=()=>{V(se),se=null,we=null},te.flush=()=>{se!==null&&(V(se),he())},te}function Y(ie,se){let we=null,he=null;const te=()=>{if(we=null,he===null)return;const be=he;he=null,ie(...be),ae()},ae=()=>{we=setTimeout(te,se),typeof we?.unref=="function"&&we.unref()},ge=(...be)=>{we===null?(ie(...be),ae()):(he=be,clearTimeout(we),ae())};return ge.flush=()=>{if(we!==null&&clearTimeout(we),we=null,he===null)return;const be=he;he=null,ie(...be)},ge.cancel=()=>{we!==null&&clearTimeout(we),we=null,he=null},ge.pending=()=>we!==null||he!==null,ge}function J(ie,se=50){return typeof requestIdleCallback=="function"?requestIdleCallback(ie,{timeout:se}):setTimeout(()=>ie({timeRemaining:()=>0,didTimeout:!0}),1)}let ee=0;function ne(ie="l"){return`${ie}${(++ee).toString(36)}`}}),$e("packages/core/src/formatting/rules.js",function(e,W){"use strict";Object.defineProperty(e,"RULE_OPS",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"DISTRIBUTION_OPS",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"DISTRIBUTION_LABELS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"testRule",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"mixColour",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"summariseColumn",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"quantileOf",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"needsDistribution",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"resolveDistribution",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"ICON_SETS",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"compileRules",{enumerable:!0,get:function(){return O}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=Object.freeze(["eq","ne","gt","gte","lt","lte","between","outside","contains","notContains","startsWith","endsWith","blank","notBlank","true","false"]),K=Object.freeze(["topPercent","bottomPercent","topN","bottomN","aboveMean","belowMean","aboveMedian","belowMedian","zAbove","zBelow","outlier"]),Q=Object.freeze({topPercent:"In the top %",bottomPercent:"In the bottom %",topN:"In the top N",bottomN:"In the bottom N",aboveMean:"Above average",belowMean:"Below average",aboveMedian:"Above the median",belowMedian:"Below the median",zAbove:"Standard deviations above the mean",zBelow:"Standard deviations below the mean",outlier:"An outlier"});function G(x,j){const F=Number(x),C=Number(j);if(x!==null&&x!==""&&j!==null&&j!==""&&Number.isFinite(F)&&Number.isFinite(C))return F<C?-1:F>C?1:0;const L=String(x??"").toLowerCase(),E=String(j??"").toLowerCase();return L<E?-1:L>E?1:0}function H(x){return x==null||x===""}function _(x,j){if(!j||typeof j!="object")return!1;const{op:F}=j,C=j.value,M=j.value2;switch(F){case"blank":return H(x);case"notBlank":return!H(x);case"true":return x===!0;case"false":return x===!1;default:break}if(H(x))return!1;switch(F){case"eq":return G(x,C)===0;case"ne":return G(x,C)!==0;case"gt":return G(x,C)>0;case"gte":return G(x,C)>=0;case"lt":return G(x,C)<0;case"lte":return G(x,C)<=0;case"between":return G(x,C)>=0&&G(x,M)<=0;case"outside":return G(x,C)<0||G(x,M)>0;case"contains":return String(x).toLowerCase().includes(String(C??"").toLowerCase());case"notContains":return!String(x).toLowerCase().includes(String(C??"").toLowerCase());case"startsWith":return String(x).toLowerCase().startsWith(String(C??"").toLowerCase());case"endsWith":return String(x).toLowerCase().endsWith(String(C??"").toLowerCase());default:return!1}}function z(x,j,F){const C=V=>{const q=String(V).replace("#",""),Y=q.length===3?q.split("").map(J=>J+J).join(""):q;return[0,2,4].map(J=>parseInt(Y.slice(J,J+2),16)||0)},[M,L,E]=C(x),[I,R,k]=C(j),y=Math.max(0,Math.min(1,F)),T=(V,q)=>Math.round(V+(q-V)*y);return`#${[T(M,I),T(L,R),T(E,k)].map(V=>V.toString(16).padStart(2,"0")).join("")}`}function v(x){const j=[];for(const I of x||[]){if(I==null||I==="")continue;const R=I instanceof Date?I.getTime():Number(I);Number.isFinite(R)&&j.push(R)}if(!j.length)return null;j.sort((I,R)=>I-R);let F=0,C=0,M=0;for(const I of j){F++;const R=I-C;C+=R/F,M+=R*(I-C)}const L=S(j,.25),E=S(j,.75);return{n:j.length,min:j[0],max:j[j.length-1],mean:C,stddev:j.length>1?Math.sqrt(M/(j.length-1)):0,median:S(j,.5),q1:L,q3:E,iqr:E-L,sorted:j}}function S(x,j){if(!x.length)return 0;const F=(x.length-1)*Math.max(0,Math.min(1,j)),C=Math.floor(F),M=Math.ceil(F);return C===M?x[C]:x[C]+(F-C)*(x[M]-x[C])}function g(x){for(const j of Array.isArray(x)?x:[])if(!(!j||typeof j!="object")&&(j.when&&K.includes(j.when.op)||j.scale&&j.scale.from||j.dataBar&&!(Number.isFinite(Number(j.dataBar.min))&&Number.isFinite(Number(j.dataBar.max)))||j.iconSet&&!Array.isArray(j.iconSet.thresholds)))return!0;return!1}function u(x,j){const F=Number(x.value),C=M=>S(j.sorted,M);switch(x.op){case"topPercent":{const M=f(F,10);return{op:"gte",value:C(1-M)}}case"bottomPercent":{const M=f(F,10);return{op:"lte",value:C(M)}}case"topN":{const M=Math.max(1,Math.floor(F)||1),L=Math.max(0,j.sorted.length-M);return{op:"gte",value:j.sorted[L]}}case"bottomN":{const M=Math.max(1,Math.floor(F)||1),L=Math.min(j.sorted.length-1,M-1);return{op:"lte",value:j.sorted[L]}}case"aboveMean":return{op:"gt",value:j.mean};case"belowMean":return{op:"lt",value:j.mean};case"aboveMedian":return{op:"gt",value:j.median};case"belowMedian":return{op:"lt",value:j.median};case"zAbove":return j.stddev?{op:"gte",value:j.mean+(Number.isFinite(F)?F:2)*j.stddev}:null;case"zBelow":return j.stddev?{op:"lte",value:j.mean-(Number.isFinite(F)?F:2)*j.stddev}:null;case"outlier":{const M=(Number.isFinite(F)&&F>0?F:1.5)*j.iqr;return j.iqr?{op:"outside",value:j.q1-M,value2:j.q3+M}:null}default:return null}}function f(x,j){const F=Number.isFinite(x)?x:j,C=F>1?F/100:F;return Math.max(0,Math.min(1,C))}function a(x,j){if(x.from==="minmax")return{...x,min:j.min,max:j.max};if(x.from==="quantile")return{...x,min:S(j.sorted,f(Number(x.low),5)),max:S(j.sorted,f(Number(x.high),95))};if(x.from==="stddev"){const F=Number.isFinite(Number(x.deviations))?Number(x.deviations):2;return{...x,min:j.mean-F*j.stddev,max:j.mean+F*j.stddev}}return x}function r(x,j){const F=Array.isArray(x)?x:[];return!j||!j.n?F.map(C=>C&&g([C])?{...C,enabled:!1}:C):F.map(C=>{if(!C||typeof C!="object")return C;if(C.scale&&C.scale.from)return{...C,scale:a(C.scale,j)};if(C.dataBar)return{...C,dataBar:t(C.dataBar,j)};if(C.iconSet)return{...C,iconSet:n(C.iconSet,j)};if(!C.when||!K.includes(C.when.op))return C;const M=u(C.when,j);return M?{...C,when:M}:{...C,enabled:!1}})}function t(x,j){const F=Number.isFinite(Number(x.min))?Number(x.min):void 0,C=Number.isFinite(Number(x.max))?Number(x.max):void 0;if(F!==void 0&&C!==void 0)return{...x,min:F,max:C};if(x.from==="quantile")return{...x,min:F??S(j.sorted,f(Number(x.low),5)),max:C??S(j.sorted,f(Number(x.high),95))};if(x.from==="stddev"){const M=Number.isFinite(Number(x.deviations))?Number(x.deviations):2;return{...x,min:F??j.mean-M*j.stddev,max:C??j.mean+M*j.stddev}}return{...x,min:F??j.min,max:C??j.max}}function n(x,j){if(Array.isArray(x.thresholds))return x;const F=o(x),C=[];for(let M=1;M<F;M++)C.push(S(j.sorted,M/F));return{...x,thresholds:C}}function o(x){if(Array.isArray(x.icons)&&x.icons.length>=2)return x.icons.length;if(Number.isFinite(Number(x.count))&&Number(x.count)>=2)return Math.floor(Number(x.count));const j=s[x.set];return j?j.length:3}function l(x){return`url("data:image/svg+xml,${encodeURIComponent(x)}")`}function c(x){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6" fill="${x}"/></svg>`}function i(x,j){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polygon points="${j==="up"?"8,2 14,13 2,13":j==="down"?"2,3 14,3 8,14":"4,2 14,8 4,14"}" fill="${x}"/></svg>`}function m(x,j){const F="M8 1l1.9 3.9 4.3.6-3.1 3 .7 4.3L8 13.8 4.2 15.8l.7-4.3-3.1-3 4.3-.6z";let C=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${j*16} 16">`;for(let M=0;M<j;M++){const L=M<x?"#f5a623":"#d0d0d0";C+=`<path transform="translate(${M*16},0)" d="${F}" fill="${L}"/>`}return`${C}</svg>`}const d=Object.freeze([i("#c0392b","down"),i("#e0a800","right"),i("#2e7d32","up")]),h=Object.freeze([c("#d13438"),c("#f5a623"),c("#2e9e44")]),s=Object.freeze({arrows:d,trafficLights:h,ratings:Object.freeze([1,2,3,4,5].map(x=>m(x,5)))}),p=Object.freeze({arrows:"Arrows",trafficLights:"Traffic lights",ratings:"Ratings"});function w(x){if(Array.isArray(x.icons)&&x.icons.length>=2)return x.icons.map(C=>/^\s*(url\(|data:|<)/.test(String(C))&&String(C).trim().startsWith("<")?l(String(C)):String(C));const j=x.set||"arrows";if(j==="ratings"){const C=o(x),M=[];for(let L=1;L<=C;L++)M.push(l(m(L,C)));return M}const F=s[j];return F?F.map(l):(B(`iconSet:${j}`,`unknown icon set '${j}'; falling back to arrows.`),d.map(l))}function A(x){const j=Number(x.min),C=Number(x.max)-j,M=x.colour||x.color||"#5b9bd5",L=x.negativeColour||x.negativeColor||"#d13438",E=x.direction==="rtl"?"left":"right",I=k=>Math.max(0,Math.min(1,(k-j)/C))*100,R=C?Math.max(0,Math.min(100,(0-j)/C*100)):0;return k=>{if(H(k))return null;const y=Number(k);if(!Number.isFinite(y)||!C)return null;const T=I(y),V=Math.min(T,R),q=Math.max(T,R),Y=y>=0?M:L;return{backgroundImage:`linear-gradient(to ${E}, transparent ${V}%, ${Y} ${V}%, ${Y} ${q}%, transparent ${q}%)`,backgroundRepeat:"no-repeat",backgroundPosition:"0 0"}}}function P(x){const j=w(x),F=x.reverse?[...j].reverse():j,C=(Array.isArray(x.thresholds)?x.thresholds:[]).map(Number).filter(Number.isFinite),M=Number.isFinite(Number(x.size))?Number(x.size):16,L=x.set==="ratings"?M*o(x):M;return E=>{if(H(E))return null;const I=Number(E);if(!Number.isFinite(I))return null;let R=0;for(const y of C)I>=y&&R++;const k=F[Math.min(R,F.length-1)];return k?{backgroundImage:k,backgroundRepeat:"no-repeat",backgroundPosition:"left center",backgroundSize:`${L}px ${M}px`,paddingLeft:`${L+4}px`}:null}}function b(x){const j=Array.isArray(x.colours)&&x.colours.length>=2?x.colours:["#f8f9fa","#1a6bc7"],F=Number(x.min),C=Number(x.max),M=C-F,L=j.length-1,E=[];for(let R=0;R<=L;R++)E.push(L?R/L:0);const I=Number(x.mid);if(x.mid!==void 0&&x.mid!==null)if(j.length%2===0)B("formatting.scale.mid.even",`a scale's "mid" needs an odd number of colours (a middle stop to pin); ${j.length} were given, so "mid" was ignored.`);else if(Number.isFinite(I)&&M&&I>Math.min(F,C)&&I<Math.max(F,C)){const R=L/2,k=Math.max(0,Math.min(1,(I-F)/M));for(let y=0;y<=L;y++)E[y]=y<=R?R?y/R*k:k:k+(y-R)/(L-R)*(1-k)}else Number.isFinite(I)&&B("formatting.scale.mid.range",`a scale's "mid" (${I}) is outside its min..max range, so it was ignored.`);return R=>{const k=Number(R);if(!Number.isFinite(k)||!M)return null;const y=Math.max(0,Math.min(1,(k-F)/M));let T=0;for(;T<L-1&&y>E[T+1];)T++;const V=E[T+1]-E[T],q=V>0?(y-E[T])/V:0;return{background:z(j[T],j[T+1],Math.max(0,Math.min(1,q)))}}}function O(x,j=null){const F=g(x)?r(x,j):x,C=(Array.isArray(F)?F:[]).filter(L=>L&&typeof L=="object");if(!C.length)return()=>null;const M=C.map(L=>L.scale?{scale:b(L.scale),enabled:L.enabled!==!1}:L.dataBar?{scale:A(L.dataBar),enabled:L.enabled!==!1}:L.iconSet?{scale:P(L.iconSet),enabled:L.enabled!==!1}:{when:L.when,style:L.style,stop:L.stopIfTrue!==!1,enabled:L.enabled!==!1});return L=>{const E=L?L.value:void 0;let I=null;for(const R of M){if(!R.enabled)continue;if(R.scale){const y=R.scale(E);y&&(I={...I||{},...y});continue}if(!_(E,R.when))continue;const k=$(R.style)?R.style(L):R.style;if(k&&(I={...I||{},...k}),R.stop)break}return I}}}),$e("packages/core/src/formula/parse.js",function(e,W){"use strict";Object.defineProperty(e,"FormulaError",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"tokenise",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"parseFormula",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"referencesOf",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"looksLikeFormula",{enumerable:!0,get:function(){return t}});const Z="num",$="str",B="ref",D="name",K="op",Q="end",G=["<=",">=","<>","!="],H="+-*/^%(),<>=";class _ extends Error{constructor(o,l){super(o),this.name="FormulaError",this.at=l}}function z(n){const o=[];let l=0;for(;l<n.length;){const c=n[l];if(c===" "||c===" "||c===`
|
|
6
|
+
(function(mr){"use strict";var _n=Object.create(null),qn=Object.create(null);function $e(e,W){_n[e]=W}function Rn(e){var W=qn[e];if(W)return W;var Z=Object.create(null);qn[e]=Z;var $=_n[e];if(!$)throw new Error("[lattice] missing module: "+e);return $(Z,Rn),Z}$e("packages/core/src/internal/util.js",function(e,W){"use strict";Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"reportedWarnings",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"warnOnce",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"infoOnce",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"resetWarnings",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"fail",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"invariant",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"DEV",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"isObject",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"isFunction",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"isNil",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"isBlank",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"isCtor",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"pathGetter",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"pathSetter",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"getPath",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"setPath",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"humanise",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"escapeHtml",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"titleCase",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"mergeRow",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"Lru",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"collator",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"defaultCompare",{enumerable:!0,get:function(){return R}}),Object.defineProperty(e,"now",{enumerable:!0,get:function(){return k}}),Object.defineProperty(e,"nextFrame",{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,"cancelFrame",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"frameBatched",{enumerable:!0,get:function(){return q}}),Object.defineProperty(e,"settleDebounce",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(e,"whenIdle",{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,"uid",{enumerable:!0,get:function(){return ne}});const Z="1.89.1";async function $(){return Z}const B="1.89.1",D=new Set,K=2e3;function Q(ie){if(D.add(ie),D.size>K){const se=D.values().next().value;se!==void 0&&D.delete(se)}}const G=[],H=500;function _(ie,se,we){G.push({key:ie,level:se,message:we.map(he=>typeof he=="string"?he:z(he)).join(" "),at:Date.now()}),G.length>H&&G.shift()}function z(ie){if(ie instanceof Error)return ie.message;try{return JSON.stringify(ie)}catch{return String(ie)}}function v(){return G.map(ie=>({...ie}))}function S(ie){if(ie.length===0||typeof ie[0]!="string")return ie;const se=ie[0].replace(/^\[lattice\]\s*/,"");return se===ie[0]?ie:[se,...ie.slice(1)]}function g(ie,...se){if(D.has(ie))return;Q(ie);const we=S(se);_(ie,"warn",we),console.warn("[lattice]",...we)}function u(ie,...se){if(D.has(ie))return;Q(ie);const we=S(se);_(ie,"info",we),console.info("[lattice]",...we)}function f(){D.clear(),G.length=0}function a(ie,se){const we=new Error(`[lattice] ${ie}`);throw se!==void 0&&(we.cause=se),we}function r(ie,se){ie||a(se)}const t=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function n(ie){return ie!==null&&typeof ie=="object"&&!Array.isArray(ie)}function o(ie){return typeof ie=="function"}function l(ie){return ie==null}function c(ie){return ie==null||ie===""}function i(ie){return typeof ie!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(ie))?!0:!!(ie.prototype&&Object.getOwnPropertyNames(ie.prototype).length>1)}const m=new Map;function d(ie){let se=m.get(ie);if(se)return se;if(!ie.includes("."))se=we=>we?.[ie];else{const we=ie.split("."),he=we.length;se=te=>{let ae=te;for(let ge=0;ge<he;ge++){if(ae==null)return;ae=ae[we[ge]]}return ae}}return m.set(ie,se),se}const h=new Map;function s(ie){let se=h.get(ie);if(se)return se;if(!ie.includes("."))se=(we,he)=>{we!=null&&(we[ie]=he)};else{const we=ie.split("."),he=we.length-1;se=(te,ae)=>{let ge=te;for(let be=0;be<he;be++){if(ge==null)return;const je=we[be];ge[je]==null&&(ge[je]={}),ge=ge[je]}ge!=null&&(ge[we[he]]=ae)}}return h.set(ie,se),se}function p(ie,se){return d(se)(ie)}function w(ie,se,we){s(se)(ie,we)}function A(ie){return ie?(ie.includes(".")?ie.slice(ie.lastIndexOf(".")+1):ie).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(/^./,we=>we.toUpperCase()):""}const P={"&":"&","<":"<",">":">",'"':""","'":"'"};function b(ie){const se=ie==null?"":String(ie);return/[&<>"']/.test(se)?se.replace(/[&<>"']/g,we=>P[we]):se}function O(ie){return String(ie).replace(/\w\S*/g,se=>se[0].toUpperCase()+se.slice(1).toLowerCase())}function x(ie,se,we){if(ie!==void 0)return ie===!0?{enabled:!0,...we}:ie===!1?{enabled:!1}:n(ie)?ie:{[se]:ie,enabled:!0}}function j(ie){return ie==null?[]:Array.isArray(ie)?ie:[ie]}const F=Object.freeze(new Set(["__proto__","constructor","prototype"]));function C(ie,se){if(!n(ie))return n(se)?{...se}:se;if(!n(se))return se===void 0?ie:se;const we={...ie};for(const he of Object.keys(se)){if(F.has(he))continue;const te=se[he];te!==void 0&&(we[he]=n(te)&&n(we[he])?C(we[he],te):te)}return we}function M(ie,se){if(!n(ie)||!n(se)||ie===se)return se;const we=Object.create(Object.getPrototypeOf(ie));return Object.assign(we,ie,se),we}class L{#e;#t=new Map;#n;constructor(se=256,we=null){this.#e=se,this.#n=we}get size(){return this.#t.size}get max(){return this.#e}set max(se){this.#e=se,this.#r()}has(se){return this.#t.has(se)}get(se){const we=this.#t;if(!we.has(se))return;const he=we.get(se);return we.delete(se),we.set(se,he),he}peek(se){return this.#t.get(se)}set(se,we){const he=this.#t;return he.has(se)&&he.delete(se),he.set(se,we),this.#r(),we}delete(se){const we=this.#t.get(se);return this.#t.delete(se)&&this.#n&&this.#n(we,se),we}clear(){if(this.#n)for(const[se,we]of this.#t)this.#n(we,se);this.#t.clear()}keys(){return this.#t.keys()}values(){return this.#t.values()}#r(){const se=this.#t;for(;se.size>this.#e;){const we=se.keys().next().value,he=se.get(we);se.delete(we),this.#n&&this.#n(he,we)}}}const E=new Map;function I(ie,se){const we=`${ie||""}|${se?JSON.stringify(se):""}`;let he=E.get(we);return he||(he=new Intl.Collator(ie||void 0,{numeric:!0,sensitivity:"variant",...se}),E.set(we,he)),he}function R(ie,se){if(ie===se)return 0;if(ie==null)return 1;if(se==null)return-1;if(typeof ie=="number"&&typeof se=="number")return Number.isNaN(ie)?Number.isNaN(se)?0:1:Number.isNaN(se)||ie<se?-1:ie>se?1:0;const we=String(ie),he=String(se);return we<he?-1:we>he?1:0}function k(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const y=typeof requestAnimationFrame=="function";function T(ie){return y?requestAnimationFrame(ie):setTimeout(()=>ie(k()),16)}function V(ie){ie!=null&&(y?cancelAnimationFrame(ie):clearTimeout(ie))}function q(ie){let se=null,we=null;const he=()=>{se=null;const ae=we;we=null,ie(...ae||[])},te=(...ae)=>{we=ae,se===null&&(se=T(he))};return te.cancel=()=>{V(se),se=null,we=null},te.flush=()=>{se!==null&&(V(se),he())},te}function Y(ie,se){let we=null,he=null;const te=()=>{if(we=null,he===null)return;const be=he;he=null,ie(...be),ae()},ae=()=>{we=setTimeout(te,se),typeof we?.unref=="function"&&we.unref()},ge=(...be)=>{we===null?(ie(...be),ae()):(he=be,clearTimeout(we),ae())};return ge.flush=()=>{if(we!==null&&clearTimeout(we),we=null,he===null)return;const be=he;he=null,ie(...be)},ge.cancel=()=>{we!==null&&clearTimeout(we),we=null,he=null},ge.pending=()=>we!==null||he!==null,ge}function J(ie,se=50){return typeof requestIdleCallback=="function"?requestIdleCallback(ie,{timeout:se}):setTimeout(()=>ie({timeRemaining:()=>0,didTimeout:!0}),1)}let ee=0;function ne(ie="l"){return`${ie}${(++ee).toString(36)}`}}),$e("packages/core/src/formatting/rules.js",function(e,W){"use strict";Object.defineProperty(e,"RULE_OPS",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"DISTRIBUTION_OPS",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"DISTRIBUTION_LABELS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"testRule",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"mixColour",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"summariseColumn",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"quantileOf",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"needsDistribution",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"resolveDistribution",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"ICON_SETS",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"compileRules",{enumerable:!0,get:function(){return O}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=Object.freeze(["eq","ne","gt","gte","lt","lte","between","outside","contains","notContains","startsWith","endsWith","blank","notBlank","true","false"]),K=Object.freeze(["topPercent","bottomPercent","topN","bottomN","aboveMean","belowMean","aboveMedian","belowMedian","zAbove","zBelow","outlier"]),Q=Object.freeze({topPercent:"In the top %",bottomPercent:"In the bottom %",topN:"In the top N",bottomN:"In the bottom N",aboveMean:"Above average",belowMean:"Below average",aboveMedian:"Above the median",belowMedian:"Below the median",zAbove:"Standard deviations above the mean",zBelow:"Standard deviations below the mean",outlier:"An outlier"});function G(x,j){const F=Number(x),C=Number(j);if(x!==null&&x!==""&&j!==null&&j!==""&&Number.isFinite(F)&&Number.isFinite(C))return F<C?-1:F>C?1:0;const L=String(x??"").toLowerCase(),E=String(j??"").toLowerCase();return L<E?-1:L>E?1:0}function H(x){return x==null||x===""}function _(x,j){if(!j||typeof j!="object")return!1;const{op:F}=j,C=j.value,M=j.value2;switch(F){case"blank":return H(x);case"notBlank":return!H(x);case"true":return x===!0;case"false":return x===!1;default:break}if(H(x))return!1;switch(F){case"eq":return G(x,C)===0;case"ne":return G(x,C)!==0;case"gt":return G(x,C)>0;case"gte":return G(x,C)>=0;case"lt":return G(x,C)<0;case"lte":return G(x,C)<=0;case"between":return G(x,C)>=0&&G(x,M)<=0;case"outside":return G(x,C)<0||G(x,M)>0;case"contains":return String(x).toLowerCase().includes(String(C??"").toLowerCase());case"notContains":return!String(x).toLowerCase().includes(String(C??"").toLowerCase());case"startsWith":return String(x).toLowerCase().startsWith(String(C??"").toLowerCase());case"endsWith":return String(x).toLowerCase().endsWith(String(C??"").toLowerCase());default:return!1}}function z(x,j,F){const C=V=>{const q=String(V).replace("#",""),Y=q.length===3?q.split("").map(J=>J+J).join(""):q;return[0,2,4].map(J=>parseInt(Y.slice(J,J+2),16)||0)},[M,L,E]=C(x),[I,R,k]=C(j),y=Math.max(0,Math.min(1,F)),T=(V,q)=>Math.round(V+(q-V)*y);return`#${[T(M,I),T(L,R),T(E,k)].map(V=>V.toString(16).padStart(2,"0")).join("")}`}function v(x){const j=[];for(const I of x||[]){if(I==null||I==="")continue;const R=I instanceof Date?I.getTime():Number(I);Number.isFinite(R)&&j.push(R)}if(!j.length)return null;j.sort((I,R)=>I-R);let F=0,C=0,M=0;for(const I of j){F++;const R=I-C;C+=R/F,M+=R*(I-C)}const L=S(j,.25),E=S(j,.75);return{n:j.length,min:j[0],max:j[j.length-1],mean:C,stddev:j.length>1?Math.sqrt(M/(j.length-1)):0,median:S(j,.5),q1:L,q3:E,iqr:E-L,sorted:j}}function S(x,j){if(!x.length)return 0;const F=(x.length-1)*Math.max(0,Math.min(1,j)),C=Math.floor(F),M=Math.ceil(F);return C===M?x[C]:x[C]+(F-C)*(x[M]-x[C])}function g(x){for(const j of Array.isArray(x)?x:[])if(!(!j||typeof j!="object")&&(j.when&&K.includes(j.when.op)||j.scale&&j.scale.from||j.dataBar&&!(Number.isFinite(Number(j.dataBar.min))&&Number.isFinite(Number(j.dataBar.max)))||j.iconSet&&!Array.isArray(j.iconSet.thresholds)))return!0;return!1}function u(x,j){const F=Number(x.value),C=M=>S(j.sorted,M);switch(x.op){case"topPercent":{const M=f(F,10);return{op:"gte",value:C(1-M)}}case"bottomPercent":{const M=f(F,10);return{op:"lte",value:C(M)}}case"topN":{const M=Math.max(1,Math.floor(F)||1),L=Math.max(0,j.sorted.length-M);return{op:"gte",value:j.sorted[L]}}case"bottomN":{const M=Math.max(1,Math.floor(F)||1),L=Math.min(j.sorted.length-1,M-1);return{op:"lte",value:j.sorted[L]}}case"aboveMean":return{op:"gt",value:j.mean};case"belowMean":return{op:"lt",value:j.mean};case"aboveMedian":return{op:"gt",value:j.median};case"belowMedian":return{op:"lt",value:j.median};case"zAbove":return j.stddev?{op:"gte",value:j.mean+(Number.isFinite(F)?F:2)*j.stddev}:null;case"zBelow":return j.stddev?{op:"lte",value:j.mean-(Number.isFinite(F)?F:2)*j.stddev}:null;case"outlier":{const M=(Number.isFinite(F)&&F>0?F:1.5)*j.iqr;return j.iqr?{op:"outside",value:j.q1-M,value2:j.q3+M}:null}default:return null}}function f(x,j){const F=Number.isFinite(x)?x:j,C=F>1?F/100:F;return Math.max(0,Math.min(1,C))}function a(x,j){if(x.from==="minmax")return{...x,min:j.min,max:j.max};if(x.from==="quantile")return{...x,min:S(j.sorted,f(Number(x.low),5)),max:S(j.sorted,f(Number(x.high),95))};if(x.from==="stddev"){const F=Number.isFinite(Number(x.deviations))?Number(x.deviations):2;return{...x,min:j.mean-F*j.stddev,max:j.mean+F*j.stddev}}return x}function r(x,j){const F=Array.isArray(x)?x:[];return!j||!j.n?F.map(C=>C&&g([C])?{...C,enabled:!1}:C):F.map(C=>{if(!C||typeof C!="object")return C;if(C.scale&&C.scale.from)return{...C,scale:a(C.scale,j)};if(C.dataBar)return{...C,dataBar:t(C.dataBar,j)};if(C.iconSet)return{...C,iconSet:n(C.iconSet,j)};if(!C.when||!K.includes(C.when.op))return C;const M=u(C.when,j);return M?{...C,when:M}:{...C,enabled:!1}})}function t(x,j){const F=Number.isFinite(Number(x.min))?Number(x.min):void 0,C=Number.isFinite(Number(x.max))?Number(x.max):void 0;if(F!==void 0&&C!==void 0)return{...x,min:F,max:C};if(x.from==="quantile")return{...x,min:F??S(j.sorted,f(Number(x.low),5)),max:C??S(j.sorted,f(Number(x.high),95))};if(x.from==="stddev"){const M=Number.isFinite(Number(x.deviations))?Number(x.deviations):2;return{...x,min:F??j.mean-M*j.stddev,max:C??j.mean+M*j.stddev}}return{...x,min:F??j.min,max:C??j.max}}function n(x,j){if(Array.isArray(x.thresholds))return x;const F=o(x),C=[];for(let M=1;M<F;M++)C.push(S(j.sorted,M/F));return{...x,thresholds:C}}function o(x){if(Array.isArray(x.icons)&&x.icons.length>=2)return x.icons.length;if(Number.isFinite(Number(x.count))&&Number(x.count)>=2)return Math.floor(Number(x.count));const j=s[x.set];return j?j.length:3}function l(x){return`url("data:image/svg+xml,${encodeURIComponent(x)}")`}function c(x){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6" fill="${x}"/></svg>`}function i(x,j){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polygon points="${j==="up"?"8,2 14,13 2,13":j==="down"?"2,3 14,3 8,14":"4,2 14,8 4,14"}" fill="${x}"/></svg>`}function m(x,j){const F="M8 1l1.9 3.9 4.3.6-3.1 3 .7 4.3L8 13.8 4.2 15.8l.7-4.3-3.1-3 4.3-.6z";let C=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${j*16} 16">`;for(let M=0;M<j;M++){const L=M<x?"#f5a623":"#d0d0d0";C+=`<path transform="translate(${M*16},0)" d="${F}" fill="${L}"/>`}return`${C}</svg>`}const d=Object.freeze([i("#c0392b","down"),i("#e0a800","right"),i("#2e7d32","up")]),h=Object.freeze([c("#d13438"),c("#f5a623"),c("#2e9e44")]),s=Object.freeze({arrows:d,trafficLights:h,ratings:Object.freeze([1,2,3,4,5].map(x=>m(x,5)))}),p=Object.freeze({arrows:"Arrows",trafficLights:"Traffic lights",ratings:"Ratings"});function w(x){if(Array.isArray(x.icons)&&x.icons.length>=2)return x.icons.map(C=>/^\s*(url\(|data:|<)/.test(String(C))&&String(C).trim().startsWith("<")?l(String(C)):String(C));const j=x.set||"arrows";if(j==="ratings"){const C=o(x),M=[];for(let L=1;L<=C;L++)M.push(l(m(L,C)));return M}const F=s[j];return F?F.map(l):(B(`iconSet:${j}`,`unknown icon set '${j}'; falling back to arrows.`),d.map(l))}function A(x){const j=Number(x.min),C=Number(x.max)-j,M=x.colour||x.color||"#5b9bd5",L=x.negativeColour||x.negativeColor||"#d13438",E=x.direction==="rtl"?"left":"right",I=k=>Math.max(0,Math.min(1,(k-j)/C))*100,R=C?Math.max(0,Math.min(100,(0-j)/C*100)):0;return k=>{if(H(k))return null;const y=Number(k);if(!Number.isFinite(y)||!C)return null;const T=I(y),V=Math.min(T,R),q=Math.max(T,R),Y=y>=0?M:L;return{backgroundImage:`linear-gradient(to ${E}, transparent ${V}%, ${Y} ${V}%, ${Y} ${q}%, transparent ${q}%)`,backgroundRepeat:"no-repeat",backgroundPosition:"0 0"}}}function P(x){const j=w(x),F=x.reverse?[...j].reverse():j,C=(Array.isArray(x.thresholds)?x.thresholds:[]).map(Number).filter(Number.isFinite),M=Number.isFinite(Number(x.size))?Number(x.size):16,L=x.set==="ratings"?M*o(x):M;return E=>{if(H(E))return null;const I=Number(E);if(!Number.isFinite(I))return null;let R=0;for(const y of C)I>=y&&R++;const k=F[Math.min(R,F.length-1)];return k?{backgroundImage:k,backgroundRepeat:"no-repeat",backgroundPosition:"left center",backgroundSize:`${L}px ${M}px`,paddingLeft:`${L+4}px`}:null}}function b(x){const j=Array.isArray(x.colours)&&x.colours.length>=2?x.colours:["#f8f9fa","#1a6bc7"],F=Number(x.min),C=Number(x.max),M=C-F,L=j.length-1,E=[];for(let R=0;R<=L;R++)E.push(L?R/L:0);const I=Number(x.mid);if(x.mid!==void 0&&x.mid!==null)if(j.length%2===0)B("formatting.scale.mid.even",`a scale's "mid" needs an odd number of colours (a middle stop to pin); ${j.length} were given, so "mid" was ignored.`);else if(Number.isFinite(I)&&M&&I>Math.min(F,C)&&I<Math.max(F,C)){const R=L/2,k=Math.max(0,Math.min(1,(I-F)/M));for(let y=0;y<=L;y++)E[y]=y<=R?R?y/R*k:k:k+(y-R)/(L-R)*(1-k)}else Number.isFinite(I)&&B("formatting.scale.mid.range",`a scale's "mid" (${I}) is outside its min..max range, so it was ignored.`);return R=>{const k=Number(R);if(!Number.isFinite(k)||!M)return null;const y=Math.max(0,Math.min(1,(k-F)/M));let T=0;for(;T<L-1&&y>E[T+1];)T++;const V=E[T+1]-E[T],q=V>0?(y-E[T])/V:0;return{background:z(j[T],j[T+1],Math.max(0,Math.min(1,q)))}}}function O(x,j=null){const F=g(x)?r(x,j):x,C=(Array.isArray(F)?F:[]).filter(L=>L&&typeof L=="object");if(!C.length)return()=>null;const M=C.map(L=>L.scale?{scale:b(L.scale),enabled:L.enabled!==!1}:L.dataBar?{scale:A(L.dataBar),enabled:L.enabled!==!1}:L.iconSet?{scale:P(L.iconSet),enabled:L.enabled!==!1}:{when:L.when,style:L.style,stop:L.stopIfTrue!==!1,enabled:L.enabled!==!1});return L=>{const E=L?L.value:void 0;let I=null;for(const R of M){if(!R.enabled)continue;if(R.scale){const y=R.scale(E);y&&(I={...I||{},...y});continue}if(!_(E,R.when))continue;const k=$(R.style)?R.style(L):R.style;if(k&&(I={...I||{},...k}),R.stop)break}return I}}}),$e("packages/core/src/formula/parse.js",function(e,W){"use strict";Object.defineProperty(e,"FormulaError",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"tokenise",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"parseFormula",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"referencesOf",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"looksLikeFormula",{enumerable:!0,get:function(){return t}});const Z="num",$="str",B="ref",D="name",K="op",Q="end",G=["<=",">=","<>","!="],H="+-*/^%(),<>=";class _ extends Error{constructor(o,l){super(o),this.name="FormulaError",this.at=l}}function z(n){const o=[];let l=0;for(;l<n.length;){const c=n[l];if(c===" "||c===" "||c===`
|
|
7
7
|
`||c==="\r"){l++;continue}if(c>="0"&&c<="9"){l=S(n,l,o);continue}if(c==="."&&n[l+1]>="0"&&n[l+1]<="9"){l=S(n,l,o);continue}if(c==='"'||c==="'"){l=g(n,l,o);continue}if(c==="["){const m=n.indexOf("]",l+1);if(m<0)throw new _("a [column reference] was opened and never closed",l);o.push({kind:B,value:n.slice(l+1,m).trim(),at:l}),l=m+1;continue}if(v(c)){l=u(n,l,o);continue}const i=n.slice(l,l+2);if(G.includes(i)){o.push({kind:K,value:i==="!="?"<>":i,at:l}),l+=2;continue}if(H.includes(c)){o.push({kind:K,value:c,at:l}),l++;continue}throw new _(`unexpected character ${JSON.stringify(c)}`,l)}return o.push({kind:Q,value:null,at:n.length}),o}function v(n){return/[A-Za-z_À-]/.test(n)}function S(n,o,l){let c=o,i=!1;for(;c<n.length;){const m=n[c];if(m>="0"&&m<="9"){c++;continue}if(m==="."&&!i){i=!0,c++;continue}if((m==="e"||m==="E")&&/[0-9+-]/.test(n[c+1]||"")){for(c+=2;c<n.length&&n[c]>="0"&&n[c]<="9";)c++;break}break}return l.push({kind:Z,value:Number(n.slice(o,c)),at:o}),c}function g(n,o,l){const c=n[o];let i=o+1,m="";for(;i<n.length;){if(n[i]===c){if(n[i+1]===c){m+=c,i+=2;continue}return l.push({kind:$,value:m,at:o}),i+1}m+=n[i],i++}throw new _("a string was opened and never closed",o)}function u(n,o,l){let c=o;for(;c<n.length&&/[A-Za-z0-9_.À-]/.test(n[c]);)c++;const i=n.slice(o,c);let m=c;for(;m<n.length&&n[m]===" ";)m++;return l.push({kind:n[m]==="("?D:B,value:i,at:o}),c}const f={"=":1,"<>":1,"<":1,"<=":1,">":1,">=":1,"+":2,"-":2,"*":3,"/":3,"^":4};function a(n){const o=String(n??"").replace(/^\s*=/,"");if(!o.trim())throw new _("the formula is empty");const l=z(o);let c=0;const i=()=>l[c],m=()=>l[c++],d=b=>{const O=i();if(O.kind!==K||O.value!==b)throw new _(`expected ${JSON.stringify(b)}`,O.at);c++},h=b=>{let O=s();for(;;){const x=i();if(x.kind!==K)break;const j=f[x.value];if(!j||j<b)break;c++;const F=h(x.value==="^"?j:j+1);O={kind:"bin",op:x.value,left:O,right:F}}return O},s=()=>{const b=i();return b.kind===K&&(b.value==="-"||b.value==="+")?(c++,{kind:"unary",op:b.value,arg:s()}):p()},p=()=>{let b=w();for(;i().kind===K&&i().value==="%";)c++,b={kind:"unary",op:"%",arg:b};return b},w=()=>{const b=m();if(b.kind===Z)return{kind:"num",value:b.value};if(b.kind===$)return{kind:"str",value:b.value};if(b.kind===B)return{kind:"ref",name:b.value};if(b.kind===D){d("(");const O=[];if(!(i().kind===K&&i().value===")"))for(;;){if(O.push(h(1)),i().kind===K&&i().value===","){c++;continue}break}return d(")"),{kind:"call",name:String(b.value).toUpperCase(),args:O}}if(b.kind===K&&b.value==="("){const O=h(1);return d(")"),O}throw b.kind===Q?new _("the formula ends unexpectedly",b.at):new _(`unexpected ${JSON.stringify(b.value)}`,b.at)},A=h(1),P=i();if(P.kind!==Q)throw new _(`unexpected ${JSON.stringify(P.value)}: is an operator missing?`,P.at);return A}function r(n){const o=new Set,l=c=>{if(!(!c||typeof c!="object")){if(c.kind==="ref"){o.add(String(c.name));return}if(c.kind==="bin"){l(c.left),l(c.right);return}if(c.kind==="unary"){l(c.arg);return}if(c.kind==="call")for(const i of c.args)l(i)}};return l(n),[...o]}function t(n){return typeof n=="string"&&/^\s*=/.test(n)&&n.trim()!=="="}}),$e("packages/core/src/formula/evaluate.js",function(e,W){"use strict";Object.defineProperty(e,"FUNCTIONS",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"evaluateAst",{enumerable:!0,get:function(){return S}});const $=W("packages/core/src/formula/parse.js").FormulaError;function B(g){if(g==null||g==="")return 0;if(typeof g=="boolean")return g?1:0;if(g instanceof Date)return g.getTime();const u=typeof g=="number"?g:Number(String(g).replace(/[,\s]/g,""));if(!Number.isFinite(u))throw new $(`${JSON.stringify(g)} is not a number`);return u}function D(g){return g==null?"":String(g)}function K(g){if(typeof g=="boolean")return g;if(g==null||g==="")return!1;if(typeof g=="number")return g!==0;const u=String(g).trim().toLowerCase();return u==="false"||u==="no"||u==="0"?!1:u!==""}function Q(g){const u=[];for(const f of g){if(Array.isArray(f)){for(const a of f)a!=null&&a!==""&&u.push(B(a));continue}f==null||f===""||u.push(B(f))}return u}function G(g,u){const f=10**u,a=g*f;return Math.sign(a)*Math.round(Math.abs(a)+Number.EPSILON*Math.abs(a))/f}function H(g,u){if(!g.length)return 0;const f=g.slice().sort((n,o)=>n-o),a=(f.length-1)*Math.min(1,Math.max(0,u)),r=Math.floor(a),t=Math.ceil(a);return r===t?f[r]:f[r]+(a-r)*(f[t]-f[r])}function _(g,u){let f=0,a=0,r=0;for(const n of g){f++;const o=n-a;a+=o/f,r+=o*(n-a)}const t=u?f-1:f;return t>0?Math.sqrt(r/t):0}const z={SUM:g=>Q(g).reduce((u,f)=>u+f,0),AVERAGE:g=>{const u=Q(g);return u.length?u.reduce((f,a)=>f+a,0)/u.length:0},MIN:g=>{const u=Q(g);return u.length?Math.min(...u):0},MAX:g=>{const u=Q(g);return u.length?Math.max(...u):0},COUNT:g=>Q(g).length,PRODUCT:g=>Q(g).reduce((u,f)=>u*f,1),ROUND:g=>G(B(g[0]),g.length>1?B(g[1]):0),ROUNDDOWN:g=>{const u=10**(g.length>1?B(g[1]):0),f=B(g[0])*u;return(f<0?Math.ceil(f):Math.floor(f))/u},ROUNDUP:g=>{const u=10**(g.length>1?B(g[1]):0),f=B(g[0])*u;return(f<0?Math.floor(f):Math.ceil(f))/u},ABS:g=>Math.abs(B(g[0])),FLOOR:g=>Math.floor(B(g[0])),CEILING:g=>Math.ceil(B(g[0])),SQRT:g=>Math.sqrt(B(g[0])),POWER:g=>B(g[0])**B(g[1]),MOD:g=>{const u=B(g[1]);if(u===0)throw new $("MOD by zero");return(B(g[0])%u+u)%u},IF:g=>K(g[0])?g[1]:g.length>2?g[2]:!1,AND:g=>g.every(K),OR:g=>g.some(K),NOT:g=>!K(g[0]),COALESCE:g=>g.find(u=>u!=null&&u!=="")??null,CONCAT:g=>g.map(D).join(""),LEN:g=>D(g[0]).length,UPPER:g=>D(g[0]).toUpperCase(),LOWER:g=>D(g[0]).toLowerCase(),TRIM:g=>D(g[0]).trim(),LEFT:g=>D(g[0]).slice(0,g.length>1?B(g[1]):1),RIGHT:g=>{const u=g.length>1?B(g[1]):1;return u<=0?"":D(g[0]).slice(-u)},MEDIAN:g=>H(Q(g),.5),PERCENTILE:g=>{const u=B(g[g.length-1]);return H(Q(g.slice(0,-1)),u>1?u/100:u)},QUARTILE1:g=>H(Q(g),.25),QUARTILE3:g=>H(Q(g),.75),STDEV:g=>_(Q(g),!0),STDEVP:g=>_(Q(g),!1),VAR:g=>{const u=_(Q(g),!0);return u*u},VARP:g=>{const u=_(Q(g),!1);return u*u},COUNTDISTINCT:g=>{const u=new Set;for(const f of g){const a=Array.isArray(f)?f:[f];for(const r of a)r!=null&&r!==""&&u.add(r)}return u.size},IQR:g=>{const u=Q(g);return H(u,.75)-H(u,.25)}};z.AVG=z.AVERAGE,z.CEIL=z.CEILING,z.POW=z.POWER,z.STDEVS=z.STDEV,z.PERCENTILEINC=z.PERCENTILE;function v(g,u){const f=Number(g),a=Number(u);if(g!==null&&g!==""&&u!==null&&u!==""&&Number.isFinite(f)&&Number.isFinite(a))return f<a?-1:f>a?1:0;const t=D(g).toLowerCase(),n=D(u).toLowerCase();return t<n?-1:t>n?1:0}function S(g,u={}){const f=typeof u.lookup=="function"?u.lookup:null,a=u.functions?{...z,...u.functions}:z,r=t=>{switch(t.kind){case"num":return t.value;case"str":return t.value;case"ref":{if(!f)throw new $(`there is no column called ${JSON.stringify(t.name)} here`);const n=f(String(t.name));if(n===void 0)throw new $(`there is no column called ${JSON.stringify(t.name)}`);return n}case"unary":{if(t.op==="%")return B(r(t.arg))/100;const n=B(r(t.arg));return t.op==="-"?-n:n}case"bin":{const n=t.op;if(n==="=")return v(r(t.left),r(t.right))===0;if(n==="<>")return v(r(t.left),r(t.right))!==0;if(n==="<")return v(r(t.left),r(t.right))<0;if(n==="<=")return v(r(t.left),r(t.right))<=0;if(n===">")return v(r(t.left),r(t.right))>0;if(n===">=")return v(r(t.left),r(t.right))>=0;const o=B(r(t.left)),l=B(r(t.right));if(n==="+")return o+l;if(n==="-")return o-l;if(n==="*")return o*l;if(n==="^")return o**l;if(n==="/"){if(l===0)throw new $("division by zero");return o/l}throw new $(`unknown operator ${JSON.stringify(n)}`)}case"call":{const n=u.lazy&&u.lazy[t.name];if(typeof n=="function")return n(t.args,r,u);const o=a[t.name];if(typeof o!="function")throw new $(`there is no function called ${t.name}`);return o(t.args.map(r),u)}default:throw new $("the formula could not be read")}};return r(g)}}),$e("packages/core/src/formula/index.js",function(e,W){"use strict";Object.defineProperty(e,"parseFormula",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"referencesOf",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"looksLikeFormula",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"FormulaError",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"tokenise",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"evaluateAst",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"FUNCTIONS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"rowLookup",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"evaluateFormula",{enumerable:!0,get:function(){return v}});const Z=W("packages/core/src/formula/parse.js"),$=Z.parseFormula,B=Z.referencesOf,D=Z.looksLikeFormula,K=Z.FormulaError,Q=Z.tokenise,G=W("packages/core/src/formula/evaluate.js"),H=G.evaluateAst,_=G.FUNCTIONS;function z(S){const{grid:g,row:u,data:f}=S||{},a=l=>String(l).toLowerCase().replace(/[\s_-]/g,""),r=g&&g.columns&&typeof g.columns.all=="function"?g.columns.all():[],t=g&&g.permissions,n=t&&typeof t.isReadable=="function"?l=>t.isReadable(l):()=>!0,o=new Set;for(const l of r)n(l)||(o.add(a(l.id)),l.field&&o.add(a(l.field)),l.title&&o.add(a(l.title)));return l=>{const c=a(l);if(o.has(c))throw new K(`"${l}" cannot be read`);for(const i of r)if(a(i.id)===c||i.field&&a(i.field)===c||i.title&&a(i.title)===c)return u&&g.rows&&typeof g.rows.value=="function"?g.rows.value(u.key,i.id):f?f[i.field||i.id]:void 0;if(f&&typeof f=="object"){for(const i of Object.keys(f))if(a(i)===c){if(!n(i))throw new K(`"${l}" cannot be read`);return f[i]}}}}function v(S,g={}){try{const u=$(S);return{ok:!0,value:H(u,{lookup:z(g),functions:g.formulaFunctions}),references:B(u)}}catch(u){return{ok:!1,error:u instanceof K?u.message:"the formula could not be read",at:u instanceof K?u.at:void 0}}}}),$e("packages/core/src/defaults.js",function(e,W){"use strict";Object.defineProperty(e,"defaults",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"applyDefaults",{enumerable:!0,get:function(){return _}});const Z=W("packages/core/src/internal/util.js"),$=Z.isObject,B=Z.merge,D=Z.warnOnce;let K=null;class Q extends Error{}function G(z,v=new Set){if(Array.isArray(z)){if(v.has(z))throw new Q;v.add(z);const g=z.map(u=>G(u,v));return v.delete(z),g}if(!$(z)||Object.getPrototypeOf(z)!==Object.prototype&&Object.getPrototypeOf(z)!==null)return z;if(v.has(z))throw new Q;v.add(z);const S={};for(const[g,u]of Object.entries(z))S[g]=G(u,v);return v.delete(z),S}function H(z){if(z===void 0)return G(K??{});if(z===null)return K=null,{};if(!$(z))return D("defaults:type",`defaults() expects a configuration object, or null to clear it, but got ${Array.isArray(z)?"an array":typeof z}. The call was ignored and the defaults are unchanged.`),G(K??{});try{K=G(z)}catch(v){if(!(v instanceof Q))throw v;return D("defaults:cyclic","defaults() expects a configuration object with no circular references, but the object passed refers back to itself. The call was ignored and the defaults are unchanged."),G(K??{})}return G(K)}function _(z){return K===null?z:B(G(K),z)}}),$e("packages/core/src/events/names.js",function(e,W){"use strict";Object.defineProperty(e,"EVENT_NAMES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"isKnownEvent",{enumerable:!0,get:function(){return B}});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","detail:cell:edit:start","detail:cell:edit:end","detail:row:edit:start","detail:row:edit:end","detail:cell:changed","toolpanel:focus","highlight:changed","find:changed","tree:loading","tree:loaded","tree:loadFailed","tree:loadAborted","state:changed","state:reset","history:changed","history:applied","views:changed","view:applied","view:saved","view:removed","view:renamed","view:default","validation:failed","validation:cleared","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","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"]),$=new Set(Z);function B(D){return D==="*"||$.has(D)}}),$e("packages/core/src/events/bus.js",function(e,W){"use strict";Object.defineProperty(e,"WILDCARD",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"EventBus",{enumerable:!0,get:function(){return u}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.uid,D=Z.DEV,Q=W("packages/core/src/events/names.js").isKnownEvent,G="*";function H(f,a){!D||Q(a)||$(`bus.unknown:${a}`,`${f}('${a}') subscribes to an event the grid never raises, so the handler will never fire. Check the name against the EventName list — a common cause is a near miss such as 'row:click' for 'row:clicked'.`)}const _=new Set(["api","user","init","ai"]),z=new WeakMap;function v(f){let a=z.get(f);return a||(a=B("h"),z.set(f,a)),a}function S(){return typeof performance=="object"&&performance?performance.now():Date.now()}function g(f){if(!f||typeof f!="object")return{};const a={};for(const[r,t]of Object.entries(f))r!=="grid"&&(t==null?a[r]=String(t):Array.isArray(t)?a[r]=`[${t.length}]`:typeof t=="object"?a[r]=t.key?`row ${t.key}`:"{…}":typeof t=="function"?a[r]="[function]":a[r]=String(t).slice(0,60));return a}class u{#e=new Map;#t=!1;#n=[];#r=200;#o=new Map;#i=null;#s=!1;#l=0;constructor(a=null){this.#i=a}attach(a){this.#i=a}get grid(){return this.#i}get destroyed(){return this.#s}on(a,r){if(typeof r!="function")return $(`bus.handler:${a}`,`on('${a}') needs a function; ignored.`),()=>{};H("on",a);let t=this.#e.get(a);return t||(t=[],this.#e.set(a,t)),t.push(r),()=>this.off(a,r)}once(a,r){if(typeof r!="function")return $(`bus.handler:${a}`,`once('${a}') needs a function; ignored.`),()=>{};H("once",a);const t=n=>{this.off(a,r),r(n)};return this.#o.set(r,t),this.on(a,t)}off(a,r){if(r===void 0){this.#e.delete(a);return}const t=this.#e.get(a);if(!t)return;const n=this.#o.get(r),o=n&&t.includes(n)?n:r,l=t.indexOf(o);l>=0&&t.splice(l,1),n&&o===n&&this.#o.delete(r),t.length===0&&this.#e.delete(a)}count(a){const r=this.#e.get(a),t=a===G?null:this.#e.get(G);return(r?r.length:0)+(t?t.length:0)}#a(a,r,t,n,o){this.#n.push({type:a,origin:r,listeners:(n?n.length:0)+(o?o.length:0),payload:g(t),at:Date.now(),ms:0}),this.#n.length>this.#r&&this.#n.shift()}recordEvents(a,r){this.#t=!!a,Number.isFinite(r)&&r>0&&(this.#r=Math.floor(r)),a||(this.#n=[])}eventLog(){return this.#n.map(a=>({...a}))}clearEventLog(){this.#n=[]}counts(){const a={};for(const[r,t]of this.#e)a[r]=t.length;return a}emit(a,r,t){const n=t??(r&&r.origin),o=_.has(n)?n:"api",l={...r||null,type:a,origin:o,grid:this.#i};if(this.#s)return l;const c=this.#e.get(a),i=a===G?void 0:this.#e.get(G);if(this.#t&&this.#a(a,o,r,c,i),!c&&!i)return l;const m=this.#t?S():0;this.#l++;try{c&&this.#u(c.slice(),l,a),i&&this.#u(i.slice(),l,G)}finally{this.#l--,this.#t&&this.#n.length&&(this.#n[this.#n.length-1].ms=S()-m)}return l}emitBefore(a,r,t){const n=t??(r&&r.origin),o=_.has(n)?n:"user";let l=!1,c=null;const i=w=>{l=!0,w!=null&&c===null&&(c=String(w))},m={...r||null,type:a,origin:o,grid:this.#i,get defaultPrevented(){return l},get reason(){return c},preventDefault(w){i(w)}};if(this.#s)return!0;const d=this.#e.get(a);this.#t&&this.#a(a,o,r,d,void 0);const h=d?d.slice():[];if(h.length===0)return!0;const s=()=>(l&&c===null&&(c="prevented"),l&&r&&typeof r=="object"&&(r.reason=c),!l),p=[];for(const w of h)try{const A=w(m);A&&typeof A.then=="function"?p.push(A):A===!1&&i("prevented")}catch(A){i("error"),$(`bus.beforeThrow:${a}:${v(w)}`,`a '${a}' before-handler threw; the action was cancelled.`,A)}return p.length===0?s():Promise.allSettled(p).then(w=>{for(const A of w)A.status==="rejected"?(i("error"),$(`bus.beforeReject:${a}`,`a '${a}' before-handler rejected; the action was cancelled.`,A.reason)):A.value===!1&&i("prevented");return s()})}#u(a,r,t){for(let n=0;n<a.length;n++)try{a[n](r)}catch(o){$(`bus.throw:${t}:${v(a[n])}`,`a '${t}' handler threw; other handlers were unaffected.`,o)}}clear(){this.#e.clear(),this.#o.clear()}destroy(){this.clear(),this.#s=!0,this.#i=null}}}),$e("packages/core/src/registry/free-tier-notice.js",function(e,W){"use strict";Object.defineProperty(e,"FREE_TIER_NOTICE",{enumerable:!0,get:function(){return Z}});const Z="Free for non-commercial use: latticegrid.dev/free"}),$e("packages/core/src/registry/licence.js",function(e,W){"use strict";Object.defineProperty(e,"PRODUCT",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"LICENCE_VERSION",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"PUBLIC_KEY",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"fromBase64Url",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"toBase64Url",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"asciiBytes",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"parseLicence",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"hasEd25519",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"verifyLicence",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"isLocalHost",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"currentHost",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"matchesDomain",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"LicenceHolder",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"setLicence",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"licenceInfo",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"watermark",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"licenceState",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"sharedLicence",{enumerable:!0,get:function(){return F}});const $=W("packages/core/src/internal/util.js").warnOnce,B=W("packages/core/src/registry/free-tier-notice.js"),D=B.FREE_TIER_NOTICE;Object.defineProperty(e,"FREE_TIER_NOTICE",{enumerable:!0,get:function(){return B.FREE_TIER_NOTICE}});const K="lattice-grid",Q=1,G="LG1",H=64,_="GwmaCOkGedHulqsa-DOV1TU8On1rsalWv519c_dW4j4",z="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",v=(()=>{const C=new Int16Array(128).fill(-1);for(let M=0;M<z.length;M++)C[z.charCodeAt(M)]=M;return C[43]=62,C[47]=63,C})();function S(C){if(typeof C!="string")return null;let M="";for(let y=0;y<C.length;y++){const T=C.charCodeAt(y);if(T!==61){if(T>127||v[T]<0)return null;M+=C[y]}}const L=M.length;if(L%4===1)return null;const E=new Uint8Array(Math.floor(L*3/4));let I=0,R=0,k=0;for(let y=0;y<L;y++)I=I<<6|v[M.charCodeAt(y)],R+=6,R>=8&&(R-=8,E[k++]=I>>R&255);return k===E.length?E:E.subarray(0,k)}function g(C){let M="",L=0;for(;L+2<C.length;L+=3){const I=C[L]<<16|C[L+1]<<8|C[L+2];M+=z[I>>18&63]+z[I>>12&63]+z[I>>6&63]+z[I&63]}const E=C.length-L;if(E===1){const I=C[L]<<16;M+=z[I>>18&63]+z[I>>12&63]}else if(E===2){const I=C[L]<<16|C[L+1]<<8;M+=z[I>>18&63]+z[I>>12&63]+z[I>>6&63]}return M}function u(C){const M=new Uint8Array(C.length);for(let L=0;L<C.length;L++)M[L]=C.charCodeAt(L)&127;return M}function f(C){if(typeof TextDecoder=="function")return new TextDecoder().decode(C);let M="";for(let L=0;L<C.length;L++)M+=String.fromCharCode(C[L]);return M}function a(C){const M={ok:!1,reason:"malformed",product:null,issuedTo:null,expires:null,terms:null,features:[],deployments:[],version:0,message:null,signature:null,raw:typeof C=="string"?C:""};if(typeof C!="string"||C.length===0)return{...M,reason:"missing"};const L=C.trim(),E=L.split(".");if(E.length!==3)return M;const[I,R,k]=E;if(I!==G)return{...M,reason:"prefix"};const y=S(R),T=S(k);if(!y||!T)return M;let V;try{V=JSON.parse(f(y))}catch{return M}return V===null||typeof V!="object"?M:{ok:!0,reason:null,product:typeof V.p=="string"?V.p:null,issuedTo:typeof V.t=="string"?V.t:null,expires:typeof V.e=="string"?V.e:null,terms:typeof V.terms=="string"?V.terms:null,features:Array.isArray(V.f)?V.f.slice():[],deployments:Array.isArray(V.d)?V.d.slice():[],version:typeof V.v=="number"?V.v:0,message:u(R),signature:T,raw:L}}function r(C,M){if(!C)return!1;const L=Date.parse(/^\d{4}-\d{2}-\d{2}$/.test(C)?`${C}T23:59:59.999Z`:C);return Number.isNaN(L)?!0:M>L}function t(C){return C==="non-commercial"?"non-commercial":"commercial"}let n=null,o=null,l=null;function c(){const C=globalThis.crypto;return C&&C.subtle?C.subtle:null}async function i(C){if(n&&o===C)return n;const M=c();if(!M)return null;const L=S(C);if(!L)return null;try{const E=await M.importKey("raw",L,{name:"Ed25519"},!1,["verify"]);return n=E,o=C,E}catch{return null}}async function m(){return l!==null||(l=await i(_)!==null),l}async function d(C,M={}){const L=M.warn!==!1,E=M.product||K,I=M.publicKey||_,R=M.now??Date.now(),k=M.host??s(),y=h(k)?"":` ${D}`,T=a(C);if(!T.ok){const ee=T.reason==="missing"?"missing":"malformed";return L&&$(`licence.${ee}`,ee==="missing"?`no licence key supplied. The grid renders in full and carries a trial watermark on any host other than localhost. Get a key at latticegrid.dev.${y}`:`licence key could not be read. The grid will render with a watermark.${y}`),{valid:!1,reason:ee,terms:"commercial"}}const V={product:T.product||void 0,issuedTo:T.issuedTo||void 0,expires:T.expires||void 0,terms:t(T.terms)};if(T.product!==E)return L&&$("licence.product",`licence key is for '${T.product}', not '${E}'. The grid will render with a watermark.`),{valid:!1,...V,reason:"product"};if(r(T.expires,R))return L&&$("licence.expired",`licence expired on ${T.expires}. The grid will render with a watermark. Renew at latticegrid.dev.`),{valid:!1,...V,reason:"expired"};const q=T.deployments||[];if(q.length&&k&&!h(k)&&!p(k,q))return L&&$("licence.domain",`licence key is not valid for ${k}; it covers ${q.join(", ")}. The grid will render with a watermark.`),{valid:!1,...V,reason:"domain"};const Y=await i(I);if(!Y){const ee=!!T.signature&&T.signature.length===H;return L&&$("licence.algorithm","this host does not provide crypto.subtle Ed25519, so the licence signature could not be verified. A structural check was used instead."),ee?{valid:!0,...V,reason:"unverified"}:{valid:!1,...V,reason:"signature"}}let J=!1;try{J=await c().verify({name:"Ed25519"},Y,T.signature,T.message)}catch{J=!1}return J?{valid:!0,...V}:(L&&$("licence.signature","licence signature is not valid. The grid will render with a watermark."),{valid:!1,...V,reason:"signature"})}function h(C){const M=String(C??s()??"").trim().toLowerCase().replace(/^\[/,"").replace(/\]$/,"");return!M||M==="localhost"||M.endsWith(".localhost")||M==="::1"||M==="0:0:0:0:0:0:0:1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(M)}function s(){const C=globalThis.location;return C&&typeof C.hostname=="string"?C.hostname:null}function p(C,M){const L=w(C);return!L||!Array.isArray(M)?!1:M.some(E=>{const I=w(E);if(!I)return!1;if(I==="*")return!0;if(I.startsWith("*.")){const R=I.slice(2);return L===R||L.endsWith(`.${R}`)}return L===I})}function w(C){return String(C??"").trim().toLowerCase().replace(/\.$/,"")}class A{#e="";#t={valid:!1,reason:"missing",terms:"commercial"};#n=null;#r=null;#o;#i=new Set;constructor(M={}){this.#o=M}set(M){this.#e=typeof M=="string"?M.trim():"";const L=a(this.#e);return this.#t=L.ok?{valid:!r(L.expires,Date.now())&&L.product===(this.#o.product||K),product:L.product||void 0,issuedTo:L.issuedTo||void 0,expires:L.expires||void 0,terms:t(L.terms),reason:"pending"}:{valid:!1,reason:L.reason||"malformed",terms:"commercial"},this.#n=null,this.#e&&this.verify(),this.#t}verify(){if(this.#n)return this.#n;const M=this.#e;return this.#n=d(M,this.#o).then(L=>{if(this.#e===M){this.#t=L;for(const E of this.#i)E(L)}return L}),this.#n}onSettled(M){return this.#i.add(M),()=>this.#i.delete(M)}info(){return{...this.#t}}watermark(){return this.#t.valid?!1:!h(this.#r)}setHost(M){this.#r=M}state(){return this.#t.valid?"licensed":h(this.#r)?"localhost":"trial"}reset(){this.#e="",this.#t={valid:!1,reason:"missing",terms:"commercial"},this.#n=null,this.#i.clear()}}const P=new A;function b(C){return P.set(C)}function O(){return P.info()}function x(){return P.watermark()}function j(){return P.state()}function F(){return P}}),$e("packages/core/src/registry/registry.js",function(e,W){"use strict";Object.defineProperty(e,"KINDS",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"REGIONS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"Registry",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"sharedRegistry",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"registerModules",{enumerable:!0,get:function(){return t}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.isFunction,D=Z.DEV,K=W("packages/core/src/registry/licence.js"),Q=K.LicenceHolder,G=K.sharedLicence,H=["renderer","editor","filter","dataType","totalFn","pipe","component"],_=["all","header","body","totals","panels"];class z{#e=new Map;#t=new Map;#n=new Set;#r=new Set;#o;#i=null;#s=null;#l=new Set;#a=new Map;constructor(o={}){for(const l of H)this.#t.set(l,new Map);this.#o=o.holder||G(),this.#s=o.grid??null,this.#i=this.#o.onSettled(()=>{this.#d({reason:"licence",name:"licence",capabilities:this.capabilities(),regions:["all"]})}),o.licence&&this.setLicence(o.licence)}registerModules(o,l={}){l.licence&&this.setLicence(l.licence),l.grid!==void 0&&(this.#s=l.grid);const c=Array.isArray(o)?o:[o],i=[];for(const m of c){if(!m||typeof m!="object"||typeof m.name!="string"||!m.name){$("registry.module.shape","registerModules received something that is not a module; ignored.");continue}if(this.#e.has(m.name)){D&&this.#c(this.#e.get(m.name),m);continue}if(!B(m.install)){$(`registry.module.install:${m.name}`,`module '${m.name}' has no install() and was ignored.`);continue}const d={registry:this,grid:this.#s};try{m.install(d)}catch(h){$(`registry.module.throw:${m.name}`,`module '${m.name}' threw during install; it was not registered.`,h);continue}this.#e.set(m.name,m);for(const h of v(m))this.#n.add(h);i.push(m.name),this.#d({reason:"module",name:m.name,capabilities:this.capabilities(),regions:u(m)})}return i}unregisterModule(o){const l=this.#e.get(o);if(!l)return!1;if(B(l.uninstall))try{l.uninstall({registry:this,grid:this.#s})}catch(c){$(`registry.module.uninstall:${o}`,`module '${o}' threw during uninstall.`,c)}return this.#e.delete(o),this.#u(),this.#d({reason:"unmodule",name:o,capabilities:this.capabilities(),regions:u(l)}),!0}modules(){return[...this.#e.values()]}has(o){return this.#e.has(o)}#u(){this.#n.clear();for(const o of this.#e.values())for(const l of v(o))this.#n.add(l)}#c(o,l){!o||o===l||S(o,l)||$(`registry.module.reconfigure:${l.name}`,`module '${l.name}' was re-registered with different options; the first registration is kept and this call was ignored. Unregister it first if you mean to replace it.`)}capabilities(){return[...this.#n].sort()}can(o){return this.#n.has(o)}onChange(o){return B(o)?(this.#r.add(o),this.#a.set(o,this.#s),()=>{this.#r.delete(o),this.#a.delete(o)}):()=>{}}#d(o){for(const l of[...this.#r])try{l(o)}catch(c){$("registry.onChange.throw","a registry change handler threw.",c)}}register(o,l,c){const i=this.#t.get(o);if(!i){$(`registry.kind:${o}`,`unknown registry kind '${o}'; expected one of ${H.join(", ")}.`);return}if(!l||typeof l!="string"){$(`registry.name:${o}`,`register('${o}', ...) needs a name.`);return}i.has(l)&&i.get(l)!==c&&$(`registry.replace:${o}:${l}`,`'${l}' was already registered as a ${o} and has been replaced.`),i.set(l,c),this.#d({reason:"register",name:l,kind:o,capabilities:this.capabilities(),regions:f(o)})}registerAll(o,l){if(l)for(const c of Object.keys(l))this.register(o,c,l[c])}get(o,l){const c=this.#t.get(o);return c?c.get(l):void 0}names(o){const l=this.#t.get(o);return l?[...l.keys()]:[]}#f(o,l){const c=this.#t.get(o).get(l);return c!==void 0?c:this.#t.get("component").get(l)}renderer(o){return this.#f("renderer",o)}editor(o){return this.#f("editor",o)}filter(o){return this.#f("filter",o)}dataType(o){return this.get("dataType",o)}totalFn(o){return this.get("totalFn",o)}pipe(o){return this.get("pipe",o)}setLicence(o){return this.#o.set(o)}licence(){return this.#o.info()}licenceVerified(){return this.#o.verify()}watermark(){return this.#o.watermark()}attach(o){o!=null&&(this.#l.add(o),this.#s=o)}detach(o){if(o!=null){this.#l.delete(o);for(const[l,c]of[...this.#a])c===o&&(this.#r.delete(l),this.#a.delete(l));if(this.#s===o){const l=this.#l.size?[...this.#l][this.#l.size-1]:null;this.#s=l}this.#l.size===0&&this.#i&&(this.#i(),this.#i=null)}}destroy(o){if(o!=null){this.detach(o);return}for(const l of[...this.#e.keys()])this.unregisterModule(l);this.#r.clear(),this.#a.clear(),this.#l.clear(),this.#i&&this.#i(),this.#i=null,this.#s=null}}function v(n){const o=n.capabilities,l=Array.isArray(o)?o.filter(c=>typeof c=="string"):[];return[n.name,...l]}function S(n,o){return n.install!==o.install||n.uninstall!==o.uninstall||(n.version||"")!==(o.version||"")?!1:g(v(n),v(o))&&g(u(n),u(o))}function g(n,o){const l=new Set(n),c=new Set(o);if(l.size!==c.size)return!1;for(const i of l)if(!c.has(i))return!1;return!0}function u(n){const o=n.regions;return!Array.isArray(o)||o.length===0?["all"]:o.filter(l=>_.includes(l))}function f(n){switch(n){case"filter":return["header"];case"totalFn":return["totals"];case"renderer":case"editor":case"pipe":return["body"];default:return["all"]}}const a=new z;function r(){return a}function t(n,o={}){return a.registerModules(n,o)}}),$e("packages/core/src/format/number.js",function(e,W){"use strict";Object.defineProperty(e,"compileNumber",{enumerable:!0,get:function(){return B}});const $=W("packages/core/src/internal/util.js").isNil;function B(D,K){const Q=D||{},G=Q.locale||K||void 0,H=Q.style||"decimal",_=typeof Q.scale=="number"?Q.scale:1,z=Q.nullDisplay??"",v=Q.zeroDisplay,S=Q.prefix||"",g=Q.suffix||"",u=Q.negative||"minus",f=Q.signed===!0,a={style:H,notation:Q.notation||"standard"};H==="currency"&&(a.currency=Q.currency||"USD",Q.currencyDisplay&&(a.currencyDisplay=Q.currencyDisplay)),typeof Q.decimals=="number"?(a.minimumFractionDigits=Q.decimals,a.maximumFractionDigits=Q.decimals):(typeof Q.minDecimals=="number"&&(a.minimumFractionDigits=Q.minDecimals),typeof Q.maxDecimals=="number"&&(a.maximumFractionDigits=Q.maxDecimals),a.minimumFractionDigits>(a.maximumFractionDigits??20)&&(a.maximumFractionDigits=a.minimumFractionDigits)),Q.thousandsSeparator===!1&&(a.useGrouping=!1),a.notation==="compact"&&(a.compactDisplay=Q.compactDisplay||"short");const r=new Intl.NumberFormat(G,a),t=typeof Q.thousandsSeparator=="string"?Q.thousandsSeparator:null,n=typeof Q.decimalSeparator=="string"?Q.decimalSeparator:null;let o=",",l=".";if(t||n)for(const s of r.formatToParts(12345.6))s.type==="group"?o=s.value:s.type==="decimal"&&(l=s.value);const c=s=>{let p=s;return t&&(p=p.split(o).join("")),n&&(p=p.split(l).join("")),t&&(p=p.split("").join(t)),n&&(p=p.split("").join(n)),p},i=!!(t||n),m=S!==""&&H==="currency",d=s=>{let p;if(m){const w=r.formatToParts(s);let A=!1;p="";for(const P of w)p+=P.value,!A&&P.type==="currency"&&(p+=S,A=!0);A||(p=S+p)}else p=S+r.format(s);return i&&(p=c(p)),p+g},h=s=>{if($(s)||s==="")return z;const p=typeof s=="number"?s:Number(s);if(Number.isNaN(p))return z;const w=_===1?p:p*_;return w===0&&v!==void 0?v:w<0?u==="parentheses"?`(${d(-w)})`:u==="suffix"?`${d(-w)}-`:d(w):f&&w>0?`+${d(w)}`:d(w)};return h.negativeClass=Q.negativeClass||null,h.spec=Q,h}}),$e("packages/core/src/format/date.js",function(e,W){"use strict";Object.defineProperty(e,"scanPattern",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"toDate",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"compilePattern",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"compileDate",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"toIsoDate",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"toIsoDateTime",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"compareIso",{enumerable:!0,get:function(){return r}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.warnOnce,D=["yyyy","yy","MMMM","MMM","MM","M","dd","d","EEEE","EEE","HH","H","hh","h","mm","m","ss","s","SSS","a"];function K(t){const n=[];let o=0,l="";const c=()=>{l&&(n.push({token:null,text:l}),l="")};for(;o<t.length;){const i=t[o];if(i==="'"){if(t[o+1]==="'"){l+="'",o+=2;continue}const d=t.indexOf("'",o+1);if(d===-1){l+=t.slice(o+1),o=t.length;continue}l+=t.slice(o+1,d),o=d+1;continue}const m=D.find(d=>t.startsWith(d,o));if(m){c(),n.push({token:m,text:m}),o+=m.length;continue}/[A-Za-z]/.test(i)&&B(`date.pattern.token:${i}`,`the date pattern "${t}" contains '${i}', which is not a supported token, so it is rendered as text. Quote it as a literal to silence this. Supported: ${D.join(" ")}.`),l+=i,o+=1}return c(),n}const Q=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?)?$/;function G(t){if($(t)||t==="")return null;if(t instanceof Date)return Number.isNaN(t.getTime())?null:t;if(typeof t=="number")return Number.isNaN(t)?null:new Date(t);if(typeof t=="string"){const n=Q.exec(t.trim());if(n){const[,l,c,i,m="0",d="0",h="0"]=n;return new Date(+l,+c-1,+i,+m,+d,+h)}const o=new Date(t);return Number.isNaN(o.getTime())?null:o}return null}function H(t,n){return String(t).padStart(n,"0")}function _(t){if(!t)return l=>({year:l.getFullYear(),month:l.getMonth()+1,day:l.getDate(),hour:l.getHours(),minute:l.getMinutes(),second:l.getSeconds(),ms:l.getMilliseconds(),weekday:l.getDay()});const n=new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,weekday:"short"}),o={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return l=>{const c={year:0,month:1,day:1,hour:0,minute:0,second:0,ms:l.getMilliseconds(),weekday:0};for(const i of n.formatToParts(l))switch(i.type){case"year":c.year=Number(i.value);break;case"month":c.month=Number(i.value);break;case"day":c.day=Number(i.value);break;case"hour":c.hour=Number(i.value)%24;break;case"minute":c.minute=Number(i.value);break;case"second":c.second=Number(i.value);break;case"weekday":c.weekday=o[i.value]??0;break;default:break}return c}}function z(t,n,o){const l=K(t),c=_(o),i=new Set(l.filter(p=>p.token).map(p=>p.token)),m=i.has("MMM")?new Intl.DateTimeFormat(n,{month:"short",timeZone:o}):null,d=i.has("MMMM")?new Intl.DateTimeFormat(n,{month:"long",timeZone:o}):null,h=i.has("EEE")?new Intl.DateTimeFormat(n,{weekday:"short",timeZone:o}):null,s=i.has("EEEE")?new Intl.DateTimeFormat(n,{weekday:"long",timeZone:o}):null;return p=>{const w=c(p);let A="";for(const P of l){if(!P.token){A+=P.text;continue}switch(P.token){case"yyyy":A+=H(w.year,4);break;case"yy":A+=H(w.year%100,2);break;case"MMMM":A+=d.format(p);break;case"MMM":A+=m.format(p);break;case"MM":A+=H(w.month,2);break;case"M":A+=String(w.month);break;case"dd":A+=H(w.day,2);break;case"d":A+=String(w.day);break;case"EEEE":A+=s.format(p);break;case"EEE":A+=h.format(p);break;case"HH":A+=H(w.hour,2);break;case"H":A+=String(w.hour);break;case"hh":A+=H(w.hour%12===0?12:w.hour%12,2);break;case"h":A+=String(w.hour%12===0?12:w.hour%12);break;case"mm":A+=H(w.minute,2);break;case"m":A+=String(w.minute);break;case"ss":A+=H(w.second,2);break;case"s":A+=String(w.second);break;case"SSS":A+=H(w.ms,3);break;case"a":A+=w.hour<12?"AM":"PM";break;default:A+=P.text;break}}return A}}const v=[["year",365*24*36e5],["month",720*36e5],["week",168*36e5],["day",24*36e5],["hour",36e5],["minute",6e4],["second",1e3]];function S(t,n){const o=t||{},l=o.locale||n||void 0,c=o.nullDisplay??"",i=o.timeZone;let m;if(o.pattern)m=z(o.pattern,l,i);else if(o.dateStyle||o.timeStyle){const w={timeZone:i};o.dateStyle&&(w.dateStyle=o.dateStyle),o.timeStyle&&(w.timeStyle=o.timeStyle);const A=new Intl.DateTimeFormat(l,w);m=P=>A.format(P)}else{const w=new Intl.DateTimeFormat(l,{dateStyle:"medium",timeZone:i});m=A=>w.format(A)}const d=o.relative?new Intl.RelativeTimeFormat(l,{numeric:"auto"}):null,s=(typeof o.relative=="object"&&o.relative?o.relative.threshold??7:7)*24*36e5,p=(w,A)=>{const P=G(w);if(!P)return c;if(d){const b=A&&typeof A.now=="number"?A.now:Date.now(),O=P.getTime()-b;if(Math.abs(O)<s){for(const[x,j]of v)if(Math.abs(O)>=j||x==="second")return d.format(Math.round(O/j),x)}}return m(P)};return p.spec=o,p}function g(t){if($(t)||t==="")return null;if(typeof t=="string"){const l=/^(\d{4}-\d{2}-\d{2})/.exec(t.trim());if(l)return l[1];const c=G(t);return c?g(c):null}const n=G(t);if(!n)return null;const o=l=>String(l).padStart(2,"0");return`${n.getFullYear()}-${o(n.getMonth()+1)}-${o(n.getDate())}`}function u(t,n){if($(t)||t==="")return null;if(typeof t=="string"){const l=t.trim();if(f.test(l)){const m=G(l);return m?a(m,n):null}const c=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?/.exec(l);if(c){const[,m,d,h,s]=c;return`${m}T${d}:${h}${s&&s!=="00"?`:${s}`:""}`}if(/^\d{4}-\d{2}-\d{2}$/.test(l))return`${l}T00:00`;const i=G(l);return i?u(i):null}const o=G(t);return o?a(o,n):null}const f=/(?:Z|[+-]\d{2}:?\d{2})$/i;function a(t,n){const o=m=>String(m).padStart(2,"0");if(n)try{const m=new Intl.DateTimeFormat("en-CA",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(t).reduce((s,p)=>(p.type!=="literal"&&(s[p.type]=p.value),s),{}),d=m.hour==="24"?"00":m.hour,h=Number(m.second);return`${m.year}-${m.month}-${m.day}T${d}:${m.minute}`+(h?`:${m.second}`:"")}catch{}const l=`${t.getFullYear()}-${o(t.getMonth()+1)}-${o(t.getDate())}`,c=t.getSeconds(),i=`${o(t.getHours())}:${o(t.getMinutes())}${c?`:${o(c)}`:""}`;return`${l}T${i}`}function r(t,n){const o=$(t)||t===""?null:String(t),l=$(n)||n===""?null:String(n);return o===null?l===null?0:1:l===null||o<l?-1:o>l?1:0}}),$e("packages/core/src/format/boolean.js",function(e,W){"use strict";Object.defineProperty(e,"toTriState",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"compileBoolean",{enumerable:!0,get:function(){return Q}});const $=W("packages/core/src/internal/util.js").isNil,B={true:"☑",false:"☐",null:""},D={true:"◉",false:"◯",null:""};function K(G){if($(G)||G==="")return null;if(typeof G=="boolean")return G;if(typeof G=="number")return G!==0;const H=String(G).trim().toLowerCase();return H==="true"||H==="yes"||H==="y"||H==="1"?!0:H==="false"||H==="no"||H==="n"||H==="0"?!1:null}function Q(G,H){const _=G||{},z=_.display||"text",v=_.trueLabel??"Yes",S=_.falseLabel??"No",g=_.nullLabel??"";let u=v,f=S;const a=g;z==="checkbox"?(u=B.true,f=B.false):z==="switch"?(u=D.true,f=D.false):z==="icon"&&(u=_.trueIcon??v,f=_.falseIcon??S);const r=t=>{const n=K(t);return n===null?a:n?u:f};return r.display=z,r.labels={true:v,false:S,null:g},r.locale=H,r.spec=_,r}}),$e("packages/core/src/format/text.js",function(e,W){"use strict";Object.defineProperty(e,"compileText",{enumerable:!0,get:function(){return D}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.titleCase;function D(K,Q){const G=K||{},H=G.locale||Q||void 0,_=G.nullDisplay??"",z=G.emptyDisplay??"",v=G.transform||"none",S=typeof G.truncate=="number"?{chars:G.truncate}:G.truncate||null,g=S?S.chars:0,u=S?S.ellipsis??"…":"",f=r=>{switch(v){case"upper":return H?r.toLocaleUpperCase(H):r.toUpperCase();case"lower":return H?r.toLocaleLowerCase(H):r.toLowerCase();case"title":return B(r);default:return r}},a=r=>{if($(r))return _;let t=typeof r=="string"?r:String(r);return t===""?z:(v!=="none"&&(t=f(t)),g>0&&t.length>g&&(t=t.slice(0,g)+u),t)};return a.spec=G,a}}),$e("packages/core/src/format/mask.js",function(e,W){"use strict";Object.defineProperty(e,"splitSections",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"parseSection",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"compileMask",{enumerable:!0,get:function(){return Q}});const Z=new Set(["0","#","?",",","."]),$="\0";function B(H){const _=[];let z="",v=!1;for(let S=0;S<H.length;S++){const g=H[S];if(g==="\\"){z+=g+(H[S+1]??""),S+=1;continue}if(g==='"'){v=!v,z+=g;continue}if(g===";"&&!v){_.push(z),z="";continue}z+=g}return _.push(z),_}function D(H){let _="",z="",v="",S=1,g=!1,u=!1;const f=m=>{u?z+=m:_+=m};for(let m=0;m<H.length;m++){const d=H[m];if(d==="\\"){f(H[m+1]??""),m+=1;continue}if(d==='"'){const h=H.indexOf('"',m+1);f(h===-1?H.slice(m+1):H.slice(m+1,h)),m=h===-1?H.length:h;continue}if(d==="%"){S*=100,f("%");continue}if(d==="@"){g=!0,f("\0");continue}if(Z.has(d)){v+=d,u=!0;continue}f(d)}let a=-1;for(let m=v.length-1;m>=0;m--){const d=v[m];if(d==="0"||d==="#"||d==="?"){a=m;break}}let r=!1,t="";for(let m=0;m<v.length;m++){const d=v[m];if(d===","){m>a?S/=1e3:r=!0;continue}t+=d}const n=t.indexOf("."),o=n===-1?t:t.slice(0,n),l=n===-1?"":t.slice(n+1);let c=0;for(const m of o)m==="0"&&(c+=1);let i=0;for(const m of l)m==="0"&&(i+=1);return{prefix:_,suffix:z,minInt:c,minDec:i,maxDec:l.length,grouping:r,scale:S,hasNumber:a!==-1,isText:g}}function K(H,_){const z=new Intl.NumberFormat(_,{minimumIntegerDigits:Math.max(H.minInt,1),minimumFractionDigits:H.minDec,maximumFractionDigits:Math.max(H.maxDec,H.minDec),useGrouping:H.grouping}),{prefix:v,suffix:S,scale:g,hasNumber:u}=H;return f=>{if(!u)return v+S;const a=g===1?f:f*g;return v+z.format(a)+S}}function Q(H,_){const v=B(String(H)).map(D),S=v.map(t=>K(t,_)),g=0,u=v.length>1?1:-1,f=v.length>2?2:-1,a=v.length>3?3:-1,r=t=>{if(t==null||t==="")return"";if(typeof t!="number"||Number.isNaN(t)){const n=Number(t);if(Number.isNaN(n))return a===-1?String(t):(v[a].prefix+v[a].suffix).split("\0").join(String(t));t=n}return t===0&&f!==-1?S[f](0):t<0&&u!==-1?S[u](-t):S[g](t)};return r.spec={mask:H},{format:r,ooxml:G(String(H))}}function G(H){return H.trim()}}),$e("packages/core/src/format/shorthand.js",function(e,W){"use strict";Object.defineProperty(e,"looksLikeMask",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"looksLikeDatePattern",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"parseShorthand",{enumerable:!0,get:function(){return G}});const Z=["currency","number","percent","date","boolean","text","relative"],$=/[#0?@;"\\]/,B=/(yyyy|yy|MMMM|MMM|MM|EEEE|EEE|dd|HH|hh|mm|ss|SSS)/;function D(H){return typeof H!="string"||H===""||Q(H)?!1:$.test(H)}function K(H){return typeof H!="string"||H===""||Q(H)?!1:B.test(H)}function Q(H){const _=H.indexOf(":"),z=_===-1?H:H.slice(0,_);return Z.includes(z)?z:null}function G(H){const _=Q(H);if(!_)return null;const z=H.indexOf(":"),v=z===-1?"":H.slice(z+1),S=v===""?[]:v.split(":");switch(_){case"currency":{const g={type:"number",style:"currency",currency:S[0]||"USD"};return S[1]!==void 0&&S[1]!==""&&(g.decimals=Number(S[1])),g}case"number":{const g={type:"number",style:"decimal"};return S[0]!==void 0&&S[0]!==""&&(g.decimals=Number(S[0])),g}case"percent":{const g={type:"number",style:"percent"};return S[0]!==void 0&&S[0]!==""&&(g.decimals=Number(S[0])),g}case"date":return{type:"date",pattern:v||void 0};case"relative":return{type:"date",relative:!0};case"boolean":{const g=v.split("/"),u={type:"boolean",display:"text"};return g[0]!==void 0&&g[0]!==""&&(u.trueLabel=g[0]),g[1]!==void 0&&g[1]!==""&&(u.falseLabel=g[1]),g[2]!==void 0&&(u.nullLabel=g[2]),u}case"text":{const g={type:"text"};return S[0]&&(g.transform=S[0]),S[1]!==void 0&&S[1]!==""&&(g.truncate=Number(S[1])),g}default:return null}}}),$e("packages/core/src/format/index.js",function(e,W){"use strict";Object.defineProperty(e,"compileFormat",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"specToOoxml",{enumerable:!0,get:function(){return A}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.isObject,D=Z.warnOnce,K=W("packages/core/src/format/number.js"),Q=K.compileNumber,G=W("packages/core/src/format/date.js"),H=G.compileDate,_=G.scanPattern,z=W("packages/core/src/format/boolean.js"),v=z.compileBoolean,S=W("packages/core/src/format/text.js"),g=S.compileText,u=W("packages/core/src/format/mask.js"),f=u.compileMask,a=W("packages/core/src/format/shorthand.js"),r=a.parseShorthand,t=a.looksLikeMask,n=a.looksLikeDatePattern;Object.defineProperty(e,"compileNumber",{enumerable:!0,get:function(){return K.compileNumber}}),Object.defineProperty(e,"compileDate",{enumerable:!0,get:function(){return G.compileDate}}),Object.defineProperty(e,"compilePattern",{enumerable:!0,get:function(){return G.compilePattern}}),Object.defineProperty(e,"scanPattern",{enumerable:!0,get:function(){return G.scanPattern}}),Object.defineProperty(e,"toDate",{enumerable:!0,get:function(){return G.toDate}}),Object.defineProperty(e,"compileBoolean",{enumerable:!0,get:function(){return z.compileBoolean}}),Object.defineProperty(e,"toTriState",{enumerable:!0,get:function(){return z.toTriState}}),Object.defineProperty(e,"compileText",{enumerable:!0,get:function(){return S.compileText}}),Object.defineProperty(e,"compileMask",{enumerable:!0,get:function(){return u.compileMask}}),Object.defineProperty(e,"splitSections",{enumerable:!0,get:function(){return u.splitSections}}),Object.defineProperty(e,"parseSection",{enumerable:!0,get:function(){return u.parseSection}}),Object.defineProperty(e,"parseShorthand",{enumerable:!0,get:function(){return a.parseShorthand}}),Object.defineProperty(e,"looksLikeMask",{enumerable:!0,get:function(){return a.looksLikeMask}}),Object.defineProperty(e,"looksLikeDatePattern",{enumerable:!0,get:function(){return a.looksLikeDatePattern}});const o=new Set(["decimal","currency","percent","unit"]),l=new Set(["type","locale"]),c={number:new Set(["style","currency","currencyDisplay","decimals","minDecimals","maxDecimals","thousandsSeparator","decimalSeparator","notation","compactDisplay","negative","negativeClass","signed","prefix","suffix","zeroDisplay","nullDisplay","messages","scale"]),date:new Set(["pattern","dateStyle","timeStyle","timeZone","relative","nullDisplay"]),boolean:new Set(["display","trueLabel","falseLabel","nullLabel","trueIcon","falseIcon"]),text:new Set(["transform","truncate","nullDisplay","emptyDisplay"])},i=new Set(["number","date","boolean","text"]);function m(x,j){const F=x.type;if(F===void 0||i.has(F)||!o.has(String(F)))return;const C=j?`"${j}"`:"with no id";D(`format:unknown-style-key:${j||""}:${F}`,`column ${C} has format: { type: "${F}" }, which is not a valid format type ("number", "date", "boolean" or "text") and is ignored; did you mean style: "${F}" instead?`)}function d(x,j,F){const C=c[j],M=F?`"${F}"`:"with no id";for(const L of x){if(l.has(L)||C.has(L))continue;const E=Object.keys(c).find(I=>I!==j&&c[I].has(L));E?D(`format:inapplicable:${F||""}:${L}`,`column ${M} has format key "${L}", which applies to a ${E} column, not the ${j} column it was applied to; it is ignored.`):D(`format:unknown:${F||""}:${L}`,`column ${M} has an unrecognised format key "${L}" for its ${j} format; it is ignored.`)}}function h(x){if(x.type==="number"||x.type==="date"||x.type==="boolean"||x.type==="text")return!0;const j=o.has(String(x.style));return!!(x.pattern||x.dateStyle||x.timeStyle||x.relative||x.timeZone||x.trueLabel||x.falseLabel||x.display||x.trueIcon||x.falseIcon||x.transform||x.truncate||x.emptyDisplay||j||x.currency||x.decimals!==void 0||x.minDecimals!==void 0||x.maxDecimals!==void 0||x.notation||x.negative||x.scale!==void 0||x.prefix||x.suffix||x.zeroDisplay!==void 0)}function s(x,j){if(x.type==="number"||x.type==="date"||x.type==="boolean"||x.type==="text")return x.type;if(x.pattern||x.dateStyle||x.timeStyle||x.relative||x.timeZone)return"date";if(x.trueLabel||x.falseLabel||x.display||x.trueIcon||x.falseIcon)return"boolean";if(x.transform||x.truncate||x.emptyDisplay)return"text";if(x.style||x.currency||x.decimals!==void 0||x.minDecimals!==void 0||x.maxDecimals!==void 0||x.notation||x.negative||x.scale!==void 0||x.prefix||x.suffix||x.zeroDisplay!==void 0)return"number";const F=j&&j.base;return F==="number"?"number":F==="date"||F==="dateString"?"date":F==="boolean"?"boolean":"text"}function p(x,j=null,F=void 0,C=void 0,M=void 0){if(x==null||x==="")return null;const L=B(x)?Object.keys(x):null;if(typeof x=="function"){const R=(k,y)=>String(x({...y||{},value:k,locale:F})??"");return R.ooxml=j&&j.excel||"General",R}if(typeof x=="string"){if(t(x)){const{format:k,ooxml:y}=f(x,F);return k.ooxml=y,k}const R=r(x)||(n(x)?{type:"date",pattern:x}:null);return R?p(R,j,F,C,M):(D(`format:${x}`,`unrecognised format string "${x}"; the value will be stringified`),null)}if(!B(x))return D("format:shape","format must be a spec object or a string; ignoring",x),null;if(j&&$(j.format)&&!h(x)||j&&$(j.format)&&Array.isArray(j.formatPatterns)&&x.type===void 0)return null;const E=s(x,j);E==="date"&&C&&x.timeZone===void 0&&(x={...x,timeZone:C}),m(x,M),d(L||Object.keys(x),E,M);let I;switch(E){case"number":I=Q(x,F);break;case"date":I=H(x,F);break;case"boolean":I=v(x,F);break;default:I=g(x,F);break}return I.ooxml=A(x,E,F,j),I.kind=E,I}const w={yyyy:"yyyy",yy:"yy",MMMM:"mmmm",MMM:"mmm",MM:"mm",M:"m",dd:"dd",d:"d",EEEE:"dddd",EEE:"ddd",HH:"hh",H:"h",hh:"hh",h:"h",mm:"mm",m:"m",ss:"ss",s:"s",SSS:"000",a:"AM/PM"};function A(x,j,F=void 0,C=null){if(j==="date"){if(x.pattern){let R="";for(const k of _(x.pattern))R+=k.token?w[k.token]??k.text:k.text;return R}return C&&C.excel||"yyyy-mm-dd"}if(j==="boolean")return"General";if(j==="text")return"@";if(x.notation==="compact"||x.notation==="scientific")return"General";const M=typeof x.decimals=="number"?x.decimals:typeof x.minDecimals=="number"?x.minDecimals:x.style==="currency"?2:0;let E=`${x.thousandsSeparator===!1?"":"#,#"}#0${M>0?`.${"0".repeat(M)}`:""}`,I="";return x.style==="currency"&&(I+=P(O(x.currency||"USD",F))),x.prefix&&(I+=P(x.prefix)),E=I+E,x.style==="percent"&&(E=`${E}%`),x.suffix&&(E+=P(x.suffix)),x.negative==="parentheses"?`${E};(${E})`:x.negative==="suffix"?`${E};${E}-`:E}function P(x){return`"${String(x).split('"').join("")}"`}const b=new Map;function O(x,j){const F=`${x}|${j||""}`;let C=b.get(F);if(C!==void 0)return C;C=x;try{const L=new Intl.NumberFormat(j,{style:"currency",currency:x}).formatToParts(0).find(E=>E.type==="currency");L&&(C=L.value)}catch{}return b.set(F,C),C}}),$e("packages/core/src/columns/types/temporal.js",function(e,W){"use strict";Object.defineProperty(e,"MS_SECOND",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"MS_MINUTE",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"MS_HOUR",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"MS_DAY",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"MS_WEEK",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"parseTime",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"toTimeMs",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"formatTime",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"zonedParts",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"zoneOffsetAt",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"instantFromParts",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"parseDateTime",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"toEpochMs",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"formatDateTime",{enumerable:!0,get:function(){return R}}),Object.defineProperty(e,"parseDuration",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(e,"toDurationMs",{enumerable:!0,get:function(){return se}}),Object.defineProperty(e,"formatDuration",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(e,"zoneAbbrev",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(e,"resolveZoneName",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(e,"zoneLabel",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(e,"formatInstant",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(e,"bucketInstant",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(e,"timestampGroupProjector",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(e,"TEMPORAL_TYPES",{enumerable:!0,get:function(){return De}}),Object.defineProperty(e,"TEMPORAL_INFERENCE_ORDER",{enumerable:!0,get:function(){return He}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return Ze}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.isFunction,D=W("packages/core/src/format/date.js"),K=D.toDate,Q=D.compilePattern,G=D.compileDate,H=D.toIsoDateTime,_=D.compareIso,z=864e5,v=Object.freeze({}),S=1e3,g=60*S,u=60*g,f=24*u,a=7*f,r=new WeakMap;function t(Ee,Ge){const Ye=Ee&&Ee.locale||"",tt=Ee&&Ee.column;if(!tt)return Ye?{locale:Ye}:v;const st=r.get(tt);if(st&&st.locale===Ye)return st.bag;const ft=tt.typeOptions||tt[Ge]||(n(tt.format)?tt.format:null),mt={...ft||v,locale:ft&&ft.locale||Ye||void 0};return r.set(tt,{locale:Ye,bag:mt}),mt}function n(Ee){return Ee!==null&&typeof Ee=="object"&&!Array.isArray(Ee)&&!(Ee instanceof Date)}function o(Ee,Ge){const Ye=Ee===null||Number.isNaN(Ee)?null:Ee,tt=Ge===null||Number.isNaN(Ge)?null:Ge;return Ye===null?tt===null?0:1:tt===null||Ye<tt?-1:Ye>tt?1:0}const l=/^(\d{1,2})(?:\s*[:.h]\s*(\d{1,2})(?:\s*[:.]\s*(\d{1,2})(?:[.,](\d{1,3}))?)?)?\s*(a\.?m\.?|p\.?m\.?|a|p)?$/i,c=/^(\d{3,6})$/;function i(Ee,Ge,Ye,tt){return!(Ee>=0&&Ee<=23)||!(Ge>=0&&Ge<=59)||!(Ye>=0&&Ye<=59)||!(tt>=0&&tt<=999)?null:Ee*u+Ge*g+Ye*S+tt}function m(Ee){if($(Ee))return null;const Ge=String(Ee).trim();if(Ge==="")return null;const Ye=c.exec(Ge);if(Ye){const Pt=Ye[1];if(Pt.length===5)return null;const Tt=Pt.length===3?1:2;return i(Number(Pt.slice(0,Tt)),Number(Pt.slice(Tt,Tt+2)),Number(Pt.slice(Tt+2,Tt+4)||0),0)}const tt=l.exec(Ge);if(!tt)return null;let st=Number(tt[1]);const ft=Number(tt[2]||0),mt=Number(tt[3]||0),St=tt[4]?Number(tt[4].padEnd(3,"0")):0,jt=tt[5]?tt[5][0].toLowerCase():null;if(jt){if(st<1||st>12)return null;st=st%12,jt==="p"&&(st+=12)}return i(st,ft,mt,St)}function d(Ee){return $(Ee)||Ee===""?null:typeof Ee=="number"?Number.isFinite(Ee)?(Ee%f+f)%f:null:Ee instanceof Date?Number.isNaN(Ee.getTime())?null:Ee.getHours()*u+Ee.getMinutes()*g+Ee.getSeconds()*S+Ee.getMilliseconds():m(Ee)}const h=new Map;function s(Ee){const Ge=Ee.pattern||"",Ye=Ee.timeStyle||(Ee.seconds?"medium":"short"),tt=`${Ee.locale||""}|${Ge}|${Ye}`;let st=h.get(tt);if(st)return st;if(Ge)st=Q(Ge,Ee.locale||void 0,"UTC");else{const ft=new Intl.DateTimeFormat(Ee.locale||void 0,{timeStyle:Ye,timeZone:"UTC"});st=mt=>ft.format(mt)}return h.set(tt,st),st}function p(Ee,Ge){const Ye=Ge||v;if(Ee==null||typeof Ee!="number"||!Number.isFinite(Ee))return Ye.nullDisplay??"";const tt=(Ee%f+f)%f;return s(Ye)(new Date(tt))}function w(Ee){return Ee instanceof Date?!Number.isNaN(Ee.getTime()):typeof Ee=="number"?Number.isFinite(Ee)&&Ee>=0&&Ee<f:typeof Ee!="string"||!Ee.includes(":")?!1:m(Ee)!==null}function A(Ee){const Ge=d(Ee);return Ge==null?"":p(Ge,{pattern:Ge%S===0?"HH:mm:ss":"HH:mm:ss.SSS"})}const P=new Map;function b(Ee){const Ge=Ee||"";let Ye=P.get(Ge);return Ye||(Ye=new Intl.DateTimeFormat("en-GB",{timeZone:Ee||void 0,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),P.set(Ge,Ye)),Ye}function O(Ee,Ge){const Ye={year:1970,month:1,day:1,hour:0,minute:0,second:0};for(const tt of b(Ge).formatToParts(new Date(Ee)))tt.type==="year"?Ye.year=Number(tt.value):tt.type==="month"?Ye.month=Number(tt.value):tt.type==="day"?Ye.day=Number(tt.value):tt.type==="hour"?Ye.hour=Number(tt.value)%24:tt.type==="minute"?Ye.minute=Number(tt.value):tt.type==="second"&&(Ye.second=Number(tt.value));return Ye}function x(Ee,Ge){const Ye=O(Ee,Ge);return Date.UTC(Ye.year,Ye.month-1,Ye.day,Ye.hour,Ye.minute,Ye.second,0)-Math.floor(Ee/1e3)*1e3}function j(Ee,Ge){const Ye=Ee.hour||0,tt=Ee.minute||0,st=Ee.second||0,ft=Ee.ms||0;if(!Ge)return new Date(Ee.year,Ee.month-1,Ee.day,Ye,tt,st,ft).getTime();const mt=Date.UTC(Ee.year,Ee.month-1,Ee.day,Ye,tt,st,ft);let St=mt-x(mt,Ge);return St=mt-x(St,Ge),St}const F=/(?:Z|[+-]\d{2}:?\d{2})$/i,C=/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[T\s]+(.*))?$/;function M(Ee,Ge){if($(Ee))return null;const Ye=String(Ee).trim();if(Ye==="")return null;const tt=Ge&&Ge.timeZone||void 0;if(!F.test(Ye)){const st=C.exec(Ye);if(st){const ft=(st[4]||"").trim(),mt=ft===""?0:m(ft);if(mt===null)return null;const St=j({year:Number(st[1]),month:Number(st[2]),day:Number(st[3]),hour:Math.floor(mt/u),minute:Math.floor(mt/g)%60,second:Math.floor(mt/S)%60,ms:mt%S},tt);return Number.isNaN(St)?null:new Date(St)}}return K(Ye)}function L(Ee){if(typeof Ee=="number")return Number.isFinite(Ee)?Ee:null;const Ge=K(Ee);return Ge?Ge.getTime():null}const E=new Map;function I(Ee){const Ge=[Ee.locale||"",Ee.pattern||"",Ee.dateStyle||"",Ee.timeStyle||"",Ee.timeZone||"",Ee.seconds?"1":""].join("|");let Ye=E.get(Ge);if(Ye)return Ye;const tt=Ee.pattern?{type:"date",pattern:Ee.pattern,timeZone:Ee.timeZone}:{type:"date",dateStyle:Ee.dateStyle||"medium",timeStyle:Ee.timeStyle||(Ee.seconds?"medium":"short"),timeZone:Ee.timeZone};return Ye=G(tt,Ee.locale||void 0),E.set(Ge,Ye),Ye}function R(Ee,Ge){const Ye=Ge||v,tt=L(Ee);return tt==null?Ye.nullDisplay??"":I(Ye)(tt)}function k(Ee){return Ee instanceof Date?!Number.isNaN(Ee.getTime()):typeof Ee!="string"||!C.test(Ee.trim())?!1:M(Ee)!==null}const y=Object.freeze([{key:"w",ms:a,intl:"week",long:["week","weeks"],names:["w","wk","wks","week","weeks"]},{key:"d",ms:f,intl:"day",long:["day","days"],names:["d","dy","day","days"]},{key:"h",ms:u,intl:"hour",long:["hour","hours"],names:["h","hr","hrs","hour","hours"]},{key:"m",ms:g,intl:"minute",long:["minute","minutes"],names:["m","min","mins","minute","minutes"]},{key:"s",ms:S,intl:"second",long:["second","seconds"],names:["s","sec","secs","second","seconds"]},{key:"ms",ms:1,intl:"millisecond",long:["millisecond","milliseconds"],names:["ms","msec","msecs","milli","millis","millisecond","milliseconds"]}]),T=new Map;for(const Ee of y)for(const Ge of Ee.names)T.set(Ge,Ee);const V=Object.freeze(y.filter(Ee=>Ee.key!=="w")),q=/^(\d+(?:\.\d+)?)\s*([a-z]+)\s*(?:,\s*)?/,Y=/^\d+(?:\.\d+)?$/,J=/^(\d+):([0-5]?\d)(?::([0-5]?\d))?(?:\.(\d{1,3}))?$/;function ee(Ee){const Ge=Ee&&Ee.defaultUnit?T.get(String(Ee.defaultUnit).toLowerCase()):null;return Ge?Ge.ms:g}function ne(Ee){return(Ee&&Ee.defaultUnit?T.get(String(Ee.defaultUnit).toLowerCase()):null)||T.get("m")}function ie(Ee,Ge){if($(Ee))return null;let Ye=String(Ee).trim().toLowerCase();if(Ye==="")return null;let tt=1;if(Ye[0]==="-"?(tt=-1,Ye=Ye.slice(1).trim()):Ye[0]==="+"&&(Ye=Ye.slice(1).trim()),Ye==="")return null;const st=J.exec(Ye);if(st){const jt=st[3]!==void 0,Pt=Number(st[1])*u+Number(st[2])*g+(jt?Number(st[3])*S:0)+(st[4]?Number(st[4].padEnd(3,"0")):0);return tt*Pt}if(Y.test(Ye))return Math.round(tt*Number(Ye)*ee(Ge||v));let ft=Ye,mt=0,St=0;for(;ft!=="";){const jt=q.exec(ft);if(!jt)return null;const Pt=T.get(jt[2]);if(!Pt)return null;mt+=Number(jt[1])*Pt.ms,ft=ft.slice(jt[0].length),St++}return St===0?null:Math.round(tt*mt)}function se(Ee){return $(Ee)||Ee===""?null:typeof Ee=="number"?Number.isFinite(Ee)?Ee:null:ie(Ee)}const we=new Map;function he(Ee,Ge,Ye){const tt=`${Ye||""}|${Ge.intl}`;let st=we.get(tt);if(st===void 0){try{st=new Intl.NumberFormat(Ye||void 0,{style:"unit",unit:Ge.intl,unitDisplay:"long"})}catch{st=null}we.set(tt,st)}return st?st.format(Ee):`${Ee} ${Ee===1?Ge.long[0]:Ge.long[1]}`}function te(Ee,Ge){return String(Ee).padStart(Ge,"0")}function ae(Ee,Ge){const Ye=Ge||v;if(Ee==null||typeof Ee!="number"||!Number.isFinite(Ee))return Ye.nullDisplay??"";const tt=Ye.style||"short",st=Ee<0;let ft=Math.round(Math.abs(Ee));const mt=st?"-":"";if(ft===0&&Ye.zeroDisplay!=null)return Ye.zeroDisplay;if(tt==="clock"){const Tt=Math.floor(ft/u),Mt=Math.floor(ft/g)%60,$t=Math.floor(ft/S)%60;return`${mt}${te(Tt,2)}:${te(Mt,2)}:${te($t,2)}`}if(ft===0){const Tt=ne(Ye);return tt==="long"?he(0,Tt,Ye.locale):`0${Tt.key}`}const St=Ye.weeks===!0?y:V,jt=typeof Ye.maxUnits=="number"&&Ye.maxUnits>0?Ye.maxUnits:Ye.maxUnits===void 0?2:1/0,Pt=[];for(const Tt of St){if(Pt.length>=jt)break;const Mt=Math.floor(ft/Tt.ms);Mt!==0&&(ft-=Mt*Tt.ms,Pt.push(tt==="long"?he(Mt,Tt,Ye.locale):`${Mt}${Tt.key}`))}return mt+Pt.join(" ")}function ge(Ee){if(typeof Ee!="string")return!1;const Ge=Ee.trim();return Ge===""||J.test(Ge)||!/[a-z]/i.test(Ge)?!1:ie(Ge)!==null}const be=Date.UTC(1899,11,30),je=new Map;function xe(Ee,Ge){const Ye=Ee||"";let tt=je.get(Ye);tt||(tt=new Intl.DateTimeFormat("en-GB",{timeZone:Ee||void 0,timeZoneName:"short",hour:"2-digit",hour12:!1}),je.set(Ye,tt));const st=typeof Ge=="number"?Ge:Date.now();for(const ft of tt.formatToParts(new Date(st)))if(ft.type==="timeZoneName")return ft.value;return""}function Ce(Ee){if(Ee)return Ee;try{return new Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}}function ke(Ee,Ge){const Ye=Ce(Ee),tt=xe(Ee,Ge);return tt?`${Ye} (${tt})`:Ye}function ye(Ee,Ge){if(Ee&&Ee.timeZone)return Ee.timeZone;const Ye=Ge&&Ge.grid;return(Ye&&B(Ye.get)?Ye.get("timeZone"):void 0)||void 0}function ve(Ee,Ge){const Ye=Ge||v,tt=L(Ee);if(tt==null)return Ye.nullDisplay??"";const st=I(Ye)(tt);if(!Ye.showOrigin)return st;const ft=Ye.originZone;return ft?ft===(Ye.timeZone||Ce(Ye.timeZone))?st:`${st} (${ke(ft,tt)})`:`${st} (no origin recorded)`}function Se(Ee,Ge,Ye,tt){if(Ge==="instant"||!Ge)return Ee;const st=O(Ee,Ye);if(Ge==="month")return j({year:st.year,month:st.month,day:1},Ye);if(Ge==="week"){const ft=tt>=1&&tt<=7?tt:1,St=((new Date(Date.UTC(st.year,st.month-1,st.day)).getUTCDay()+6)%7+1-ft+7)%7,jt=new Date(Date.UTC(st.year,st.month-1,st.day-St));return j({year:jt.getUTCFullYear(),month:jt.getUTCMonth()+1,day:jt.getUTCDate()},Ye)}return j({year:st.year,month:st.month,day:st.day},Ye)}function Le(Ee,Ge){const Ye=Ee&&Ee.group,tt=Ye&&Ye.granularity||"day";if(tt==="instant")return null;const st=Ye&&Ye.weekStart;return ft=>typeof ft=="number"?Se(ft,tt,Ge,st):ft}const De={time:{base:"number",storage:"float64",matches:w,format:Ee=>p(d(Ee.value),t(Ee,"time")),parse:Ee=>m(Ee.text),compare:(Ee,Ge)=>o(d(Ee),d(Ge)),defaults:{filter:"number",editor:"time",align:"start"},excel:"hh:mm:ss",excelKind:"number",toExcelValue:Ee=>{const Ge=d(Ee);return Ge===null?null:Ge/z},toStorage:Ee=>d(Ee),toClipboard:A,fromClipboard:m},datetime:{base:"dateString",storage:"dictionary",matches:k,format:Ee=>R(Ee.value,t(Ee,"datetime")),parse:Ee=>H(M(Ee.text,t(Ee,"datetime"))??Ee.text),compare:_,defaults:{filter:"date",editor:"datetime",align:"start"},excel:"yyyy-mm-dd hh:mm",toStorage:(Ee,Ge)=>H(Ee,Ge&&Ge.timeZone),toClipboard:Ee=>$(Ee)?"":String(Ee),fromClipboard:Ee=>H(Ee)},duration:{base:"number",storage:"float64",matches:ge,format:Ee=>ae(se(Ee.value),t(Ee,"duration")),parse:Ee=>ie(Ee.text,t(Ee,"duration")),compare:(Ee,Ge)=>o(se(Ee),se(Ge)),defaults:{filter:"number",editor:"duration",align:"end",total:"sum"},excel:"[h]:mm:ss",excelKind:"number",toExcelValue:Ee=>{const Ge=se(Ee);return Ge===null?null:Ge/z},toStorage:Ee=>se(Ee),toClipboard:Ee=>ae(se(Ee),{style:"short",maxUnits:-1}),fromClipboard:Ee=>ie(Ee)},timestamp:{base:"number",storage:"float64",format:Ee=>{const Ge=t(Ee,"timestamp");return ve(Ee.value,{...Ge,timeZone:ye(Ge,Ee)})},parse:Ee=>{const Ge=t(Ee,"timestamp"),Ye=M(Ee.text,{timeZone:ye(Ge,Ee)});return Ye?Ye.getTime():null},compare:(Ee,Ge)=>o(L(Ee),L(Ge)),groupProjector:(Ee,Ge)=>Le(Ee,Ge),defaults:{filter:"date",editor:"datetime",align:"start"},excel:"yyyy-mm-dd hh:mm",excelKind:"number",toExcelValue:(Ee,Ge)=>{const Ye=L(Ee);if(Ye==null)return null;const tt=O(Ye,Ge&&Ge.timeZone||void 0);return(Date.UTC(tt.year,tt.month-1,tt.day,tt.hour,tt.minute,tt.second)-be)/z},toStorage:Ee=>L(Ee),toClipboard:Ee=>{const Ge=L(Ee);return Ge==null?"":new Date(Ge).toISOString()},fromClipboard:Ee=>L(Ee)}},He=["datetime","time","duration"],Ze=De}),$e("packages/core/src/columns/types/network.js",function(e,W){"use strict";Object.defineProperty(e,"toUint32",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"parseIpv4",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"formatIpv4",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"isIpv4",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"compareIpv4",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"packCidr",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"cidrParts",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"parseCidr",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"formatCidr",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"isCidr",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"compareCidr",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"netmask",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"networkAddress",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"broadcastAddress",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"addressCount",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"hostCount",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"containsAddress",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"overlaps",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"ipv6Groups",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"parseIpv6",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"formatIpv6",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"isIpv6",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"compareIpv6",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"NETWORK_TYPES",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return M}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.Lru,D=4294967295,K=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function Q(L){if($(L))return null;if(typeof L=="string")return G(L);const E=Number(L);return Number.isFinite(E)?E<0?E<-2147483648?null:E>>>0:E>D?null:Math.trunc(E)>>>0:null}function G(L){if($(L))return null;const E=String(L).trim();if(E==="")return null;const I=K.exec(E);if(!I)return null;let R=0;for(let k=1;k<=4;k++){const y=I[k];if(y.length>1&&y.charCodeAt(0)===48)return null;const T=Number(y);if(T>255)return null;R=R*256+T}return R}function H(L){const E=Q(L);return E===null?"":`${E>>>24&255}.${E>>>16&255}.${E>>>8&255}.${E&255}`}function _(L){return typeof L=="string"&&G(L)!==null}function z(L,E){const I=Q(L),R=Q(E);return I===null?R===null?0:1:R===null||I<R?-1:I>R?1:0}const v=64,S=D*v+32,g=/^(?:0|[1-9]\d?)$/;function u(L,E){return L*v+E}function f(L){if($(L))return null;if(typeof L=="string"){const R=a(L);return R===null?null:f(R)}if(typeof L=="object"){const R=Q(L.address),k=Number(L.prefix);return R===null||!Number.isInteger(k)||k<0||k>32?null:{address:R,prefix:k}}const E=Number(L);if(!Number.isInteger(E)||E<0||E>S)return null;const I=E%v;return I>32?null:{address:(E-I)/v,prefix:I}}function a(L){if($(L))return null;const E=String(L).trim();if(E==="")return null;const I=E.indexOf("/");if(I<0)return null;const R=G(E.slice(0,I));if(R===null)return null;const k=E.slice(I+1).trim();if(!g.test(k))return null;const y=Number(k);return y>32?null:u(R,y)}function r(L){const E=f(L);return E?`${H(E.address)}/${E.prefix}`:""}function t(L){return typeof L=="string"&&a(L)!==null}function n(L,E){const I=f(L),R=f(E);return I?R?I.address!==R.address?I.address<R.address?-1:1:I.prefix-R.prefix:-1:R?1:0}function o(L){return L===0?0:4294967295<<32-L>>>0}function l(L){const E=f(L);return E?(E.address&o(E.prefix))>>>0:null}function c(L){const E=f(L);return E?(E.address&o(E.prefix)|~o(E.prefix)>>>0)>>>0:null}function i(L){const E=f(L);return E?2**(32-E.prefix):null}function m(L){const E=f(L);return E?E.prefix===32?1:E.prefix===31?2:2**(32-E.prefix)-2:null}function d(L,E){const I=f(L);if(!I)return!1;const R=Q(E);if(R===null)return!1;const k=o(I.prefix);return(R&k)>>>0===(I.address&k)>>>0}function h(L,E){const I=l(L),R=l(E);return I===null||R===null?!1:I<=c(E)&&R<=c(L)}const s=/^[0-9a-fA-F]{1,4}$/,p=new B(512);function w(L){if($(L))return null;let E=String(L).trim();if(E==="")return null;const I=E.indexOf("%");if(I>=0&&(E=E.slice(0,I)),E==="")return null;if(E.indexOf(".")>=0){const q=E.lastIndexOf(":");if(q<0)return null;const Y=G(E.slice(q+1));if(Y===null)return null;E=`${E.slice(0,q+1)}${(Y>>>16&65535).toString(16)}:${(Y&65535).toString(16)}`}const R=E.split("::");if(R.length>2)return null;const k=A(R[0]);if(k===null)return null;if(R.length===1)return k.length===8?k:null;const y=A(R[1]);if(y===null)return null;const T=8-k.length-y.length;if(T<1)return null;const V=k.slice();for(let q=0;q<T;q++)V.push(0);for(const q of y)V.push(q);return V}function A(L){if(L==="")return[];const E=[];for(const I of L.split(":")){if(!s.test(I))return null;E.push(parseInt(I,16))}return E}function P(L){if(typeof L!="string")return w(L);if(p.has(L))return p.get(L);const E=w(L);return p.set(L,E),E}function b(L){if(L[0]===0&&L[1]===0&&L[2]===0&&L[3]===0&&L[4]===0&&L[5]===65535)return`::ffff:${H((L[6]<<16|L[7])>>>0)}`;let E=-1,I=0,R=-1,k=0;for(let V=0;V<8;V++)L[V]===0?(R<0?(R=V,k=1):k++,k>I&&(I=k,E=R)):(R=-1,k=0);if(I<2)return L.map(V=>V.toString(16)).join(":");const y=L.slice(0,E).map(V=>V.toString(16)).join(":"),T=L.slice(E+I).map(V=>V.toString(16)).join(":");return`${y}::${T}`}function O(L){const E=w(L);return E===null?null:b(E)}function x(L){return O(L)??""}function j(L){return typeof L=="string"&&L.indexOf(":")>=0&&w(L)!==null}function F(L,E){const I=P(L),R=P(E);if(!I)return R?1:0;if(!R)return-1;for(let k=0;k<8;k++)if(I[k]!==R[k])return I[k]<R[k]?-1:1;return 0}const C=Object.freeze({ipv4:{base:"number",storage:"int32",unsignedInt32:!0,matches:_,parse:L=>G(L.text),compare:z,format:L=>H(L.value),defaults:{filter:"text",editor:"ipaddress",align:"start"},excel:"@",excelKind:"string",toStorage:L=>Q(L),toClipboard:L=>H(L),fromClipboard:L=>G(L)},cidr:{base:"number",storage:"float64",matches:t,parse:L=>a(L.text),compare:n,format:L=>r(L.value),defaults:{filter:"text",editor:"ipaddress",align:"start"},excel:"@",excelKind:"string",toStorage:L=>{const E=f(L);return E===null?null:u(E.address,E.prefix)},toClipboard:L=>r(L),fromClipboard:L=>a(L)},ipv6:{base:"text",storage:"dictionary",matches:j,parse:L=>O(L.text),compare:F,format:L=>x(L.value),defaults:{filter:"text",editor:"ipaddress",align:"start"},excel:"@",toStorage:L=>O(L),toClipboard:L=>x(L),fromClipboard:L=>O(L)}}),M=C}),$e("packages/core/src/i18n/catalogue.js",function(e,W){"use strict";Object.defineProperty(e,"EN_GB",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"MESSAGE_KEYS",{enumerable:!0,get:function(){return D}});const $=W("packages/core/src/registry/free-tier-notice.js").FREE_TIER_NOTICE,B=Object.freeze({"count.rows":{one:"{count} row",other:"{count} rows"},"count.comments":{one:"{count} comment",other:"{count} comments"},"comments.someUnresolved":"{comments}, {unresolved} unresolved","comments.allResolved":"{comments}, all resolved","count.unresolvedComments":{one:"{count} unresolved comment",other:"{count} unresolved comments"},"count.items":{one:"{count} item",other:"{count} items"},"count.keys":{one:"{count} key",other:"{count} keys"},"count.values":{one:"value",other:"values"},"count.waiting":{one:"{count} waiting",other:"{count} waiting"},"count.rowsAdded":{one:"{count} row added",other:"{count} rows added"},"count.rowsRemoved":{one:"{count} row removed",other:"{count} rows removed"},"value.empty":"empty","a11y.sort.cleared":"Sort cleared","a11y.sort.by":"Sorted by {columns}","a11y.sort.column":"{column} {direction}","a11y.sort.ascending":"ascending","a11y.sort.descending":"descending","a11y.filter.cleared":"Filter cleared, {rows}","a11y.filter.applied":"Filtered to {shown} of {total}","a11y.find.count":{one:"{current} of {count} match",other:"{current} of {count} matches"},"a11y.find.countLoaded":{one:"{current} of {count} match in loaded rows",other:"{current} of {count} matches in loaded rows"},"a11y.find.none":"No matches","a11y.find.noneLoaded":"No matches in loaded rows","a11y.selection.cleared":"Selection cleared","a11y.selection.count":{one:"{count} row selected",other:"{count} rows selected"},"tabs.tablist":"Tabs","a11y.tabs.selected":"{label} tab selected","a11y.scrollbar.horizontal":"Horizontal scrollbar","a11y.scrollbar.vertical":"Vertical scrollbar","designer.canvas":"Dashboard canvas","designer.chrome":"Designer tools","designer.page":"Page {n}","a11y.designer.edit":"Edit mode","a11y.designer.view":"View mode","layout.region":"Dashboard layout","layout.move":"Move {title}","layout.resize":"Resize {title}","layout.close":"Close {title}","a11y.layout.grabbed":"{title} grabbed, column {x} of {columns}, row {y}","a11y.layout.position":"{title}, column {x} of {columns}, row {y}","a11y.layout.dropped":"{title} dropped, column {x} of {columns}, row {y}","a11y.layout.cancelled":"{title} move cancelled","a11y.layout.resizeCancelled":"{title} resize cancelled","a11y.layout.reverted":"{title} returned to column {x}, row {y}","a11y.layout.resizeGrabbed":"{title} resize grabbed, {w} by {h} cells","a11y.layout.resizeStep":"{title}, {w} by {h} cells","a11y.layout.resized":"{title} resized to {w} by {h} cells","a11y.layout.closed":"{title} closed","layout.maximise":"Maximise {title}","layout.minimise":"Minimise {title}","layout.restore":"Restore {title}","a11y.layout.maximised":"{title} maximised, filling the dashboard; press Escape to restore it","a11y.layout.minimised":"{title} minimised","a11y.layout.restored":"{title} restored to column {x}, row {y}","a11y.group.cleared":"Grouping cleared","a11y.group.by":"Grouped by {columns}","a11y.group.expanded":"{label} expanded, {rows} shown","a11y.group.collapsed":"{label} collapsed, {rows} shown","a11y.page.position":"Page {page} of {pages}","a11y.updates.paused":"Updates paused","a11y.updates.resumed":"Updates resumed","a11y.edit.refusedOne":"Edit to {column} was refused and put back to {value}{reason}","a11y.edit.refusedMany":{one:"{count} edit was refused and put back{reason}",other:"{count} edits were refused and put back{reason}"},"a11y.edit.reason":", {reason}","a11y.history.undo":"Undid {label}","a11y.history.redo":"Redid {label}","a11y.history.undoLast":"Undid the last change","a11y.history.redoLast":"Redid the last change","a11y.column.cannotResize":"{column} cannot be resized","a11y.column.resized":"{column} is {width} pixels wide","a11y.column.atMinimum":"{column} is at its narrowest, {width} pixels","a11y.column.atMaximum":"{column} is at its widest, {width} pixels","a11y.column.cannotMove":"{column} cannot be moved","a11y.column.alreadyFirst":"{column} is already first in its group","a11y.column.alreadyLast":"{column} is already last in its group","a11y.column.cannotMoveThere":"{column} cannot be moved there","a11y.column.moved":"{column} moved to position {at} of {of}","a11y.group.formed":"{column} grouped with {other} in a new band","a11y.group.dissolved":"band {group} dissolved","a11y.group.renamed":"band renamed to {group}","a11y.group.moved":"band {group} moved to position {at} of {of}","a11y.column.addedToGroup":"{column} added to band {group}","a11y.column.removedFromGroup":"{column} removed from its band","a11y.column.notInGroup":"{column} is not in a band","a11y.column.cannotGroup":"{column} cannot be grouped","a11y.group.cannotMove":"band {group} cannot be moved there","columngroup.newGroup":"New group","columngroup.rename":"Rename band","columngroup.dissolve":"Dissolve band","columngroup.group":"Group with adjacent column","columngroup.untitled":"Untitled band","panel.bandCollapse":"Collapse band {band}","panel.bandExpand":"Expand band {band}","panel.bandVisible":"Show or hide every column in band {band}","panel.bandRenameFor":"Rename band {band}","panel.bandDissolveFor":"Dissolve band {band}","header.filter":"Filter {column}","header.menu":"Column menu for {column}","header.toggleGroup":"Toggle {group}","header.dragHint":"Drag {column} to reorder, or onto another column to group","header.dragRole":"draggable column header","header.group":"group","header.selectAllRows":"Select all rows","header.clearSelection":"Clear selection","cell.selectRow":"Select row","cell.detail.show":"Show detail","cell.detail.hide":"Hide detail","cell.detail.showInPane":"Show in the detail pane","cell.detail.showingInPane":"Showing in the detail pane","cell.group.expand":"Expand","cell.group.collapse":"Collapse","cell.delta.up":"up","cell.delta.down":"down","cell.delta.unchanged":"unchanged","cell.delta.moved":"{direction} {magnitude}","cell.delta.describedUnchanged":"{label}, unchanged","cell.delta.described":"{label}, {direction} by {magnitude}","cell.qr.of":"QR code for {text}","cell.qr.empty":"No QR code","cell.rating.of":"{rating} of {max}","cell.rating.empty":"Not rated","a11y.panel.cannotMove":"{column} cannot be moved","a11y.panel.alreadyFirst":"{column} is already first","a11y.panel.alreadyLast":"{column} is already last","a11y.panel.moved":"{column} moved to position {at} of {of}","a11y.panel.removedFrom":"{column} removed from {list}","a11y.panel.addedTo":"{column} added to {list}","a11y.panel.cannotAddTo":"{column} cannot be added to {list}","a11y.annotate.erased":"Annotation removed","a11y.annotate.noMarks":"No annotations to erase","a11y.annotate.focusedMark":"Mark {at} of {of} selected","a11y.annotate.confirmClear":"Clear all annotations? Choose Clear or Keep.","a11y.annotate.cleared":"All annotations cleared","a11y.range.written":{one:"{count} cell updated",other:"{count} cells updated"},"a11y.range.cleared":{one:"{count} cell cleared",other:"{count} cells cleared"},"paste.preview.title":"Review paste","paste.preview.summary":{one:"{changes} cell will change, {rejected} rejected.",other:"{changes} cells will change, {rejected} rejected."},"paste.preview.changesHeading":{one:"{count} change",other:"{count} changes"},"paste.preview.rejectedHeading":{one:"{count} rejected",other:"{count} rejected"},"paste.preview.colOld":"Current","paste.preview.colNew":"New","paste.preview.colCell":"Cell","paste.preview.colReason":"Reason","paste.preview.empty":"This paste would change nothing.","paste.preview.confirm":"Apply","paste.preview.cancel":"Cancel","paste.preview.reason.permission":"Not permitted","paste.preview.reason.readOnly":"Read-only","paste.preview.reason.validation":"Invalid value","paste.preview.reason.locked":"Being edited","paste.preview.reason.missing":"No such cell","a11y.paste.previewOpened":{one:"Paste preview: {changes} cell changes, {rejected} rejected. Review, then apply or cancel.",other:"Paste preview: {changes} cell changes, {rejected} rejected. Review, then apply or cancel."},"a11y.paste.cancelled":"Paste cancelled; nothing changed","status.total":"{rows}","status.counting":"Counting rows…","status.shownOfTotal":"{shown} of {total}","status.selected":"{count} selected","status.selectedAcrossSource":"{count} selected across the source","status.selectedAcrossSourceCounting":"All matching rows selected, counting…","status.count":"Count {count}","status.loading":"Loading {count}…","status.loadingOf":"Loading {loaded} of {total} ({percent}%)","status.stat.sum":"Sum","status.stat.min":"Min","status.stat.max":"Max","status.stat.avg":"Avg","status.paused":"Paused","status.pausedWaiting":"Paused · {waiting}","status.coalesced":"{count} coalesced","status.hiddenComments":"{comments} on hidden rows","pagination.label":"Pagination","pagination.first":"First page","pagination.previous":"Previous page","pagination.next":"Next page","pagination.last":"Last page","pagination.page":"Page","pagination.ofPages":"of {pages}","pagination.summary":"{from}–{to} of {total}","pagination.pageSize":"Rows per page","pagination.range":"{from}–{to}","pagination.counting":"{from}–{to}, counting…","pagination.jump":"Page number, press Enter to jump","pagination.jumpBounded":"Page number, 1 to {pages}, press Enter to jump","panel.columns":"Columns","panel.filters":"Filters","panel.views":"Views","panel.quickFilter":"Quick filter","find.label":"Find in grid","find.placeholder":"Find in grid","find.next":"Next match","find.previous":"Previous match","find.close":"Close find","find.matchCase":"Match case","find.wholeCell":"Whole cell","find.columnScope":"Search in","find.allColumns":"All columns","find.count":"{current} of {total}","find.countPartial":"{current} of {total} so far","find.none":"No matches","find.searching":"Searching…","find.loadedRows":"in loaded rows","panel.formatting":"Formatting","panel.statistics":"Statistics","stat.noData":"No data","stat.tone.good":"good","stat.tone.bad":"bad","stat.tone.flat":"flat","panel.regression":"Regression","panel.compare":"Compare","panel.insights":"Insights","insights.subset":"Filtered subset vs whole","insights.dataset":"This grid vs another dataset","insights.groups":"Group comparison","insights.noFilter":"Filter the grid to compare the subset against the whole.","insights.by":"Group by","insights.test":"Test","insights.effect":"Effect size","insights.interval":"Confidence interval","insights.pValue":"p-value","insights.smallSample":"small sample — interpret with care","insights.needGroups":"Choose two columns with groups to compare.","insights.empty":"No columns to analyse.","insights.anomalies":"Anomalies","insights.anomalyCount":"{count} flagged of {n}","insights.anomalyMethod":"Method","insights.anomalyThreshold":"Threshold","anomaly.chip":"{count} anomalies flagged","anomaly.chipActive":"Showing {count} anomalies — clear","compare.first":"First column","compare.second":"Second column","compare.needTwo":"Two numeric columns are needed to compare","compare.noPairs":"No rows have a value in both","compare.pairs":"{count} pairs","compare.pearson":"Correlation (Pearson)","compare.spearman":"Rank correlation (Spearman)","compare.kendall":"Kendall’s tau","compare.covariance":"Covariance","compare.slope":"Slope","compare.intercept":"Intercept","compare.r2":"R²","compare.stdError":"Standard error","compare.weighted":"Weighted average","panel.zone.group":"row groups","panel.zone.values":"values","panel.zone.pivot":"pivot columns","groupZone.label":"Row groups","groupZone.title":"Group by","groupZone.hint":"Drag a column here to group rows by its values","groupZone.chip":"{column}, group {at} of {of}","groupZone.remove":"Stop grouping by {column}","groupZone.add":"Add a group","total.sum":"Sum","total.avg":"Average","total.min":"Min","total.max":"Max","total.count":"Count","total.countValues":"Count of values","total.first":"First","total.last":"Last","total.custom":"Total","total.median":"Median","total.p25":"25th percentile","total.p75":"75th percentile","total.p90":"90th percentile","total.p95":"95th percentile","total.p99":"99th percentile","total.iqr":"Interquartile range","total.mad":"Median absolute deviation","total.variance":"Variance","total.varianceP":"Variance (population)","total.stddev":"Standard deviation","total.stddevP":"Standard deviation (population)","total.range":"Range","total.distinct":"Distinct","total.mode":"Mode","total.skewness":"Skewness","total.kurtosis":"Kurtosis","total.geomean":"Geometric mean","total.harmean":"Harmonic mean","total.sumSquares":"Sum of squares","total.weightedAvg":"Weighted average","total.argmin":"Lowest by","total.argmax":"Highest by","total.hhi":"Concentration (HHI)","total.entropy":"Entropy","total.evenness":"Evenness","total.top3Share":"Top 3 share","total.top10Share":"Top 10 share","total.gini":"Gini coefficient","total.trimmedMean":"Trimmed mean","total.winsorizedMean":"Winsorized mean","total.robustOutliers":"Outliers (robust)","total.jarqueBera":"Jarque–Bera","total.passRate":"Pass rate","total.failureCount":"Failures","stats.column":"Column","stats.choose":"Choose a column to profile","stats.noColumns":"No numeric columns to profile","stats.noValues":"Nothing numeric in this column","stats.count":"Count","stats.present":"Present","stats.missing":"Missing","stats.distinct":"Distinct","stats.min":"Minimum","stats.max":"Maximum","stats.mean":"Mean","stats.median":"Median","stats.q1":"Lower quartile","stats.q3":"Upper quartile","stats.iqr":"Interquartile range","stats.stddev":"Standard deviation","stats.outliers":"Outliers","stats.distribution":"Distribution","stats.distribution.detail":"Distribution: rows per range","stats.bin":"{count} between {from} and {to}","stats.topValues":"Top values","stats.section.shape":"Shape","stats.section.robust":"Robust","stats.section.concentration":"Concentration","stats.section.capability":"Capability","stats.cp":"Cp","stats.cpk":"Cpk","stats.pp":"Pp","stats.ppk":"Ppk","stats.outOfSpec":"Out of specification","stats.filtered":"Over the {count} filtered rows","stats.unavailable":"Not computed by the source: {stats}.","stats.unavailable.notPlain":"`{column}` is not a plain column the engine can name","stats.unavailable.where":"a `where` predicate is in force ({list}), which only the browser can run","stats.unavailable.filter":"the grid's filter did not fully push to the engine","stats.unavailable.quick":"the quick search did not push to the engine","stats.unavailable.client":'the source did not compute "{fn}" in the engine ({reason}); set the pushdown source\'s `{setting}`',"stats.unavailable.outliers":"the count of values outside Tukey's fences is not an engine aggregate","stats.unavailable.histogram":"the shape of the column is not an engine aggregate","stats.unavailable.topValues":"the source did not answer a grouped count in the engine","regression.noModel":"No model configured. Set predictors and a response on the panel.","regression.cannotFit":"The model cannot be fitted over the current rows.","regression.observations":"Fitted over {count} rows","regression.r2":"R²","regression.adjR2":"Adjusted R²","regression.coefficients":"Coefficients","regression.term":"Term","regression.estimate":"Estimate ± SE","regression.stdError":"Std error","regression.t":"t","regression.p":"p","regression.vif":"Variance inflation (VIF)","regression.heteroscedasticity":"Heteroscedasticity (Breusch–Pagan)","regression.heteroscedastic":"Heteroscedastic: BP {statistic}, p {p}","regression.homoscedastic":"No heteroscedasticity detected: BP {statistic}, p {p}","menu.sortAscending":"Sort ascending","menu.sortDescending":"Sort descending","menu.clearSort":"Clear sort","menu.groupBy":"Group by this column","menu.ungroup":"Stop grouping by this column","menu.hideColumn":"Hide column","menu.pinStart":"Pin to start","menu.pinEnd":"Pin to end","menu.unpin":"Unpin","menu.autosize":"Fit to content","ai.valuesNotAmongOptions":'{values} {shown} not among the options for "{column}"',"menu.clearCells":{one:"Clear cell",other:"Clear {count} cells"},"menu.fillDown":"Fill down","menu.copy":"Copy","menu.copyWithHeaders":"Copy with headers","menu.paste":"Paste","menu.filterEllipsis":"Filter…","menu.columnStatistics":"Column statistics","menu.pinColumn":"Pin column","menu.sizeToFit":"Size to fit content","menu.sizeAllToFit":"Size all columns to fit","menu.width":"Width","menu.narrower":"Narrower","menu.wider":"Wider","menu.moveColumn":"Move column","menu.moveLeft":"Move left","menu.moveRight":"Move right","menu.moveToStart":"Move to start","menu.moveToEnd":"Move to end","menu.unpivot":"Remove from pivot","menu.pivotBy":"Pivot by this column","menu.stopTotalling":"Stop totalling","menu.totalColumn":"Total this column","menu.aggregate":"Aggregate","menu.aggregateNone":"None","menu.aggregateGroup":"Group subtotals","menu.aggregateGrand":"Grand total","menu.aggregateSame":"Same as total","menu.redactColumn":"Redact column","menu.stopRedacting":"Stop redacting","menu.stopRedactingAll":"Stop redacting everything","menu.sortGroupsAscending":"Sort groups ascending","menu.sortGroupsDescending":"Sort groups descending","menu.filterGroups":"Filter groups…","menu.expandAll":"Expand all","menu.collapseAll":"Collapse all","menu.clearGrouping":"Clear grouping","menu.colour":"Colour","menu.importCsv":"Import rows from CSV…","import.title":"Import rows","import.clipboard":"the clipboard","import.summary":{one:"{count} row from {name}",other:"{count} rows from {name}"},"import.opened":{one:"Import preview open, {count} row",other:"Import preview open, {count} rows"},"import.done":{one:"{count} row imported",other:"{count} rows imported"},"import.confirm":"Import","import.cancel":"Cancel","import.colSource":"Column","import.colField":"Maps to","import.colType":"Type","import.skip":"— skip —","import.mapLabel":'Map "{source}" to a field',"import.modeLabel":"On import","import.append":"Add to existing rows","import.replace":"Replace all rows","menu.deleteRow":{one:"Delete row",other:"Delete {count} rows"},"toolbar.undo":"Undo","toolbar.redo":"Redo","toolbar.undoLabelled":"Undo {label}","toolbar.redoLabelled":"Redo {label}","toolbar.exportCsv":"Export to CSV","toolbar.exportExcel":"Export to Excel","toolbar.clipboard":"Copy visible rows to the clipboard","toolbar.print":"Print","toolbar.pause":"Hold incoming updates","toolbar.resume":"Resume updates","toolbar.applyHeld":{one:"Apply {count} held update",other:"Apply {count} held updates"},"toolbar.restoreView":"Restore the default view","toolbar.maximiseGrid":"Maximise the grid to fill the window","toolbar.restoreSize":"Restore the grid to the page (Esc)","toolbar.annotate.pen":"Draw freehand","toolbar.annotate.arrow":"Draw an arrow","toolbar.annotate.rect":"Draw a rectangle","toolbar.annotate.highlight":"Highlight","toolbar.annotate.erase":"Erase","toolbar.annotate.clearAll":"Clear all annotations","toolbar.annotate.clearAllConfirm":"Clear","toolbar.annotate.clearAllKeep":"Keep","overlay.noRows":"No rows to show","overlay.noResults":"No rows match the current filters","overlay.loading":"Loading…","overlay.error":"Something went wrong","overlay.loadingRows":"Loading rows {from} to {to}","overlay.rowError":"Failed to load","comments.panel":"Cell comments","comments.close":"Close comments","comments.write":"Write a comment","comments.post":"Comment","comments.delete":"Delete","comments.valueMoved":"Written when the value was {was}: it is now {now}.","comments.resolve":"Resolve","comments.reopen":"Reopen","comments.loading":"Loading…","comments.empty":"No comments yet.","comments.unknownAuthor":"Unknown","comments.edited":"{time} (edited)","comments.cellTitle":"{column}: {row}","presence.hidden":{one:"{count} not in view",other:"{count} not in view"},"presence.someoneElse":"someone else","a11y.presence.refused":"This cell is being edited by {name}","presence.peer":"{name}: jump to their cursor","presence.peerIdle":"{name}, idle: jump to their cursor","presence.peerHidden":"{name}, not in the current view","facets.filter":"{column} distribution filter","header.totalOf":"{total} of {column}","diff.before":"Was: {value}","diff.empty":"(empty)","kanban.columnCards":{one:"{title}, {count} card",other:"{title}, {count} cards"},"kanban.laneCards":{one:"{lane}, {title}, {count} card",other:"{lane}, {title}, {count} cards"},"gantt.lag":"+{days}d","gantt.lead":"{days}d","gantt.a11y.moved":"{name} moved to {date}","gantt.a11y.day":"day {day}","gantt.a11y.resized":"{name} resized to {days} days","gantt.a11y.linkFrom":"Linking from {name}. Focus the successor and press L.","gantt.a11y.linked":"Linked {from} to {to}, finish to start.","gantt.a11y.linkCancelled":"Link cancelled.","gantt.a11y.deleted":"{name} deleted.","gantt.row.moveHandle":"Drag to reorder or re-parent {name}","gantt.a11y.rowMoved":"{name} moved.","gantt.a11y.rowReparented":"{name} moved under {parent}.","gantt.a11y.rowPromoted":"{name} moved to the top level.","gantt.a11y.rowMoveCancelled":"Move cancelled.","gantt.a11y.linkCycle":"Linking {from} to {to} would create a cycle; link not created.","gantt.a11y.linkCreated":"{from} linked to {to}, {type}.","gantt.a11y.linkDeleted":"Link from {from} to {to} deleted.","gantt.a11y.linkLabel":"Link, {from} to {to}, {type}","gantt.linkEditor.title":"Edit link from {from} to {to}","gantt.linkEditor.type":"Link type","gantt.linkEditor.lag":"Lag, in days","gantt.linkEditor.apply":"Apply","gantt.linkEditor.delete":"Delete link","gantt.linkEditor.cancel":"Cancel","gantt.a11y.undone":"Undone.","gantt.a11y.redone":"Redone.","gantt.a11y.nothingToUndo":"Nothing to undo.","gantt.a11y.nothingToRedo":"Nothing to redo.","gantt.workload.title":"Resource workload","gantt.workload.resource":"Resource","gantt.workload.total":"Total","gantt.workload.unassigned":"Unassigned","gantt.workload.cell":"{hours} h from {date}","gantt.workload.over":"{hours} h from {date}, over a capacity of {capacity} h","gantt.workload.expand":"Show {name}’s tasks","gantt.workload.collapse":"Hide {name}’s tasks","gantt.workload.unitToggle":"Hours / % / Cost","gantt.workload.unitHours":"Showing hours","gantt.workload.unitPercent":"Showing percent of capacity","gantt.workload.unitCost":"Showing cost","gantt.workload.cellPercent":"{percent}% from {date}","gantt.workload.overPercent":"{percent}% from {date}, over capacity","gantt.workload.cellNoCapacity":"No available hours from {date}","gantt.workload.cellCost":"{cost} from {date}","gantt.workload.otherProjectLabel":"{name} (other project)","gantt.workload.external":"External booking","gantt.a11y.hoursSet":"{name}: {hours} h from {date}","gantt.a11y.hoursCleared":"{name}: no hours from {date}","gantt.a11y.hoursRefused":"{date} is not a working day; {name} was not changed.","gantt.histogram.title":"Resource histogram","gantt.histogram.tableTitle":"Resource histogram data","gantt.histogram.resource":"Resource","gantt.histogram.period":"Period","gantt.histogram.hours":"Hours","gantt.histogram.percent":"Percent of capacity","gantt.histogram.cost":"Cost","gantt.histogram.capacity":"Capacity","gantt.histogram.overAllocated":"Over-allocated","gantt.histogram.yes":"Yes","gantt.histogram.no":"No","gantt.histogram.tip":"{name}, {from} to {to}: {value}{capacity}{tasks}","gantt.histogram.tipHours":"{hours} h","gantt.histogram.tipPercent":"{percent}% of capacity","gantt.histogram.tipCost":"{cost}","gantt.histogram.tipCapacity":", capacity {hours} h","gantt.histogram.tipTasks":" ({tasks})","gantt.histogram.tipOver":", over capacity","gantt.histogram.tipNoCapacity":"no available hours","gantt.picker.title":"Assign resources to {name}","gantt.picker.open":"Edit assignments for {name}","gantt.picker.search":"Search resources","gantt.picker.list":"Resources","gantt.picker.selected":"Assigned resources","gantt.picker.load":"{load}% booked of {capacity}% over these dates","gantt.picker.none":"No matching resources","gantt.picker.units":"{name}, units in percent","gantt.picker.remove":"Remove {name}","gantt.picker.apply":"Apply","gantt.picker.cancel":"Cancel","gantt.picker.warn":"{name} would be over-allocated: {load}% booked of {capacity}%","gantt.picker.ok":"No resource would be over-allocated","gantt.picker.assign":"Assign","gantt.col.effort":"Effort","gantt.col.units":"Units","gantt.unscheduled":"Unscheduled","gantt.col.unscheduled":"Unscheduled","gantt.col.slack":"Slack","gantt.col.deadline":"Deadline","gantt.row.ancestor":"Shown because a task inside it matches the filter","gantt.progress.handle":"Drag to set the progress of {name}","gantt.a11y.progress":"{name} {percent}% complete","gantt.col.name":"Task name","gantt.col.start":"Start","gantt.col.end":"Finish","gantt.col.duration":"Duration","gantt.col.assignee":"Assignee","gantt.col.progress":"%","gantt.zoom.label":"Zoom","gantt.zoom.day":"Day","gantt.zoom.week":"Week","gantt.zoom.month":"Month","gantt.zoom.quarter":"Quarter","gantt.zoom.fit":"Fit to plan","gantt.tip.range":"{from} to {to}","gantt.tip.duration":"{days}d","gantt.tip.slack":"slack {days}d","gantt.tip.effort":"{hours}h","gantt.tip.row":"{label}: {value}","gantt.tip.start":"Start","gantt.tip.end":"End","gantt.tip.date":"Date","gantt.tip.durationLabel":"Duration","gantt.tip.durationValue":"{days} days","gantt.tip.complete":"Complete","gantt.tip.effortLabel":"Effort","gantt.tip.effortValue":"{hours} h","gantt.tip.assigned":"Assigned","gantt.tip.cost":"Cost","gantt.tip.slackLabel":"Slack","gantt.tip.slackValue":"{days} days","gantt.tip.deadline":"Deadline","gantt.mode.fixedDuration":"Fixed duration","gantt.mode.fixedEffort":"Fixed effort","gantt.mode.fixedUnits":"Fixed units","gantt.scurve.spi":"SPI {index}","gantt.scurve.cpi":"CPI {index}","gantt.print.page":"Page {page} of {pages}","gantt.print.printed":"Printed {date}","gantt.issues.title":"Scheduling conflicts","gantt.issues.empty":"No scheduling conflicts","gantt.issues.count":"{count} scheduling conflicts","gantt.issues.toggle":"Toggle the conflicts panel","gantt.issues.cycle":"Circular dependency: {tasks}","gantt.issues.constraint":"{task} cannot meet its {constraint} constraint of {date}","gantt.issues.lock":"{task} is locked but a dependency would move it","gantt.issues.deadline":"{task} finishes after its deadline of {date}","gantt.issues.fixRemoveLink":"Remove link","gantt.issues.fixAsap":"Set as soon as possible","gantt.issues.fixUnlock":"Unlock task","gantt.issues.fixClearDeadline":"Clear deadline","timeline.scrub":"Scrub through recent changes","timeline.goLive":"Go live","timeline.returnToPresent":"Return to the present","a11y.fillHandle":"Drag to fill","panel.icons":"Icons","value.tooLong":"Too long","shortcuts.title":"Keyboard shortcuts","shortcuts.close":"Close keyboard shortcuts","shortcuts.hint":"Press Escape to close.","shortcuts.or":"or","a11y.reorder.moved":"Moved to position {position} of {total}","a11y.reorder.sorted":"Rows cannot be reordered while the grid is sorted","a11y.reorder.filtered":"Rows cannot be reordered while a filter is applied","a11y.reorder.grouped":"Rows cannot be reordered while the grid is grouped","a11y.reorder.grab":"Reorder row","a11y.reorder.sortedManual":"Rows cannot be reordered while the grid is sorted. Press Alt+Shift+M, or the Manual order button in the heading, to order them by hand","a11y.reorder.groupDerived":"The row cannot join that group: the group is worked out from the value, so there is no single value to give it","a11y.reorder.groupReadOnly":"The row cannot join that group: its grouping value cannot be edited","a11y.reorder.invalid":"The row cannot join that group: the new value was not valid","a11y.reorder.vetoed":"The move was declined; the row stays where it was","a11y.reorder.vetoedBecause":"The move was declined ({reason}); the row stays where it was","a11y.reorder.refused":"The row cannot be moved there","a11y.reorder.regrouped":"Moved into {group}","a11y.rowOrder.entered":"Manual order: the rows keep their places and can be moved by hand","a11y.rowOrder.exited":"Manual order ended; the rows follow the sort","rowOrder.button":"Manual order","rowOrder.enter":"Order the rows by hand instead of by the sort","rowOrder.exit":"Return to the sorted order","a11y.transfer.moved":"Row moved to the other grid","a11y.transfer.copied":"Row copied to the other grid","a11y.transfer.refused":"That grid does not accept this row","a11y.transfer.declined":"The drop was declined; the row stays where it was","a11y.transfer.stale":"The drop target changed while it was being confirmed; the row stays where it was","shortcuts.group.grid":"In the data","shortcuts.group.header":"On a column heading","shortcuts.group.panel":"In the column list","shortcut.moveCell":"Move the focused cell","shortcut.rowEnds":"First / last cell of the row","shortcut.gridEnds":"First cell of the first row / last cell of the last row","shortcut.pageRows":"Move one viewport of rows","shortcut.nextCell":"Leave the grid for the next / previous focusable element (arrows move between cells)","shortcut.undo":"Undo the last edit, paste, fill or clear","shortcut.redo":"Redo the step that was undone","shortcut.startEdit":"Start editing the focused cell","shortcut.toggleRow":"Toggle selection of the focused row","shortcut.cancel":"Cancel the current edit or drag","shortcut.expandCollapse":"Expand / collapse a group or tree row","shortcut.focusHeader":"Move focus to the column header","shortcut.focusPanel":"Move focus to the tool panel","shortcut.contextMenu":"Open the context menu for the focused cell","shortcut.moveRow":"Move the focused row, when row reorder is enabled","shortcut.manualOrder":"Order the rows by hand, or return to the sort, when row reorder allows a manual order","shortcut.headingMove":"Move between headings","shortcut.headingEnds":"First / last heading","shortcut.headingSort":"Sort by the column, Shift to add to the sort","shortcut.headingResize":"Resize the column, Ctrl for a coarse step","shortcut.headingAutosize":"Size the column to its content","shortcut.headingReorder":"Move the column","shortcut.headingMenu":"Open the column menu","shortcut.headingExit":"Return focus to the data","shortcut.listGroup":"Group by the column, or stop grouping by it","shortcut.listValues":"Add the column to values, or take it out","shortcut.listPivot":"Pivot by the column, or stop pivoting by it","shortcut.listMove":"Move the column","shortcut.find":"Find in the grid","tags.label":"Show columns","tags.all":"All columns","tags.showing":"Showing {tag}","form.title":"Edit row","form.save":"Save","form.cancel":"Cancel","form.loading":"Loading…","form.loadFailed":"Could not load this record.","form.loadTimeout":"The record did not arrive in time.","form.retry":"Try again","form.choose":"Choose…","form.newTitle":"New row","form.createFailed":"Could not add this record.","presentation.cards":"Showing records as cards","presentation.table":"Showing records as a table","editor.format":"Format","editor.codeHint":"Tab indents · Esc cancels · Ctrl+Enter saves","editor.colours":"Colours","editor.customColour":"Custom colour","editor.hexValue":"Hex value","editor.hexPlaceholder":"#rrggbb","editor.clearColour":"Clear colour","editor.time":"Time","editor.noIcon":"No icon","editor.selectAll":"Select all","editor.passwordHint":"Enter the value twice to save it.","editor.clearRating":"Clear rating","editor.clear":"Clear","editor.value":"Value","editor.currency":"Currency","formatting.format":"Format","formatting.noRules":"No rules yet. The first one that matches a cell wins.","formatting.clearAll":"Clear all","formatting.addRule":"Add rule","formatting.condition":"Condition","formatting.value":"Value","formatting.secondValue":"Second value","formatting.moveEarlier":"Move earlier","formatting.moveLater":"Move later","formatting.ruleKind":"Rule type","formatting.aCondition":"A condition","formatting.aColourScale":"A colour scale","formatting.compare":"Compare a value","formatting.distribution":"By the distribution","formatting.colourScale":"Colour scale","formatting.scaleBounds":"Scale bounds","formatting.preview":"Preview","formatting.livePreview":"Live preview","history.title":"History","history.show":"Show history","history.empty":"Nothing to undo yet.","prompt.ask":"Ask","prompt.apply":"Apply","prompt.discard":"Discard","panel.searchColumns":"Search columns","panel.searchColumnsPlaceholder":"Search columns…","panel.searchColumnsToFilter":"Search columns to filter","panel.showAll":"Show all","panel.hideAll":"Hide all","panel.clearAll":"Clear all","panel.clear":"Clear","panel.filterAllColumns":"Filter all columns","panel.columnFiltered":"This column is filtered","panel.clearFilterOn":"Clear the filter on {column}","panel.clearFilter":"Clear this filter","panel.filterEmptyNoMatch":"No column matches “{query}”.","panel.filterEmptyNone":"No column on this grid can be filtered.","panel.filterSummaryActive":"{active} of {total} columns filtered","panel.filterSummaryNone":"No filters · {total} columns available","panel.filterBy":"Filter by {column}","panel.filteredBy":"Filtered by {column}","panel.columnDragHint":"Drag {column} into a zone above, or onto another column to reorder","panel.gridActions":"Grid actions","views.default":"Default","views.namePlaceholder":"Name this view…","views.nameLabel":"Name for the current layout","views.save":"Save view","licence.watermark":"Unlicensed: Lattice Grid trial","licence.watermark.free":$,"filter.op.contains":"Contains","filter.op.notContains":"Does not contain","filter.op.equals":"Equals","filter.op.notEqual":"Does not equal","filter.op.startsWith":"Starts with","filter.op.endsWith":"Ends with","filter.op.blank":"Is blank","filter.op.notBlank":"Is not blank","filter.op.lessThan":"Less than","filter.op.lessThanOrEqual":"Less than or equal","filter.op.greaterThan":"Greater than","filter.op.greaterThanOrEqual":"Greater than or equal","filter.op.inRange":"In range","filter.op.matches":"Matches","filter.op.before":"Before","filter.op.after":"After","filter.op.relative":"Relative to today","filter.rel.today":"Today","filter.rel.yesterday":"Yesterday","filter.rel.tomorrow":"Tomorrow","filter.rel.lastNDays":"Last N days","filter.rel.nextNDays":"Next N days","filter.rel.thisWeek":"This week","filter.rel.lastWeek":"Last week","filter.rel.thisMonth":"This month","filter.rel.lastMonth":"Last month","filter.rel.thisQuarter":"This quarter","filter.rel.quarterToDate":"Quarter to date","filter.rel.thisYear":"This year","filter.rel.yearToDate":"Year to date","filter.operator":"Operator","filter.join":"Join","filter.value":"Value","filter.from":"From","filter.to":"To","filter.addCondition":"Add condition","filter.noConditions":"No conditions","filter.removeCondition":"Remove condition","filter.search":"Search","filter.searchValues":"Search values","filter.noMatches":"No values match","filter.selectAll":"Select all","filter.clear":"Clear","filter.all":"All","filter.allExcept":"All but {count}","filter.loadingValues":"Loading values…","filter.topValues":"Top {shown} of {total} values","filter.valuesFailed":"Values could not be loaded: {error}","filter.valuesUnsupported":"This source cannot list the values of {column}; filter by condition instead.","filter.true":"True","filter.false":"False","filter.expression":"Filter expression","filter.column":"Column","filter.relativePeriod":"Relative period","filter.days":"Number of days","filter.tab.set":"Values","filter.tab.text":"Text","filter.tab.number":"Number","filter.tab.date":"Date","filter.tab.advanced":"Advanced","filterRow.label":"Filter row","filterRow.conditions":{one:"{count} condition",other:"{count} conditions"},"chart.empty":"Nothing to chart","chart.summary":"{type} chart of {measure} by {dimension}","chart.summaryShare":"{type} chart of {measure}","chart.summaryType":"{type} chart","chart.summaryGauge":"{type} chart of {measure}, {fn}: {value}","chart.waterfallTotal":"Total","chart.summaryEngine":"Figures computed by the data engine over every matching row","chart.summaryEngineViewport":"{count} points in this view, fetched from the data engine","chart.summaryEngineDensity":"{count} rows in this view, more than the {cap} drawn as points, so shown as {cells} density cells counted by the data engine","chart.summaryClientDensity":"{count} rows in this view, more than the {cap} drawn as points, so shown as {cells} density cells computed in the browser","chart.viewportOverCap":"{count} rows in this view, more than the {cap} this map draws; zoom in or narrow the filter","chart.dataTable":"Chart data","chart.viewportFilter.label":"Map view","chart.annotate.rail":"Drawing tools","chart.annotate.select":"Select and move a drawing","chart.annotate.trendLine":"Trend line","chart.annotate.horizontalLine":"Horizontal line","chart.annotate.verticalLine":"Vertical line","chart.annotate.channel":"Parallel channel","chart.annotate.fibonacci":"Fibonacci retracement","chart.annotate.arrow":"Arrow","chart.annotate.pen":"Freehand pen","chart.annotate.pen.described":"Freehand drawing from {from} to {to}","chart.annotate.measure-x":"Date range","chart.annotate.measure-y":"Price range","chart.annotate.measure-xy":"Date and price range","chart.annotate.measure.bars":{one:"{count} bar",other:"{count} bars"},"chart.annotate.measure.points":{one:"{count} point",other:"{count} points"},"chart.annotate.measure.volume":"Vol {value}","chart.annotate.measure.seconds":"{count}s","chart.annotate.measure.minutes":"{count}m","chart.annotate.measure.hours":"{count}h","chart.annotate.measure.days":"{count}d","chart.annotate.measure.weeks":"{count}w","chart.annotate.measure.months":"{count}mo","chart.annotate.measure.years":"{count}y","chart.annotate.measure":"Measure","chart.annotate.measure.dx":"Δx {value}","chart.annotate.measure.dy":"Δy {value}","chart.annotate.measure.pct":"{value}%","chart.annotate.measure.categories":{one:"{count} category",other:"{count} categories"},"chart.annotate.measure.slope.perDay":"Slope {value} per day","chart.annotate.measure.slope.perCategory":"Slope {value} per category","chart.annotate.measure.slope.perUnit":"Slope {value} per unit","chart.annotate.measure.dur.d":"{count} d","chart.annotate.measure.dur.h":"{count} h","chart.annotate.measure.dur.min":"{count} min","chart.annotate.measure.dur.s":"{count} s","chart.annotate.measure.dur.ms":"{count} ms","chart.annotate.measure.announce":"Measurement: {readout}","chart.annotate.measure.start":"Measure start: {x}, {y}","chart.annotate.text":"Text","chart.annotate.callout":"Callout","chart.annotate.note":"Note","chart.annotate.delete":"Delete the selected drawing","chart.annotate.editLabel":"Annotation text","chart.zoom.toolbar":"Zoom controls","chart.zoom.in":"Zoom in","chart.zoom.out":"Zoom out","chart.zoom.left":"Pan left","chart.zoom.right":"Pan right","chart.zoom.reset":"Reset the zoom","chart.legendMore":{one:"+{count} more",other:"+{count} more"},"chart.type.line":"Line","chart.type.area":"Area","chart.type.bar":"Bar","chart.type.pie":"Pie","chart.type.donut":"Donut","chart.type.sunburst":"Sunburst","chart.type.scatter":"Scatter","chart.type.step":"Step","chart.type.rangeArea":"Range","chart.type.horizontalBar":"Horizontal bar","chart.type.waterfall":"Waterfall","chart.type.floatingBar":"Floating bar","chart.type.horizontalFloatingBar":"Horizontal floating bar","chart.type.populationPyramid":"Population pyramid","chart.type.bullet":"Bullet","chart.type.bubble":"Bubble","chart.type.histogram":"Histogram","chart.type.boxplot":"Box plot","chart.type.forest":"Forest plot","chart.type.qq":"QQ plot","chart.type.ecdf":"ECDF","chart.type.lorenz":"Lorenz","chart.type.correlogram":"Correlogram","chart.type.control":"Control","chart.type.capability":"Capability","chart.type.movingRange":"Moving range","chart.type.treemap":"Treemap","chart.type.combo":"Combination","chart.type.pareto":"Pareto","chart.type.heatmap":"Heat map","chart.type.radar":"Radar","chart.type.gauge":"Gauge","chart.type.funnel":"Funnel","chart.type.candlestick":"Candlestick","chart.type.ohlc":"OHLC","chart.type.polarArea":"Polar area","chart.type.nightingale":"Nightingale rose","chart.type.rose":"Rose","chart.type.radialBar":"Radial bar","chart.type.polarScatter":"Polar scatter","chart.type.geomap":"Map","chart.type.sankey":"Sankey","chart.type.chord":"Chord","chart.type.pyramid":"Pyramid","chart.type.pictorial":"Pictorial","chart.type.serpentine":"Serpentine timeline","chart.type.spiral":"Spiral timeline","chart.edit.aggregated":"This value is a total of several rows, so it cannot be dragged.","chart.edit.refused":"That change was not applied.","chart.edit.refusedWhy":"That change was not applied: {reason}","chart.type.network":"Network","chart.type.stream":"Stream","chart.type.marimekko":"Marimekko","chart.type.violin":"Violin","chart.type.gantt":"Gantt","chart.type.forceTree":"Force-directed tree","chart.type.pack":"Packed circles","chart.type.tree":"Tree","chart.type.voronoiTreemap":"Voronoi treemap","chart.type.alluvial":"Alluvial","chart.type.arc":"Arc diagram","chart.type.barRace":"Bar chart race","chart.type.bubblemap":"Bubble map","chart.type.bump":"Bump chart","chart.type.calendar":"Calendar heat map","chart.type.choropleth":"Choropleth map","chart.type.decomposition":"Decomposition tree","chart.type.diverging":"Diverging bar","chart.type.dumbbell":"Dumbbell","chart.type.fan":"Fan chart","chart.type.hexbin":"Hexagonal bin","chart.type.hexmap":"Hex map","chart.type.icicle":"Icicle","chart.type.markermap":"Marker map","chart.type.motion":"Motion chart","chart.type.parallel":"Parallel coordinates","chart.type.ridgeline":"Ridgeline","chart.type.roc":"ROC curve","chart.type.slope":"Slope chart","chart.type.splom":"Scatter plot matrix","chart.type.venn":"Venn diagram","chart.type.waffle":"Waffle","chart.type.wordCloud":"Word cloud","chart.tasksDropped":{one:"{count} more task not shown",other:"{count} more tasks not shown"},"chart.geoUnmatched":{one:"{count} row could not be placed on the map",other:"{count} rows could not be placed on the map"},"chart.r2":"R² {value}","ai.insights":"Insights","ai.explainView":"Explain this view","ai.explain":"Explain","ai.ask":"Ask","ai.apply":"Apply","ai.discard":"Discard","ai.propose":"Propose","ai.approve":"Approve","ai.thinking":"Thinking…","ai.applying":"Applying…","ai.applied":"Applied: {what}","ai.couldNotApply":"Could not apply: {why}","ai.applyFailed":"it failed","ai.discarded":"Discarded.","ai.discardedNothingWritten":"Discarded. Nothing was written.","ai.nothingWritten":"Nothing was written.","ai.nothingWrittenVetoed":"Nothing was written — a before-handler vetoed it.","ai.scope":"Scope: {scope}","ai.unsafeQuery":"I could not turn that into a safe query: {why}","ai.nothingToDo":"nothing to do","ai.insightsFailed":"Could not generate insights right now. The grid is unaffected.","ai.modelUnreachable":"Could not reach the model right now. The grid is unaffected.","ai.flagged":{one:"{count} unverified figure was removed as ungrounded.",other:"{count} unverified figures were removed as ungrounded."},"ai.askPlaceholder":"Ask your data: “EMEA deals over 50k, biggest first”","ai.askLabel":"Ask your data","ai.actorPlaceholder":"Ask AI to change data: “set the Network Upgrade project to In Progress”","ai.actorLabel":"Ask AI to change data","editor.password.show":"Show value","editor.password.hide":"Hide value","editor.password.showField":"Show {column}","editor.password.hideField":"Hide {column}","facets.computing":"Computing…","facets.suppressed.cardinality":"Too many distinct values to chart","facets.suppressed.rows":"Too many rows to chart","facets.suppressed.streaming":"Paused while live data is streaming","facets.suppressed.noProvider":"No distribution available for this data source","facets.suppressed.type":"This column has no chartable distribution","facets.bucketOf":"{count} of {whole} rows","history.undo":"Undo","history.redo":"Redo","history.described":"{action} {label}","history.nothingToUndo":"Nothing to undo","history.nothingToRedo":"Nothing to redo","history.undoDisabled":"Undo (nothing to undo)","history.redoDisabled":"Redo (nothing to redo)","a11y.presence.joined":"{name} joined","a11y.presence.left":"{name} left","prompt.asking":"Asking…","prompt.moreNotes":{one:"and {count} more",other:"and {count} more"},"shortcuts.key.cmd":"Cmd","timeline.live":"Live","timeline.recording":"recording…","panel.zoneHint.group":"Drag a column here to group rows by its values","panel.zoneHint.values":"Drag a column here to total it","panel.zoneHint.pivot":"Drag a column here to pivot across its values","panel.zoneHint.any":"Drag a column here","panel.rowsOf":"{shown} of {total} rows","views.empty":"No saved views yet. Set the grid up as you want it, then save it below.","views.applied":"Applied","views.matchesGrid":"Matches the grid as it is","views.delete":"Delete","views.confirmDelete":"Delete {name}?","views.confirmDeleteLabel":"Confirm deleting {name}","gantt.row.expand":"Expand {name}","gantt.row.collapse":"Collapse {name}","gantt.resource.over":"{name} — over-allocated","kanban.board":"Board","kpi.status.good":"good","kpi.status.warn":"warn","kpi.status.critical":"critical","kpi.status.unknown":"No data","kpi.node.item":"{count} item","kpi.node.items":"{count} items","kpi.node.worst":"worst status {status}","kpi.node.unknown":"{count} unknown"}),D=Object.freeze(Object.keys(B))}),$e("packages/core/src/i18n/format.js",function(e,W){"use strict";Object.defineProperty(e,"formatList",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"formatMessage",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"resolveLocale",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"lookup",{enumerable:!0,get:function(){return S}});const $=W("packages/core/src/internal/util.js").isFunction,B=/\{(\w+)\}/g,D=new Map,K=new Map;function Q(g){const u=g||"";if(D.has(u))return D.get(u);let f=null;try{f=new Intl.PluralRules(g||void 0)}catch{f=null}return D.set(u,f),f}function G(g,u,f="conjunction"){const a=Array.isArray(g)?g.filter(n=>n!=null&&n!==""):[];if(a.length===0)return"";if(a.length===1)return String(a[0]);const r=`${u||""}|${f}`;let t=K.get(r);if(t===void 0){try{t=new Intl.ListFormat(u||void 0,{style:"long",type:f})}catch{t=null}K.set(r,t)}return t?t.format(a.map(String)):a.map(String).join(", ")}function H(g,u){return g==null?"":typeof g=="number"?Number.isFinite(g)?g.toLocaleString(u||void 0,{maximumFractionDigits:20}):"":String(g)}function _(g,u,f){if(typeof g=="string")return g;if(!g||typeof g!="object")return"";const a=u&&typeof u.count=="number"?u.count:null;if(a===null)return g.other??"";const r=Q(f),t=r?r.select(a):a===1?"one":"other";return g[t]??g.other??""}function z(g,u={},f){const a=_(g,u,f);return a?a.replace(B,(r,t)=>Object.prototype.hasOwnProperty.call(u,t)?H(u[t],f):r):""}function v(g,u,f="en-GB"){return typeof g=="string"&&g?g:typeof u=="string"&&u?u:f}function S(g,u){const f=g?g[u]:void 0;return f==null||$(f)?u:f}}),$e("packages/core/src/i18n/index.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_LOCALE",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"Messages",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"defaultMessages",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"createMessages",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"auditCatalogue",{enumerable:!0,get:function(){return a}});const Z=W("packages/core/src/i18n/catalogue.js"),$=Z.EN_GB,B=Z.MESSAGE_KEYS,D=W("packages/core/src/i18n/format.js"),K=D.formatMessage,Q=D.formatList,G=D.lookup,H=D.resolveLocale,_=W("packages/core/src/internal/util.js"),z=_.isFunction,v=_.warnOnce;Object.defineProperty(e,"EN_GB",{enumerable:!0,get:function(){return Z.EN_GB}}),Object.defineProperty(e,"MESSAGE_KEYS",{enumerable:!0,get:function(){return Z.MESSAGE_KEYS}}),Object.defineProperty(e,"formatList",{enumerable:!0,get:function(){return D.formatList}}),Object.defineProperty(e,"resolveLocale",{enumerable:!0,get:function(){return D.resolveLocale}});const S="en-GB";class g{#e=S;#t=$;constructor(t={}){this.configure(t)}configure(t={}){this.#e=H(t.locale,t.declared,S);const n=t.messages;if(!n||typeof n!="object"){this.#t=$;return}const o=Object.keys(n).filter(l=>!(l in $));o.length&&v(`i18n:unknown:${o[0]}`,`message keys not in the catalogue and so ignored: ${o.slice(0,5).join(", ")}${o.length>5?`, and ${o.length-5} more`:""}`),this.#t={...$,...n}}get locale(){return this.#e}t(t,n){return K(G(this.#t,t),n||{},this.#e)}list(t,n){return Q(t,this.#e,n)}number(t,n){const o=Number(t);return Number.isFinite(o)?o.toLocaleString(this.#e,n||{maximumFractionDigits:20}):""}}const u=new g;function f(r){return r instanceof g?r:new g(r||{})}function a(r){const t=r&&typeof r=="object"?r:{},n=B.filter(l=>{const c=t[l];return c==null||c===""||z(c)}),o=Object.keys(t).filter(l=>!(l in $));return{missing:n,unknown:o}}}),$e("packages/core/src/columns/types/structured.js",function(e,W){"use strict";Object.defineProperty(e,"MASK_DEFAULTS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"maskValue",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"summariseJson",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"canonicalJson",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"parseJsonText",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"STRUCTURED_TYPES",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return a}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.isObject,K=W("packages/core/src/i18n/index.js").defaultMessages,Q=Object.freeze({char:"•",length:8,fixedLength:!0,lastVisible:0,emptyDisplay:""});function G(r,t){const n=t||{},o=n.emptyDisplay??Q.emptyDisplay;if($(r)||r==="")return o;const c=[...typeof n.char=="string"&&n.char!==""?n.char:Q.char][0]||Q.char,i=n.fixedLength??Q.fixedLength,m=Number.isFinite(n.length)&&Number(n.length)>0?Math.floor(Number(n.length)):Q.length,d=typeof r=="string"?r:typeof r=="number"||typeof r=="boolean"||typeof r=="bigint"?String(r):null;let h=0;if(d!==null){const s=Number.isFinite(n.lastVisible)?Math.floor(Number(n.lastVisible)):Q.lastVisible,p=[...d];if(h=s>0&&s<p.length?s:0,h>0){const w=p.slice(p.length-h).join(""),A=Math.max(1,(i?m:p.length)-h);return c.repeat(A)+w}return c.repeat(i?m:Math.max(1,p.length))}return c.repeat(m)}const H=48;function _(r){try{const t=JSON.stringify(r);return t===void 0?null:t}catch{return null}}function z(r,t){if($(r))return"";const n=Number.isFinite(t&&t.inlineLimit)?Number(t.inlineLimit):H;if(typeof r=="string")return r.length>n?`${r.slice(0,n-1)}…`:r;if(typeof r!="object")return String(r);const o=_(r);if(o!==null&&o.length<=n)return o;if(Array.isArray(r)){const c=r.length;return`[${K.t("count.items",{count:c})}]`}const l=Object.keys(r).length;return`{${K.t("count.keys",{count:l})}}`}function v(r,t){if(r==null)return"null";const n=typeof r;if(n==="number"||n==="boolean"||n==="bigint")return String(r);if(n==="string")return JSON.stringify(r);if(n!=="object")return JSON.stringify(String(r));const o=t||new WeakSet;return o.has(r)?'"[circular]"':(o.add(r),r instanceof Date?JSON.stringify(r.toISOString()):Array.isArray(r)?`[${r.map(i=>v(i,o)).join(",")}]`:`{${Object.keys(r).sort().map(i=>`${JSON.stringify(i)}:${v(r[i],o)}`).join(",")}}`)}function S(r,t){if($(r))return $(t)?0:1;if($(t))return-1;const n=v(r),o=v(t);return n<o?-1:n>o?1:0}function g(r){if($(r))return null;const t=String(r);if(t.trim()==="")return null;try{return JSON.parse(t)}catch{return t}}function u(r){const t=r&&r.cell&&r.cell.props;return B(t)?t:{}}const f=Object.freeze({json:{base:"object",storage:"object",format:r=>z(r&&r.value,u(r&&r.column)),parse:r=>g(r&&r.text),compare:S,defaults:{editor:"code",filter:"text",align:"start"},excel:"@",toClipboard:r=>{if($(r))return"";if(typeof r=="string")return r;try{const t=JSON.stringify(r,null,2);return t===void 0?String(r):t}catch{return String(r)}},fromClipboard:r=>g(r)},secret:{base:"text",storage:"object",format:r=>G(r&&r.value,u(r&&r.column)),parse:r=>{const t=r&&r.text;return $(t)||String(t)===""?null:String(t)},compare:(r,t)=>{const n=$(r)||r==="",o=$(t)||t==="";return n===o?0:n?1:-1},defaults:{editor:"password",filter:"none",align:"start"},excel:"@",export:{csv:!1,excel:!1},toClipboard:r=>G(r),fromClipboard:r=>$(r)||String(r)===""?null:String(r)}}),a=f}),$e("packages/core/src/columns/types/unit.js",function(e,W){"use strict";Object.defineProperty(e,"defineUnit",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"registerUnitSystem",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"unitSystemNames",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"unitsOf",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"findUnit",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"localeSeparators",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"parseUnit",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"formatUnit",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"createUnitType",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return R}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.warnOnce;function D(k,y,T,V){return Object.freeze({symbol:k,factor:y,aliases:Object.freeze(T||[]),binary:!!(V&&V.binary),prefix:V&&V.prefix||null,auto:!(V&&V.auto===!1)})}function K(k,y,T,V){return D(k,y,T,V)}const Q=Object.freeze({data:Object.freeze([D("B",1,["byte","bytes"]),D("kB",1e3,["kilobyte","kilobytes"],{prefix:"k"}),D("KiB",1024,["kibibyte","kibibytes"],{binary:!0,prefix:"k"}),D("MB",1e6,["megabyte","megabytes"],{prefix:"m"}),D("MiB",1024**2,["mebibyte","mebibytes"],{binary:!0,prefix:"m"}),D("GB",1e9,["gigabyte","gigabytes"],{prefix:"g"}),D("GiB",1024**3,["gibibyte","gibibytes"],{binary:!0,prefix:"g"}),D("TB",1e12,["terabyte","terabytes"],{prefix:"t"}),D("TiB",1024**4,["tebibyte","tebibytes"],{binary:!0,prefix:"t"}),D("PB",1e15,["petabyte","petabytes"],{prefix:"p"})]),bitrate:Object.freeze([D("bps",1,["bit","bits","bit/s","b/s"]),D("kbps",1e3,["kbit","kbits","kbit/s","kb/s","kilobit","kilobits"],{prefix:"k"}),D("Mbps",1e6,["mbit","mbits","mbit/s","mb/s","megabit","megabits"],{prefix:"m"}),D("Gbps",1e9,["gbit","gbits","gbit/s","gb/s","gigabit","gigabits"],{prefix:"g"}),D("Tbps",1e12,["tbit","tbits","tbit/s","tb/s","terabit","terabits"],{prefix:"t"})]),length:Object.freeze([D("nm",1e-9,["nanometre","nanometres","nanometer","nanometers"]),D("µm",1e-6,["um","micrometre","micrometres","micrometer","micrometers","micron","microns"]),D("mm",.001,["millimetre","millimetres","millimeter","millimeters"]),D("cm",.01,["centimetre","centimetres","centimeter","centimeters"]),D("in",.0254,["inch","inches"],{auto:!1}),D("ft",.3048,["foot","feet"],{auto:!1}),D("yd",.9144,["yard","yards"],{auto:!1}),D("m",1,["metre","metres","meter","meters"]),D("km",1e3,["kilometre","kilometres","kilometer","kilometers"]),D("mi",1609.344,["mile","miles"],{auto:!1}),D("nmi",1852,["nauticalmile","nauticalmiles"],{auto:!1})]),mass:Object.freeze([D("mg",.001,["milligram","milligrams"]),D("g",1,["gram","grams"]),D("oz",28.349523125,["ounce","ounces"],{auto:!1}),D("lb",453.59237,["pound","pounds","lbs"],{auto:!1}),D("kg",1e3,["kilogram","kilograms"]),D("st",6350.29318,["stone"],{auto:!1}),D("t",1e6,["tonne","tonnes","ton"],{auto:!1}),D("ton (US)",907184.74,["ton","shortton"],{auto:!1}),D("ton (UK)",10160469088e-4,["ton","longton"],{auto:!1})]),duration:Object.freeze([D("ns",1e-9,["nsec","nsecs","nanosecond","nanoseconds"]),D("µs",1e-6,["us","usec","usecs","microsecond","microseconds"]),D("ms",.001,["msec","msecs","millisecond","milliseconds"]),D("s",1,["sec","secs","second","seconds"]),D("m",60,["min","mins","minute","minutes"]),D("h",3600,["hr","hrs","hour","hours"]),D("d",86400,["day","days"])]),speed:Object.freeze([D("mm/s",.001,["millimetre/s","millimeter/s"]),D("ft/s",.3048,["fps","foot/s","feet/s"],{auto:!1}),D("km/h",1/3.6,["kph","kmh","kilometre/h","kilometer/h"],{auto:!1}),D("mph",.44704,["mile/h","miles/h"],{auto:!1}),D("kn",1852/3600,["knot","knots"],{auto:!1}),D("m/s",1,["metre/s","meter/s","mps"]),D("km/s",1e3,["kilometre/s","kilometer/s"])]),acceleration:Object.freeze([D("mm/s²",.001,["mm/s2"]),D("ft/s²",.3048,["ft/s2"],{auto:!1}),D("m/s²",1,["m/s2","metre/s2","meter/s2"]),D("g",9.80665,["gee","gravity"],{auto:!1})]),area:Object.freeze([D("mm²",1e-6,["mm2"]),D("cm²",1e-4,["cm2"]),D("in²",64516e-8,["in2","sqin"],{auto:!1}),D("ft²",.09290304,["ft2","sqft"],{auto:!1}),D("yd²",.83612736,["yd2","sqyd"],{auto:!1}),D("m²",1,["m2","sqm"]),D("ha",1e4,["hectare","hectares"],{auto:!1}),D("ac",4046.8564224,["acre","acres"],{auto:!1}),D("km²",1e6,["km2","sqkm"])]),volume:Object.freeze([D("µL",1e-6,["ul","microlitre","microliter"]),D("mL",.001,["millilitre","milliliter"]),D("fl oz (US)",.0295735295625,["fl oz","usfloz"],{auto:!1}),D("fl oz (imp)",.0284130625,["fl oz","impfloz"],{auto:!1}),D("L",1,["litre","litres","liter","liters"]),D("gal (US)",3.785411784,["gal","usgal","usgallon"],{auto:!1}),D("gal (imp)",4.54609,["gal","impgal","impgallon"],{auto:!1}),D("m³",1e3,["m3","cubicmetre","cubicmeter","kl"],{auto:!1}),D("bbl",158.987294928,["barrel","barrels"],{auto:!1})]),energy:Object.freeze([D("eV",1602176634e-28,["electronvolt","electronvolts"],{auto:!1}),D("J",1,["joule","joules"]),D("cal",4.184,["calorie","calories"],{auto:!1}),D("kJ",1e3,["kilojoule","kilojoules"]),D("BTU",1055.05585262,["btu"],{auto:!1}),D("kcal",4184,["kilocalorie","kilocalories","Cal"],{auto:!1}),D("MJ",1e6,["megajoule","megajoules"]),D("kWh",36e5,["kilowatthour","kilowatthours"],{auto:!1}),D("GJ",1e9,["gigajoule","gigajoules"]),D("MWh",36e8,["megawatthour","megawatthours"],{auto:!1})]),power:Object.freeze([D("mW",.001,["milliwatt","milliwatts"]),D("W",1,["watt","watts"]),D("BTU/h",1055.05585262/3600,["btuh","btu/h"],{auto:!1}),D("kW",1e3,["kilowatt","kilowatts"]),D("hp",745.6998715822702,["horsepower"],{auto:!1}),D("MW",1e6,["megawatt","megawatts"]),D("GW",1e9,["gigawatt","gigawatts"])]),force:Object.freeze([D("mN",.001,["millinewton","millinewtons"]),D("N",1,["newton","newtons"]),D("lbf",4.4482216152605,["poundforce"],{auto:!1}),D("kgf",9.80665,["kilogramforce"],{auto:!1}),D("kN",1e3,["kilonewton","kilonewtons"]),D("MN",1e6,["meganewton","meganewtons"])]),pressure:Object.freeze([D("Pa",1,["pascal","pascals"]),D("mbar",100,["millibar"],{auto:!1}),D("inH₂O",249.0889,["inh2o"],{auto:!1}),D("mmHg",133.322387415,["torr"],{auto:!1}),D("kPa",1e3,["kilopascal","kilopascals"]),D("inHg",3386.388640341,["inhg"],{auto:!1}),D("psi",6894.757293168361,["lbf/in2"],{auto:!1}),D("bar",1e5,[],{auto:!1}),D("atm",101325,["atmosphere","atmospheres"],{auto:!1}),D("MPa",1e6,["megapascal","megapascals"]),D("GPa",1e9,["gigapascal","gigapascals"])]),torque:Object.freeze([D("N·m",1,["nm","n.m","newtonmetre","newtonmeter"]),D("lbf·ft",1.3558179483314003,["lbfft","lbf.ft","ftlb","ft-lb"],{auto:!1}),D("kN·m",1e3,["knm","kn.m"],{auto:!1}),D("MN·m",1e6,["mnm","mn.m"],{auto:!1})]),density:Object.freeze([D("kg/m³",1,["kg/m3"]),D("lb/ft³",16.01846337396014,["lb/ft3","pcf"],{auto:!1}),D("g/cm³",1e3,["g/cm3","g/ml","kg/l"],{auto:!1}),D("t/m³",1e3,["t/m3"],{auto:!1})]),flow:Object.freeze([D("L/min",1/6e4,["lpm","l/min"],{auto:!1}),D("m³/h",1/3600,["m3/h","cmh"],{auto:!1}),D("gpm (US)",.003785411784/60,["gpm","usgpm"],{auto:!1}),D("gpm (imp)",.00454609/60,["gpm","impgpm"],{auto:!1}),D("cfm",.0004719474432,["ft3/min"],{auto:!1}),D("L/s",.001,["lps","l/s"],{auto:!1}),D("m³/s",1,["m3/s","cms"])]),angle:Object.freeze([D("″",Math.PI/648e3,["arcsec","arcsecond","arcseconds"],{auto:!1}),D("′",Math.PI/10800,["arcmin","arcminute","arcminutes"],{auto:!1}),D("mrad",.001,["milliradian","milliradians"],{auto:!1}),D("mil",Math.PI/3200,["nato-mil"],{auto:!1}),D("°",Math.PI/180,["deg","degree","degrees"],{auto:!1}),D("gon",Math.PI/200,["grad","gradian","gradians"],{auto:!1}),D("rad",1,["radian","radians"]),D("turn",2*Math.PI,["rev","revolution","revolutions"],{auto:!1})]),angularVelocity:Object.freeze([D("°/s",Math.PI/180,["degps","deg/s","degrees/s"],{auto:!1}),D("rad/s",1,["radps","radians/s"]),D("rpm",2*Math.PI/60,["rev/min","r/min","revolutions/min"],{auto:!1}),D("rps",2*Math.PI,["rev/s","r/s","revolutions/s"],{auto:!1})]),fraction:Object.freeze([D("ppt",1e-12,["partspertrillion"],{auto:!1}),D("ppb",1e-9,["partsperbillion"]),D("ppm",1e-6,["partspermillion"]),D("bp",1e-4,["bps-finance","basispoint","basispoints","bips"],{auto:!1}),D("‰",.001,["permille","permil"],{auto:!1}),D("%",.01,["pct","percent"]),D("×",1,["x","ratio","times"])]),molarity:Object.freeze([D("pM",1e-12,["picomolar","picomolarity"]),D("nM",1e-9,["nanomolar","nanomolarity"]),D("µM",1e-6,["um-molar","micromolar","micromolarity"]),D("mM",.001,["millimolar","millimolarity"]),D("M",1,["molar","mol/l","mol/L","molarity"]),D("mol/m³",.001,["mol/m3"],{auto:!1})]),massFlow:Object.freeze([D("mg/s",1e-6,["milligrams/s"]),D("g/s",.001,["grams/s"]),D("kg/h",1/3600,["kilograms/h","kgph"],{auto:!1}),D("kg/s",1,["kilograms/s","kgps"]),D("t/h",1e3/3600,["tonnes/h","tph"],{auto:!1}),D("lb/h",.45359237/3600,["pounds/h","pph"],{auto:!1}),D("t/s",1e3,["tonnes/s"],{auto:!1})]),viscosity:Object.freeze([D("µPa·s",1e-6,["upas","micropascalsecond"]),D("cP",.001,["centipoise"],{auto:!1}),D("mPa·s",.001,["mpas","millipascalsecond"]),D("P",.1,["poise"],{auto:!1}),D("Pa·s",1,["pas","pascalsecond"])]),kinematicViscosity:Object.freeze([D("cSt",1e-6,["centistokes","centistoke"]),D("mm²/s",1e-6,["mm2/s"],{auto:!1}),D("St",1e-4,["stokes","stoke"],{auto:!1}),D("m²/s",1,["m2/s"])]),thermalConductivity:Object.freeze([D("mW/(m·K)",.001,["mw/mk"]),D("W/(m·K)",1,["w/mk","wmk"]),D("kW/(m·K)",1e3,["kw/mk"],{auto:!1}),D("BTU/(hr·ft·°F)",1.730734666,["btu/hrftf"],{auto:!1})]),specificHeat:Object.freeze([D("J/(kg·K)",1,["j/kgk","jkgk"]),D("kJ/(kg·K)",1e3,["kj/kgk"]),D("cal/(g·°C)",4184,["cal/gc"],{auto:!1})]),doseRate:Object.freeze([D("nSv/h",1e-9,["nsvh"]),D("µSv/h",1e-6,["usv/h","usvh"]),D("mSv/h",.001,["msvh"]),D("Sv/h",1,["svh"]),D("mSv/a",.001/8766,["msv/year","msvpa"],{auto:!1})])}),G=Symbol("ambiguous"),H=new Map,_=new Map;function z(k,y){const T=String(k||"").trim();if(!T)throw new Error("[lattice] a unit system needs a name");if(Q[T]||_.has(T))throw new Error(`[lattice] unit system "${T}" already exists`);const V=[...y||[]];if(!V.length)throw new Error(`[lattice] unit system "${T}" has no units`);if(!V.some(Y=>Y.factor===1))throw new Error(`[lattice] unit system "${T}" has no base unit (none with factor 1)`);const q=new Set;for(const Y of V){if(q.has(Y.symbol))throw new Error(`[lattice] unit system "${T}" declares "${Y.symbol}" twice`);q.add(Y.symbol)}return _.set(T,Object.freeze(V)),H.delete(T),T}function v(){return[...Object.keys(Q),..._.keys()]}function S(k){const y=g(k);return y?y.units:[]}function g(k){const y=String(k||""),T=H.get(y);if(T!==void 0)return T;const V=Q[y]||_.get(y);if(!V)return H.set(y,null),null;const q=Object.freeze([...V].sort((ie,se)=>ie.factor-se.factor)),Y=new Map,J=new Map,ee=(ie,se)=>{const we=Y.get(ie);we===void 0?Y.set(ie,se):we!==se&&Y.set(ie,G)};for(const ie of q){ee(ie.symbol.toLowerCase(),ie);for(const se of ie.aliases)ee(se.toLowerCase(),ie);if(ie.prefix){const se=J.get(ie.prefix)||[];se.push(ie),J.set(ie.prefix,se)}}const ne={units:q,byToken:Y,byPrefix:J,decimal:q.filter(ie=>!ie.binary&&ie.auto),binary:q.some(ie=>ie.binary)?q.filter(ie=>(ie.binary||ie.factor===1)&&ie.auto):null};return H.set(y,ne),ne}function u(k,y){return y&&k.binary||k.decimal}function f(k,y){const T=g(k);if(!T||$(y))return null;const V=T.units.find(Y=>Y.symbol===String(y));if(V)return V;const q=T.byToken.get(String(y).trim().toLowerCase());return q&&q!==G?q:null}const a=new WeakMap;function r(k){const y=k||{};if(typeof y=="object"&&y!==null){const Y=a.get(y);if(Y!==void 0)return Y}const T=y.system||"data",V=g(T);let q=null;if(!V)B(`unit:system:${T}`,`unknown unit system "${T}"; known systems are ${v().join(", ")}`);else{let Y=y.unit?f(T,y.unit):null;Y||(y.unit&&B(`unit:unit:${T}:${y.unit}`,`unknown unit "${y.unit}" in system "${T}"; falling back to ${V.units[0].symbol}`),Y=V.units.find(J=>J.factor===1)||V.units[0]),q={index:V,base:Y,binary:y.binary===!0}}return typeof y=="object"&&y!==null&&a.set(y,q),q}const t=new WeakMap;function n(k,y){if(!k||!y||!Array.isArray(k.compound)||k.compound.length===0)return null;const T=t.get(k);if(T!==void 0)return T;const V=new Set,q=[];for(const J of k.compound){const ee=f(k.system||"data",J);if(!ee){B(`unit:compound:${k.system}:${J}`,`unknown compound unit "${J}" in system "${k.system||"data"}"; ignoring it`);continue}V.has(ee.symbol)||(V.add(ee.symbol),q.push(ee))}q.sort((J,ee)=>ee.factor-J.factor);const Y=q.length>=2?q:null;return t.set(k,Y),Y}function o(k,y,T){return y===T||y.factor===T.factor?k:k*y.factor/T.factor}const l=new Map;function c(k){const y=k||"",T=l.get(y);if(T)return T;const V={group:",",decimal:"."};try{for(const q of new Intl.NumberFormat(k||void 0).formatToParts(12345.6))q.type==="group"?V.group=q.value:q.type==="decimal"&&(V.decimal=q.value)}catch{}return l.set(y,V),V}const i=/[\s ]/g,m=/^[+-]?[\d '’ .,]*(?:[eE][+-]?\d+)?/,d=/^[^\d+\-(.,\s]+\s*/,h=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/;function s(k,y){const{group:T,decimal:V}=c(y);let q=String(k).replace(i,"");if(q==="")return null;const Y=V?q.indexOf(V):-1;if(T&&T!==V){if(Y>=0&&q.indexOf(T,Y+V.length)>=0)return null;q=q.split(T).join("")}if(V&&V!=="."&&(q=q.split(V).join(".")),!h.test(q))return null;const J=Number(q);return Number.isFinite(J)?J:null}function p(k,y,T){const V=String(k).trim().replace(/\.$/,"");if(V==="")return null;const q=y.units.find(se=>se.symbol===V);if(q)return q;const Y=V.toLowerCase(),J=y.byToken.get(Y);if(J===G)return null;if(J)return J;const ee=y.byPrefix.get(Y);if(!ee||!ee.length)return null;const ne=u(y,T),ie=ee.filter(se=>ne.includes(se));return ie.length===1?ie[0]:null}function w(k,y,T,V){let q=k,Y=0,J=!1,ee=!1;for(;q!=="";){const ne=m.exec(q)[0];if(ne==="")return null;const ie=s(ne,V&&V.locale);if(ie===null)return null;q=q.slice(ne.length).trim();const se=q.search(/[+-]?[\d]/),we=(se>=0?q.slice(0,se):q).trim();if(q=se>=0?q.slice(se).trim():"",we===""){if(J)return null;ee=!0,Y+=o(ie,T[0],y.base)}else{const he=p(we,y.index,y.binary);if(!he)return null;Y+=o(ie,he,y.base)}if(J=!0,ee&&q!=="")return null}return J?Y:null}function A(k,y){if($(k))return null;if(typeof k=="number")return Number.isFinite(k)?k:null;const T=r(y);if(!T)return null;let V=String(k).trim();if(V==="")return null;let q=!1;V.startsWith("(")&&V.endsWith(")")&&(q=!0,V=V.slice(1,-1).trim());const Y=n(y,T);if(Y){V.startsWith("-")&&(q=!0,V=V.slice(1).trim());const te=w(V,T,Y,y);return te===null?null:q?-te:te}let J=null;const ee=d.exec(V);if(ee&&ee[0]){const te=p(ee[0].trim(),T.index,T.binary);te&&(J=te,V=V.slice(ee[0].length).trim())}const ne=m.exec(V)[0],ie=s(ne,y&&y.locale);if(ie===null)return null;const se=V.slice(ne.length).trim();if(J&&se!=="")return null;const we=J||(se===""?T.base:p(se,T.index,T.binary));if(!we)return null;const he=o(ie,we,T.base);return q?-he:he}const P=new Map;function b(k,y,T,V){const q=`${k||""}|${y}|${T}|${V?1:0}`;let Y=P.get(q);return Y||(Y=new Intl.NumberFormat(k||void 0,{minimumFractionDigits:y,maximumFractionDigits:T,useGrouping:V}),P.set(q,Y)),Y}function O(k,y){if(!Number.isFinite(k)||k===0)return Math.max(0,y-1);const T=Math.floor(Math.log10(Math.abs(k)));return Math.min(20,Math.max(0,y-1-T))}function x(k,y){if(!Number.isFinite(k)||k===0)return k;const T=Math.ceil(Math.log10(Math.abs(k))),V=10**(y-T);return Math.round(k*V)/V}function j(k,y,T){if(!T||T===y.base.symbol)return y.base;if(T!=="auto")return F(y,T);if(k===0||!Number.isFinite(k))return y.base;const V=Math.abs(k)*y.base.factor,q=u(y.index,y.binary);let Y=q[0];for(const ne of q)V>=ne.factor&&(Y=ne);if(V>=Y.factor)return Y;let J=Y;for(const ne of y.index.units)ne.binary!==y.binary&&ne.factor!==1||ne.factor<=V&&ne.factor>(J===Y?0:J.factor)&&(J=ne);if(J!==Y)return J;let ee=Y;for(const ne of y.index.units)ne.binary!==y.binary&&ne.factor!==1||ne.factor<ee.factor&&(ee=ne);return ee.factor<y.base.factor?ee:y.base}function F(k,y){const T=k.index.units.find(q=>q.symbol===y);if(T)return T;const V=k.index.byToken.get(String(y).toLowerCase());return V&&V!==G?V:(B(`unit:display:${y}`,`unknown display unit "${y}"; rendering in ${k.base.symbol}`),k.base)}function C(k,y,T,V){const q=k<0;let Y=Math.abs(k)*y.base.factor;const J=typeof V.decimals=="number"?V.decimals:V.minDecimals??0,ee=typeof V.decimals=="number"?V.decimals:V.maxDecimals??Math.max(J,2),ne=V.space??" ",ie=[];for(let we=0;we<T.length;we++){const he=T[we],te=we===T.length-1;let ae=te?Y/he.factor:Math.floor(Y/he.factor);if(Y-=ae*he.factor,te){const be=10**ee;ae=Math.round(ae*be)/be+0}const ge=te?b(V.locale,J,ee,V.group!==!1):b(V.locale,0,0,V.group!==!1);ie.push(`${ge.format(ae)}${ne}${he.symbol}`)}const se=ie.join(" ");return q?`-${se}`:se}function M(k,y){const T=y||{},V=T.nullDisplay??"";if($(k)||k==="")return V;const q=typeof k=="number"?k:Number(k);if(!Number.isFinite(q))return V;const Y=r(T);if(!Y)return String(q);const J=n(T,Y);if(J)return C(q,Y,J,T);const ee=typeof T.significantFigures=="number"&&T.significantFigures>0?T.significantFigures:0,ne=ee?x(q,ee):q,ie=j(ne,Y,T.display),se=o(ne,Y.base,ie);let we=typeof T.decimals=="number"?T.decimals:T.minDecimals??0,he=typeof T.decimals=="number"?T.decimals:T.maxDecimals??Math.max(we,2);ee&&(we=O(se,ee),he=we);const te=b(T.locale,we,he,T.group!==!1).format(se),ae=T.space??" ";return T.placement==="prefix"?`${ie.symbol}${T.space??""}${te}`:`${te}${ae}${ie.symbol}`}function L(k,y){const T=$(k)||Number.isNaN(k)?null:Number(k),V=$(y)||Number.isNaN(y)?null:Number(y);return T===null||Number.isNaN(T)?V===null||Number.isNaN(V)?0:1:V===null||Number.isNaN(V)||T<V?-1:T>V?1:0}function E(k){const y=typeof k.decimals=="number"&&k.decimals>0?`.${"0".repeat(k.decimals)}`:"";return`${typeof k.decimals=="number"?`#,##0${y}`:"#,##0.##"}" ${k.symbol}"`}function I(k){const y={system:"data",...k||{}},T=r(y),V=T?T.base.symbol:String(y.unit||""),q=Object.freeze({...y,unit:V}),Y=Object.freeze({...q,display:V,decimals:void 0,minDecimals:0,maxDecimals:20,group:!1}),J=new Map([[q.locale||"",q]]),ee=ne=>{const ie=ne||"";let se=J.get(ie);return se||(se=Object.freeze({...q,locale:ne||void 0}),J.set(ie,se)),se};return{base:"number",extends:"number",storage:"float64",unitConfig:q,format:ne=>M(ne.value,ne.locale?ee(ne.locale):q),parse:ne=>A(ne.text,ne.locale?ee(ne.locale):q),compare:L,defaults:{filter:"number",editor:"unit",align:"end",total:y.total||"sum"},...y.totals?{totals:y.totals}:{},excel:y.excel||E({decimals:y.decimals,symbol:V}),toStorage:ne=>typeof ne=="number"?Number.isFinite(ne)?ne:null:typeof ne=="string"?A(ne,q):$(ne)?null:A(String(ne),q),toClipboard:ne=>M(ne,Y),fromClipboard:ne=>A(ne,q)}}const R=I}),$e("packages/core/src/columns/types/engineering.js",function(e,W){"use strict";Object.defineProperty(e,"ENGINEERING_TYPES",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"circularMean",{enumerable:!0,get:function(){return K}});const $=W("packages/core/src/internal/util.js").isNil,D=W("packages/core/src/columns/types/unit.js").createUnitType;function K(H){const _=2*Math.PI/H;return z=>{let v=0,S=0,g=0;for(const f of z||[]){if($(f))continue;const a=Number(f);Number.isFinite(a)&&(v+=Math.cos(a*_),S+=Math.sin(a*_),g+=1)}return!g||Math.hypot(v,S)/g<1e-12?null:(Math.atan2(S,v)/_%H+H)%H}}function Q(H){return{supported:["sum","avg","min","max","count","countValues"],implement:{avg:K(H)}}}const G=Object.freeze({metres:D({system:"length",unit:"m",display:"auto",maxDecimals:3}),millimetres:D({system:"length",unit:"mm",maxDecimals:2}),kilometres:D({system:"length",unit:"km",maxDecimals:3}),grams:D({system:"mass",unit:"g",display:"auto",maxDecimals:3}),kilograms:D({system:"mass",unit:"kg",maxDecimals:3}),tonnes:D({system:"mass",unit:"t",maxDecimals:3}),seconds:D({system:"duration",unit:"s",display:"auto",maxDecimals:3}),milliseconds:D({system:"duration",unit:"ms",maxDecimals:3}),hours:D({system:"duration",unit:"h",maxDecimals:2}),speed:D({system:"speed",unit:"m/s",display:"auto",maxDecimals:2}),kph:D({system:"speed",unit:"km/h",maxDecimals:1}),mph:D({system:"speed",unit:"mph",maxDecimals:1}),knots:D({system:"speed",unit:"kn",maxDecimals:1}),acceleration:D({system:"acceleration",unit:"m/s²",maxDecimals:3}),area:D({system:"area",unit:"m²",display:"auto",maxDecimals:2}),hectares:D({system:"area",unit:"ha",maxDecimals:4}),volume:D({system:"volume",unit:"L",display:"auto",maxDecimals:3}),cubicMetres:D({system:"volume",unit:"m³",maxDecimals:3}),energy:D({system:"energy",unit:"J",display:"auto",maxDecimals:3}),kilowattHours:D({system:"energy",unit:"kWh",maxDecimals:2}),power:D({system:"power",unit:"W",display:"auto",maxDecimals:2}),kilowatts:D({system:"power",unit:"kW",maxDecimals:2}),force:D({system:"force",unit:"N",display:"auto",maxDecimals:2}),pressure:D({system:"pressure",unit:"Pa",display:"auto",maxDecimals:2}),bar:D({system:"pressure",unit:"bar",maxDecimals:3}),psi:D({system:"pressure",unit:"psi",maxDecimals:1}),torque:D({system:"torque",unit:"N·m",maxDecimals:2}),density:D({system:"density",unit:"kg/m³",maxDecimals:2}),flow:D({system:"flow",unit:"m³/s",maxDecimals:4}),litresPerMinute:D({system:"flow",unit:"L/min",maxDecimals:1}),radians:D({system:"angle",unit:"rad",maxDecimals:4,totals:Q(2*Math.PI)}),degrees:D({system:"angle",unit:"°",maxDecimals:2,totals:Q(360)}),rpm:D({system:"angularVelocity",unit:"rpm",maxDecimals:0}),angularVelocity:D({system:"angularVelocity",unit:"rad/s",maxDecimals:3}),ppm:D({system:"fraction",unit:"ppm",maxDecimals:2}),ppb:D({system:"fraction",unit:"ppb",maxDecimals:2}),basisPoints:D({system:"fraction",unit:"bp",maxDecimals:1}),molarity:D({system:"molarity",unit:"M",display:"auto",maxDecimals:3}),massFlow:D({system:"massFlow",unit:"kg/s",maxDecimals:3}),tonnesPerHour:D({system:"massFlow",unit:"t/h",maxDecimals:2}),viscosity:D({system:"viscosity",unit:"Pa·s",display:"auto",maxDecimals:3}),kinematicViscosity:D({system:"kinematicViscosity",unit:"cSt",maxDecimals:2}),thermalConductivity:D({system:"thermalConductivity",unit:"W/(m·K)",maxDecimals:3}),specificHeat:D({system:"specificHeat",unit:"J/(kg·K)",maxDecimals:1}),doseRate:D({system:"doseRate",unit:"µSv/h",display:"auto",maxDecimals:2})})}),$e("packages/core/src/columns/types/si.js",function(e,W){"use strict";Object.defineProperty(e,"SI_PREFIXES",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"siUnits",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"createSiSystem",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"createSiType",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"SI_TYPES",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return v}});const Z=W("packages/core/src/columns/types/unit.js"),$=Z.defineUnit,B=Z.registerUnitSystem,D=Z.createUnitType,K=Object.freeze([Object.freeze({symbol:"f",name:"femto",factor:1e-15}),Object.freeze({symbol:"p",name:"pico",factor:1e-12}),Object.freeze({symbol:"n",name:"nano",factor:1e-9}),Object.freeze({symbol:"µ",name:"micro",factor:1e-6}),Object.freeze({symbol:"m",name:"milli",factor:.001}),Object.freeze({symbol:"c",name:"centi",factor:.01}),Object.freeze({symbol:"",name:"",factor:1}),Object.freeze({symbol:"k",name:"kilo",factor:1e3}),Object.freeze({symbol:"M",name:"mega",factor:1e6}),Object.freeze({symbol:"G",name:"giga",factor:1e9}),Object.freeze({symbol:"T",name:"tera",factor:1e12}),Object.freeze({symbol:"P",name:"peta",factor:1e15})]),Q=Object.freeze(["p","n","µ","m","","k","M","G"]);function G(S){const g=String(S.base),u=new Set([...S.prefixes||Q,""]),f=[];for(const a of K){if(!u.has(a.symbol))continue;const r=`${a.symbol}${g}`,t=[];if(S.name){t.push(`${a.name}${S.name}`,`${a.name}${S.name}s`);const n=a.name.slice(-1);if(n&&S.name.startsWith(n)){const o=`${a.name.slice(0,-1)}${S.name}`;t.push(o,`${o}s`)}}a.symbol==="µ"&&t.push(`u${g}`),a.factor===1&&S.aliases&&t.push(...S.aliases),f.push($(r,a.factor,t))}for(const a of S.extra||[])f.push(a);return f}function H(S,g){const u=G(g);return B(S,u)}function _(S,g,u){return H(S,g),D({system:S,unit:g.base,display:"auto",maxDecimals:3,...u||{}})}const z=Object.freeze({voltage:_("voltage",{base:"V",name:"volt"}),current:_("current",{base:"A",name:"amp",aliases:["ampere","amperes"]}),resistance:_("resistance",{base:"Ω",name:"ohm",aliases:["ohm","ohms","R"],prefixes:["m","","k","M","G"]}),capacitance:_("capacitance",{base:"F",name:"farad",prefixes:["f","p","n","µ","m",""]}),inductance:_("inductance",{base:"H",name:"henry",prefixes:["p","n","µ","m",""]}),charge:_("charge",{base:"C",name:"coulomb",prefixes:["p","n","µ","m",""],extra:[$("mAh",3.6,["milliamphour","milliamphours"],{auto:!1}),$("Ah",3600,["amphour","amphours"],{auto:!1})]}),conductance:_("conductance",{base:"S",name:"siemens",prefixes:["n","µ","m","","k"]}),fluxDensity:_("fluxDensity",{base:"T",name:"tesla",prefixes:["n","µ","m",""],extra:[$("G",1e-4,["gauss"],{auto:!1})]}),luminousFlux:_("luminousFlux",{base:"lm",name:"lumen",prefixes:["m","","k"]}),illuminance:_("illuminance",{base:"lx",name:"lux",prefixes:["m","","k"]}),luminousIntensity:_("luminousIntensity",{base:"cd",name:"candela",prefixes:["m","","k"]}),substance:_("substance",{base:"mol",name:"mole",prefixes:["n","µ","m","","k"]}),absorbedDose:_("absorbedDose",{base:"Gy",name:"gray",prefixes:["µ","m",""]}),equivalentDose:_("equivalentDose",{base:"Sv",name:"sievert",prefixes:["n","µ","m",""]}),radioactivity:_("radioactivity",{base:"Bq",name:"becquerel",prefixes:["","k","M","G","T"],extra:[$("Ci",37e9,["curie","curies"],{auto:!1})]}),frequency:_("frequency",{base:"Hz",name:"hertz",prefixes:["m","","k","M","G","T"]})}),v=_}),$e("packages/core/src/columns/types/temperature.js",function(e,W){"use strict";Object.defineProperty(e,"TEMPERATURE_SCALES",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"findScale",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"convertTemperature",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"formatTemperature",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"parseTemperature",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"createTemperatureType",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"TEMPERATURE_TYPES",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return u}});const $=W("packages/core/src/internal/util.js").isNil,B=Object.freeze({C:Object.freeze({symbol:"°C",aliases:["c","°c","celsius","centigrade"],toKelvin:f=>f+273.15,fromKelvin:f=>f-273.15}),F:Object.freeze({symbol:"°F",aliases:["f","°f","fahrenheit"],toKelvin:f=>(f+459.67)*(5/9),fromKelvin:f=>f*(9/5)-459.67}),K:Object.freeze({symbol:"K",aliases:["k","kelvin"],toKelvin:f=>f,fromKelvin:f=>f}),R:Object.freeze({symbol:"°R",aliases:["r","°r","rankine"],toKelvin:f=>f*(5/9),fromKelvin:f=>f*(9/5)})});function D(f){if($(f))return null;const a=String(f).trim();if(a==="")return null;for(const[t,n]of Object.entries(B))if(a===t||a===n.symbol)return{key:t,scale:n};const r=a.toLowerCase();for(const[t,n]of Object.entries(B))if(n.aliases.includes(r))return{key:t,scale:n};return null}function K(f,a,r){const t=D(a),n=D(r);return!t||!n||!Number.isFinite(Number(f))?null:t.key===n.key?Number(f):n.scale.fromKelvin(t.scale.toKelvin(Number(f)))}const Q=new Map;function G(f,a,r){const t=`${f||""}|${a}|${r}`;let n=Q.get(t);return n||(n=new Intl.NumberFormat(f||void 0,{minimumFractionDigits:a,maximumFractionDigits:r}),Q.set(t,n)),n}function H(f,a){const r=a||{},t=r.nullDisplay??"";if($(f)||f==="")return t;const n=Number(f);if(!Number.isFinite(n))return t;const o=D(r.scale||"C");if(!o)return String(n);const l=D(r.display||r.scale||"C")||o,c=l.key===o.key?n:l.scale.fromKelvin(o.scale.toKelvin(n)),i=typeof r.decimals=="number"?r.decimals:null,m=i??r.minDecimals??0,d=i??r.maxDecimals??1;return`${G(r.locale,m,d).format(c)}${r.space??" "}${l.scale.symbol}`}const _=/^[+-]?[\d\s., ]*\d/;function z(f,a){const r=String(f).trim();if(r==="")return null;const t=new Intl.NumberFormat(a||void 0).formatToParts(1.1).find(c=>c.type==="decimal")?.value||".",n=t===","?".":",",o=r.split(n).join("").split(/[\s ]/).join("").replace(t,"."),l=Number(o);return Number.isFinite(l)?l:null}function v(f,a){if($(f))return null;const r=a||{},t=D(r.scale||"C");if(!t)return null;if(typeof f=="number")return Number.isFinite(f)?f:null;let n=String(f).trim();if(n==="")return null;let o=!1;n.startsWith("(")&&n.endsWith(")")&&(o=!0,n=n.slice(1,-1).trim());const l=_.exec(n);if(!l)return null;const c=z(l[0],r.locale);if(c===null)return null;const i=n.slice(l[0].length).trim();if(i==="")return o?-c:c;const m=D(i);if(!m)return null;const d=m.key===t.key?c:t.scale.fromKelvin(m.scale.toKelvin(c));return o?-d:d}function S(f){const a=Object.freeze({scale:"C",...f||{}}),t=(D(a.scale)||D("C")).scale.symbol,n=Object.freeze({...a,display:a.scale,decimals:void 0,minDecimals:0,maxDecimals:20}),o=new Map([[a.locale||"",a]]),l=c=>{const i=c||"";let m=o.get(i);return m||(m=Object.freeze({...a,locale:c||void 0}),o.set(i,m)),m};return{base:"number",extends:"number",storage:"float64",temperatureConfig:a,format:c=>H(c.value,c.locale?l(c.locale):a),parse:c=>v(c.text,c.locale?l(c.locale):a),defaults:{filter:"number",editor:"temperature",align:"end",total:"avg"},totals:{supported:["avg","min","max","count","countValues"]},excel:a.excel||`#,##0${typeof a.decimals=="number"&&a.decimals>0?`.${"0".repeat(a.decimals)}`:".#"}" ${t}"`,toStorage:c=>typeof c=="number"?Number.isFinite(c)?c:null:typeof c=="string"?v(c,a):$(c)?null:v(String(c),a),toClipboard:c=>H(c,n),fromClipboard:c=>v(c,a)}}const g=Object.freeze({celsius:S({scale:"C"}),fahrenheit:S({scale:"F"}),kelvin:S({scale:"K"})}),u=S}),$e("packages/core/src/columns/types/radix.js",function(e,W){"use strict";Object.defineProperty(e,"RADIX_PRESETS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"digitsForWidth",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"radixRange",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"radixName",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"normaliseRadixOptions",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"compileRadixFormat",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"formatRadix",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"compileRadixParse",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"parseRadixResult",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"parseRadix",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"createRadixType",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return C}});const Z=W("packages/core/src/internal/util.js"),$=Z.isNil,B=Z.warnOnce,D=Object.freeze({2:2,8:8,16:16,bin:2,binary:2,base2:2,oct:8,octal:8,base8:8,hex:16,hexadecimal:16,base16:16}),K=Object.freeze({2:1,8:3,16:4}),Q=Object.freeze({2:"0b",8:"0o",16:"0x"}),G=Object.freeze({2:4,8:3,16:2}),H=Object.freeze({2:/^[01]+$/,8:/^[0-7]+$/,16:/^[0-9a-f]+$/i}),_=Object.freeze({2:"binary",8:"octal",16:"hexadecimal"}),z=Object.freeze([[/^0x/i,16],[/^0b/i,2],[/^0o/i,8],[/^#/,16]]),v=/[\s\u00a0\u202f_,']/g,S=/^\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,g=Object.freeze([8,16,32,53]),u=new WeakSet,f=new WeakMap,a=new Map,r=new WeakMap,t=new WeakMap,n=Object.freeze({hex:Object.freeze({radix:16}),hex8:Object.freeze({radix:16,bitWidth:8,pad:!0,signed:!1}),hex16:Object.freeze({radix:16,bitWidth:16,pad:!0,signed:!1}),hex32:Object.freeze({radix:16,bitWidth:32,pad:!0,signed:!1}),binary:Object.freeze({radix:2}),binary8:Object.freeze({radix:2,bitWidth:8,pad:!0,signed:!1,group:4}),octal:Object.freeze({radix:8})});function o(M){if(M==null)return 16;const L=typeof M=="string"?M.toLowerCase():M,E=D[L];return E||(B(`radix:base:${String(M)}`,`unsupported radix ${String(M)}; use 2, 8, 16, 'binary', 'octal' or 'hex'. Falling back to hex`),16)}function l(M,L){return Math.ceil(M/K[L])}function c(M,L){if(!M)return L?{min:-Number.MAX_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER}:{min:0,max:Number.MAX_SAFE_INTEGER};if(!L)return{min:0,max:2**M-1};const E=2**(M-1);return{min:-E,max:E-1}}function i(M){return _[M]||"hexadecimal"}function m(M){if(typeof M=="string"){const L=n[M];return L||B(`radix:preset:${M}`,`unknown radix preset "${M}"; known presets are ${Object.keys(n).join(", ")}`),{...L||{}}}if(M&&typeof M.preset=="string"){const L=n[M.preset];return L||B(`radix:preset:${M.preset}`,`unknown radix preset "${M.preset}"; known presets are ${Object.keys(n).join(", ")}`),{...L||{},...M}}return M||{}}function d(M){const L=m(M),E=o(L.radix),I=K[E];let R=null;if(L.bitWidth!==void 0&&L.bitWidth!==null&&L.bitWidth!==!1){const ne=Number(L.bitWidth);g.includes(ne)?R=ne:B(`radix:width:${String(L.bitWidth)}`,`unsupported bitWidth ${String(L.bitWidth)}; use 8, 16, 32 or 53. Ignoring it`)}let k=L.signed!==!1;!k&&R===null&&(B("radix:unsigned:width","signed: false needs a bitWidth to render a two's-complement pattern; defaulting to 32"),R=32);const y=L.prefix===void 0||L.prefix===!0?Q[E]:L.prefix===!1?"":String(L.prefix);let T=0;L.pad===!0?T=R?l(R,E):0:typeof L.pad=="number"&&L.pad>0&&(T=Math.floor(L.pad));let V=0;L.group===!0?V=G[E]:typeof L.group=="number"&&L.group>0&&(V=Math.floor(L.group));const q=c(R,k),Y=typeof L.min=="number"?Math.max(q.min,L.min):q.min,J=typeof L.max=="number"?Math.min(q.max,L.max):q.max,ee=Object.freeze({radix:E,bits:I,prefix:y,uppercase:L.uppercase!==!1,pad:T,group:V,groupSeparator:typeof L.groupSeparator=="string"?L.groupSeparator:" ",bitWidth:R,signed:k,min:Y,max:J<Y?Y:J,nullDisplay:typeof L.nullDisplay=="string"?L.nullDisplay:"",name:i(E)});return u.add(ee),ee}function h(M){if(M&&u.has(M))return M;if(typeof M=="string"){let L=a.get(M);return L||(L=d(M),a.set(M,L)),L}if(M&&typeof M=="object"){let L=f.get(M);return L||(L=d(M),f.set(M,L)),L}return h("hex")}function s(M){return M<0?-Math.round(-M):Math.round(M)}function p(M,L,E){if(L<=0||M.length<=L)return M;const I=M.length%L||L,R=[M.slice(0,I)];for(let k=I;k<M.length;k+=L)R.push(M.slice(k,k+L));return R.join(E)}function w(M){const L=h(M),{radix:E,prefix:I,uppercase:R,pad:k,group:y,groupSeparator:T,signed:V,bitWidth:q,nullDisplay:Y}=L,J=q?2**q:0,ee=ne=>{if($(ne)||ne==="")return Y;const ie=typeof ne=="number"?ne:Number(ne);if(!Number.isFinite(ie))return Y;const se=s(ie);let we="",he=se;se<0&&(V?(we="-",he=-se):he=(se%J+J)%J);let te=he.toString(E);return te=R?te.toUpperCase():te.toLowerCase(),k>0&&te.length<k&&(te=te.padStart(k,"0")),y>0&&(te=p(te,y,T)),we+I+te};return ee.options=L,ee}function A(M,L){const E=h(L);let I=r.get(E);return I||(I=w(E),r.set(E,I)),I(M)}function P(M){const L=h(M),{radix:E,groupSeparator:I,signed:R,min:k,max:y}=L,T=H[E],V=q=>{if($(q))return{ok:!0,value:null,reason:"blank"};let Y=String(q);if(I&&I!==""&&(Y=Y.split(I).join("")),Y=Y.replace(v,""),Y==="")return{ok:!0,value:null,reason:"blank"};let J=!1;if((Y[0]==="-"||Y[0]==="+")&&(J=Y[0]==="-",Y=Y.slice(1)),Y==="")return{ok:!1,value:null,reason:"digits"};let ee=null;for(const[ie,se]of z){const we=ie.exec(Y);if(!we)continue;const he=Y.slice(we[0].length);if(he==="")break;if(!H[se].test(he))return{ok:!1,value:null,reason:"digits"};ee=parseInt(he,se);break}if(ee===null)if(T.test(Y))ee=parseInt(Y,E);else if(S.test(Y))ee=Number(Y);else return{ok:!1,value:null,reason:"digits"};if(!Number.isFinite(ee))return{ok:!1,value:null,reason:"digits"};const ne=s(J?-ee:ee);return!R&&ne<0?{ok:!1,value:ne,reason:"negative"}:ne<k||ne>y?{ok:!1,value:ne,reason:"range"}:{ok:!0,value:ne,reason:"ok"}};return V.options=L,V}function b(M,L){const E=h(L);let I=t.get(E);return I||(I=P(E),t.set(E,I)),I(M)}function O(M,L){const E=b(M,L);return E.ok?E.value:null}function x(M,L){const E=$(M)||Number.isNaN(M)?null:Number(M),I=$(L)||Number.isNaN(L)?null:Number(L);return E===null?I===null?0:1:I===null||E<I?-1:E>I?1:0}function j(M){const L=M.min>=-2147483648&&M.max<=2147483647;return M.bitWidth&&L?"int32":"float64"}function F(M){const L=d(M),E=w(L),I=P(L);return{base:"number",extends:"number",storage:j(L),matches:null,format:R=>E(R.value),parse:R=>{const k=I(R.text);return k.ok?k.value:null},compare:x,defaults:{filter:"number",editor:"radix",total:"sum",align:"end"},excel:"General",toClipboard:R=>E(R),fromClipboard:R=>{const k=I(R);return k.ok?k.value:null},radix:L,formatValue:E,parseText:I}}const C=F}),$e("packages/core/src/columns/types/aggregable.js",function(e,W){"use strict";Object.defineProperty(e,"createLogarithmicType",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"createRatioType",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"AGGREGABLE_TYPES",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"weightedMean",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"logarithmicSum",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"logarithmicMean",{enumerable:!0,get:function(){return K}});const $=W("packages/core/src/internal/util.js").isNil;function B(z){const v=[];for(const S of z||[]){if($(S))continue;const g=Number(S);Number.isFinite(g)&&v.push(g)}return v}function D(z){return v=>{const S=B(v);if(!S.length)return null;let g=0;for(const u of S)g+=10**(u/z);return z*Math.log10(g)}}function K(z){return v=>{const S=B(v);if(!S.length)return null;let g=0;for(const u of S)g+=10**(u/z);return z*Math.log10(g/S.length)}}function Q(z,v){const S=v&&v.column,u=(S&&S.typeOptions||{}).weight,f=v&&v.valueAt;if(!u||typeof f!="function")return null;let a=0,r=0;for(let t=0;t<z.length;t++){if($(z[t]))continue;const n=Number(z[t]);if(!Number.isFinite(n))continue;const o=f(u,t);if($(o))continue;const l=Number(o);!Number.isFinite(l)||l<=0||(a+=n*l,r+=l)}return r===0?null:a/r}function G(z={}){const v=z.factor===20?20:10,S=typeof z.suffix=="string"?z.suffix:"",g=Number.isInteger(z.decimals)?z.decimals:1;return{base:"number",storage:"float64",name:z.name||"logarithmic",format:u=>{const f=u&&u.value;return $(f)||!Number.isFinite(Number(f))?"":`${Number(f).toFixed(g)}${S}`},parse:u=>{const f=String((u&&u.text)??"").replace(S,"").trim();if(!f)return null;const a=Number(f);return Number.isFinite(a)?a:null},defaults:{align:"end",filter:"number"},totals:{supported:["sum","avg","min","max","count","countValues"],implement:{sum:D(v),avg:K(v)}}}}function H(z={}){const v=Number.isInteger(z.decimals)?z.decimals:1,S=z.percent===!0;return{base:"number",storage:"float64",name:z.name||"ratio",format:g=>{const u=g&&g.value;return $(u)||!Number.isFinite(Number(u))?"":S?`${Number(u).toFixed(v)}%`:Number(u).toFixed(v)},parse:g=>{const u=String((g&&g.text)??"").replace("%","").trim();if(!u)return null;const f=Number(u);return Number.isFinite(f)?f:null},defaults:{align:"end",filter:"number"},totals:{supported:["avg","min","max","count","countValues"],implement:{avg:Q}}}}const _=Object.freeze({decibel:G({name:"decibel",factor:10,suffix:" dB"}),decibelAmplitude:G({name:"decibelAmplitude",factor:20,suffix:" dB"}),ratio:H({name:"ratio"}),percentRate:H({name:"percentRate",percent:!0})})}),$e("packages/core/src/columns/types/currency.js",function(e,W){"use strict";Object.defineProperty(e,"MISSING_RATE",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"normaliseCode",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"toMoney",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"parseMoney",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"rateFunction",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"convertMoney",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"formatMoney",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"moneyToText",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"moneyComparator",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"createCurrencyType",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"CURRENCY_TYPES",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return l}});const $=W("packages/core/src/internal/util.js").isNil,B="⚠ no rate";function D(c){if($(c))return null;const i=String(c).trim().toUpperCase();return i===""?null:i}function K(c){if($(c))return null;if(typeof c=="object"&&!Array.isArray(c)){const i=Number(c.amount),m=D(c.code);return!m||!Number.isFinite(i)?null:{amount:i,code:m}}if(Array.isArray(c)&&c.length===2){const i=Number(c[0]),m=D(c[1]);return!m||!Number.isFinite(i)?null:{amount:i,code:m}}return null}const Q=Object.freeze({$:"USD","€":"EUR","£":"GBP","¥":"JPY","₹":"INR","₩":"KRW","₽":"RUB","₺":"TRY","₴":"UAH","₪":"ILS"}),G=Object.freeze({USD:"$",EUR:"€",GBP:"£",JPY:"¥",INR:"₹",KRW:"₩",RUB:"₽",TRY:"₺",UAH:"₴",ILS:"₪"}),H=/[+-]?[\d\s., ]*\d/;function _(c,i){const m=String(c).trim();if(m==="")return null;const d=new Intl.NumberFormat(i||void 0).formatToParts(1.1).find(w=>w.type==="decimal")?.value||".",h=d===","?".":",",s=m.split(h).join("").split(/[\s ]/).join("").replace(d,"."),p=Number(s);return Number.isFinite(p)?p:null}function z(c,i){const m=i||{},d=D(m.code);if($(c))return null;const h=K(c);if(h)return h;if(typeof c=="number")return Number.isFinite(c)&&d?{amount:c,code:d}:null;let s=String(c).trim();if(s==="")return null;let p=!1;s.startsWith("(")&&s.endsWith(")")&&(p=!0,s=s.slice(1,-1).trim());let w=null;for(const[j,F]of Object.entries(Q)){if(s.startsWith(j)){w=F,s=s.slice(j.length).trim();break}if(s.endsWith(j)){w=F,s=s.slice(0,-j.length).trim();break}}const A=H.exec(s);if(!A)return null;const P=_(A[0],m.locale);if(P===null)return null;const b=(s.slice(0,A.index)+" "+s.slice(A.index+A[0].length)).trim();!w&&b!==""&&(w=D(b));const O=w||d;return O?{amount:p?-P:P,code:O}:null}function v(c,i){if(typeof c=="function")return(m,d)=>{if(m===d)return 1;const h=c(m,d);return typeof h=="number"&&Number.isFinite(h)&&h>0?h:null};if(c&&typeof c=="object"){const m=c;return(d,h)=>{if(d===h)return 1;const s=Number(m[d]),p=Number(m[h]);return!Number.isFinite(s)||!Number.isFinite(p)||s<=0||p<=0?null:p/s}}return(m,d)=>m===d?1:null}function S(c,i,m){if(!c)return null;if(c.code===i)return c.amount;const d=m(c.code,i);return d===null?null:c.amount*d}const g=new Map;function u(c,i,m){const d=`${c||""}|${i}|${m??""}`;let h=g.get(d);if(!h){const s={style:"currency",currency:i};typeof m=="number"&&(s.minimumFractionDigits=m,s.maximumFractionDigits=m);try{h={fmt:new Intl.NumberFormat(c||void 0,s),currency:!0}}catch{h={fmt:new Intl.NumberFormat(c||void 0,typeof m=="number"?{minimumFractionDigits:m,maximumFractionDigits:m}:{}),currency:!1}}g.set(d,h)}return h}function f(c,i){const m=i||{},d=m.nullDisplay??"",h=K(c);if(!h)return d;const s=D(m.display)||h.code;let p=h.amount,w=h.code;if(s!==h.code){const b=m.rateFn||v(m.rates,m.rateBase),O=S(h,s,b);if(O===null)return`${m.missingRate??B} ${h.code}→${s}`;p=O,w=s}const{fmt:A,currency:P}=u(m.locale,w,m.decimals);return P?A.format(p):`${A.format(p)} ${w}`}function a(c){const i=K(c);return i?`${i.amount} ${i.code}`:""}function r(c){const i=c||{},m=D(i.display),d=i.rateFn||v(i.rates,i.rateBase);return(h,s)=>{const p=K(h),w=K(s);if(!p&&!w)return 0;if(!p)return 1;if(!w)return-1;if(m){const A=S(p,m,d),P=S(w,m,d);if(A!==null&&P!==null)return A===P?0:A<P?-1:1}return p.code===w.code?p.amount===w.amount?0:p.amount<w.amount?-1:1:p.code<w.code?-1:1}}function t(c){const i=c||{},m=(h,s)=>{const p=[];for(const O of h||[]){const x=K(O);x&&p.push(x)}if(!p.length)return null;if(new Set(p.map(O=>O.code)).size===1){const O=p[0].code;return{amount:s(p.map(x=>x.amount)),code:O}}const A=D(i.display);if(!A)return`${i.missingRate??B}: mixed currencies, no display currency set`;const P=i.rateFn||v(i.rates,i.rateBase),b=[];for(const O of p){const x=S(O,A,P);if(x===null)return`${i.missingRate??B}: ${O.code}→${A}`;b.push(x)}return{amount:s(b),code:A}},d=h=>h.reduce((s,p)=>s+p,0);return{sum:h=>m(h,d),avg:h=>m(h,s=>d(s)/s.length),min:h=>m(h,s=>Math.min(...s)),max:h=>m(h,s=>Math.max(...s))}}function n(c){const i=Object.freeze({code:"USD",...c||{}}),m=v(i.rates,i.rateBase),d=Object.freeze({...i,rateFn:m}),h=t(d),s=r(d),p=new Map([[i.locale||"",d]]),w=b=>{const O=b||"";let x=p.get(O);return x||(x=Object.freeze({...d,locale:b||void 0}),p.set(O,x)),x},A=G[D(i.display||i.code)]||"",P=typeof i.decimals=="number"&&i.decimals>0?`.${"0".repeat(i.decimals)}`:".00";return{base:"object",extends:"object",storage:"object",name:"currency",currencyConfig:d,format:b=>f(b.value,b.locale?w(b.locale):d),parse:b=>z(b.text,b.locale?w(b.locale):d),compare:s,defaults:{filter:"number",editor:"currency",align:"end",total:"sum"},totals:{supported:["sum","avg","min","max","count","countValues"],implement:h},excel:i.excel||(A?`"${A}"#,##0${P}`:`#,##0${P}`),toStorage:b=>{const O=K(b);return O||(typeof b=="string"||typeof b=="number"?z(b,d):null)},toClipboard:b=>a(b),fromClipboard:b=>z(b,d)}}const o=Object.freeze({currency:n({code:"USD"}),usd:n({code:"USD"}),eur:n({code:"EUR"}),gbp:n({code:"GBP"}),jpy:n({code:"JPY",decimals:0})}),l=n}),$e("packages/core/src/columns/types/index.js",function(e,W){"use strict";Object.defineProperty(e,"EXTENDED_TYPES",{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,"createUnitType",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"parseUnit",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"formatUnit",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"registerUnitSystem",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"unitSystemNames",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"unitsOf",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"defineUnit",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"SI_TYPES",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"createSiType",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"createSiSystem",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"siUnits",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"SI_PREFIXES",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"createRadixType",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"RADIX_PRESETS",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"parseRadix",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"formatRadix",{enumerable:!0,get:function(){return j}});const Z=W("packages/core/src/columns/types/temporal.js"),$=Z.TEMPORAL_TYPES,B=W("packages/core/src/columns/types/network.js"),D=B.NETWORK_TYPES,K=W("packages/core/src/columns/types/structured.js"),Q=K.STRUCTURED_TYPES,G=W("packages/core/src/columns/types/unit.js"),H=G.createUnitType,_=G.UNIT_SYSTEMS,z=G.parseUnit,v=G.formatUnit,S=G.registerUnitSystem,g=G.unitSystemNames,u=G.unitsOf,f=G.defineUnit,a=W("packages/core/src/columns/types/engineering.js"),r=a.ENGINEERING_TYPES,t=W("packages/core/src/columns/types/si.js"),n=t.SI_TYPES,o=t.createSiType,l=t.createSiSystem,c=t.siUnits,i=t.SI_PREFIXES,m=W("packages/core/src/columns/types/temperature.js"),d=m.TEMPERATURE_TYPES,h=m.createTemperatureType,s=m.convertTemperature,p=m.formatTemperature,w=m.parseTemperature,A=m.TEMPERATURE_SCALES,P=W("packages/core/src/columns/types/radix.js"),b=P.createRadixType,O=P.RADIX_PRESETS,x=P.parseRadix,j=P.formatRadix,F=W("packages/core/src/columns/types/aggregable.js"),C=F.AGGREGABLE_TYPES,M=W("packages/core/src/columns/types/currency.js"),L=M.CURRENCY_TYPES,E=M.createCurrencyType,I=M.parseMoney,R=M.formatMoney,k=M.convertMoney,y=M.toMoney,T=M.rateFunction,V=M.moneyComparator,q=M.normaliseCode,Y=M.MISSING_RATE;Object.defineProperty(e,"findUnit",{enumerable:!0,get:function(){return G.findUnit}}),Object.defineProperty(e,"ENGINEERING_TYPES",{enumerable:!0,get:function(){return a.ENGINEERING_TYPES}}),Object.defineProperty(e,"circularMean",{enumerable:!0,get:function(){return a.circularMean}}),Object.defineProperty(e,"TEMPERATURE_TYPES",{enumerable:!0,get:function(){return m.TEMPERATURE_TYPES}}),Object.defineProperty(e,"createTemperatureType",{enumerable:!0,get:function(){return m.createTemperatureType}}),Object.defineProperty(e,"convertTemperature",{enumerable:!0,get:function(){return m.convertTemperature}}),Object.defineProperty(e,"formatTemperature",{enumerable:!0,get:function(){return m.formatTemperature}}),Object.defineProperty(e,"parseTemperature",{enumerable:!0,get:function(){return m.parseTemperature}}),Object.defineProperty(e,"TEMPERATURE_SCALES",{enumerable:!0,get:function(){return m.TEMPERATURE_SCALES}}),Object.defineProperty(e,"findScale",{enumerable:!0,get:function(){return m.findScale}}),Object.defineProperty(e,"CURRENCY_TYPES",{enumerable:!0,get:function(){return M.CURRENCY_TYPES}}),Object.defineProperty(e,"createCurrencyType",{enumerable:!0,get:function(){return M.createCurrencyType}}),Object.defineProperty(e,"parseMoney",{enumerable:!0,get:function(){return M.parseMoney}}),Object.defineProperty(e,"formatMoney",{enumerable:!0,get:function(){return M.formatMoney}}),Object.defineProperty(e,"convertMoney",{enumerable:!0,get:function(){return M.convertMoney}}),Object.defineProperty(e,"toMoney",{enumerable:!0,get:function(){return M.toMoney}}),Object.defineProperty(e,"rateFunction",{enumerable:!0,get:function(){return M.rateFunction}}),Object.defineProperty(e,"moneyComparator",{enumerable:!0,get:function(){return M.moneyComparator}}),Object.defineProperty(e,"normaliseCode",{enumerable:!0,get:function(){return M.normaliseCode}}),Object.defineProperty(e,"MISSING_RATE",{enumerable:!0,get:function(){return M.MISSING_RATE}}),Object.defineProperty(e,"TEMPORAL_TYPES",{enumerable:!0,get:function(){return Z.TEMPORAL_TYPES}}),Object.defineProperty(e,"NETWORK_TYPES",{enumerable:!0,get:function(){return B.NETWORK_TYPES}}),Object.defineProperty(e,"STRUCTURED_TYPES",{enumerable:!0,get:function(){return K.STRUCTURED_TYPES}}),Object.defineProperty(e,"AGGREGABLE_TYPES",{enumerable:!0,get:function(){return F.AGGREGABLE_TYPES}}),Object.defineProperty(e,"createLogarithmicType",{enumerable:!0,get:function(){return F.createLogarithmicType}}),Object.defineProperty(e,"createRatioType",{enumerable:!0,get:function(){return F.createRatioType}}),Object.defineProperty(e,"parseTime",{enumerable:!0,get:function(){return Z.parseTime}}),Object.defineProperty(e,"formatTime",{enumerable:!0,get:function(){return Z.formatTime}}),Object.defineProperty(e,"parseDateTime",{enumerable:!0,get:function(){return Z.parseDateTime}}),Object.defineProperty(e,"formatDateTime",{enumerable:!0,get:function(){return Z.formatDateTime}}),Object.defineProperty(e,"parseDuration",{enumerable:!0,get:function(){return Z.parseDuration}}),Object.defineProperty(e,"formatDuration",{enumerable:!0,get:function(){return Z.formatDuration}}),Object.defineProperty(e,"parseIpv4",{enumerable:!0,get:function(){return B.parseIpv4}}),Object.defineProperty(e,"formatIpv4",{enumerable:!0,get:function(){return B.formatIpv4}}),Object.defineProperty(e,"parseCidr",{enumerable:!0,get:function(){return B.parseCidr}}),Object.defineProperty(e,"formatCidr",{enumerable:!0,get:function(){return B.formatCidr}}),Object.defineProperty(e,"parseIpv6",{enumerable:!0,get:function(){return B.parseIpv6}}),Object.defineProperty(e,"formatIpv6",{enumerable:!0,get:function(){return B.formatIpv6}}),Object.defineProperty(e,"networkAddress",{enumerable:!0,get:function(){return B.networkAddress}}),Object.defineProperty(e,"broadcastAddress",{enumerable:!0,get:function(){return B.broadcastAddress}}),Object.defineProperty(e,"hostCount",{enumerable:!0,get:function(){return B.hostCount}}),Object.defineProperty(e,"containsAddress",{enumerable:!0,get:function(){return B.containsAddress}}),Object.defineProperty(e,"overlaps",{enumerable:!0,get:function(){return B.overlaps}}),Object.defineProperty(e,"maskValue",{enumerable:!0,get:function(){return K.maskValue}}),Object.defineProperty(e,"summariseJson",{enumerable:!0,get:function(){return K.summariseJson}});const J=Object.freeze({...$,...D,...Q,...C,hex:b(O.hex),hex8:b(O.hex8),hex16:b(O.hex16),hex32:b(O.hex32),binary:b(O.binary),binary8:b(O.binary8),octal:b(O.octal),bytes:H({system:"data",unit:"B",display:"auto"}),megabytes:H({system:"data",unit:"MB"}),gigabytes:H({system:"data",unit:"GB"}),bitrate:H({system:"bitrate",unit:"Mbps"}),gigabits:H({system:"bitrate",unit:"Gbps"}),...r,...n,...d,...L});{const ee=new Set;for(const ne of[$,D,Q,C,r,n,d,L])for(const ie of Object.keys(ne)){if(ee.has(ie))throw new Error(`[lattice] data type "${ie}" is declared twice`);ee.add(ie)}}}),$e("packages/core/src/compute/handle.js",function(e,W){"use strict";Object.defineProperty(e,"identity",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"rowCount",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"bitReader",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"presenceReader",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"dictSize",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"dictValue",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"multiValue",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"valueReader",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"numericTotalOrder",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"valueComparator",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"dictRanks",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"isMissing",{enumerable:!0,get:function(){return t}});const Z=W("packages/core/src/internal/util.js"),$=Z.collator,B=Z.defaultCompare,D=Z.warnOnce;function K(n){const o=new Uint32Array(n);for(let l=0;l<n;l++)o[l]=l;return o}function Q(n,o){if(o&&typeof o.count=="number")return o.count;if(!n)return 0;if(typeof n.count=="number")return n.count;if(typeof n.length=="number")return n.length;const l=n.values;return n.kind==="multi"&&n.offsets?Math.max(0,n.offsets.length-1):l?n.kind==="bitset"?typeof l.size=="number"?l.size:n.presence&&typeof n.presence.size=="number"?n.presence.size:(D(`count:${n.id}`,`column "${n.id}" is bitset-backed with no declared row count; assuming ${l.length*8}`),l.length*8):l.length:n.presence&&typeof n.presence.size=="number"?n.presence.size:0}const G=new WeakMap;function H(n){const o=n.constructor;if(!o)return"unknown";const l=G.get(o);if(l)return l;let c="unknown";try{let i=null;typeof o.from=="function"?i=o.from([!1,!0]):(i=new o(8),i.set(1));const m=i&&i.words;m&&m.length&&(m[0]===2?c="lsb":m[0]===64&&(c="msb"))}catch{c="unknown"}return G.set(o,c),c}function _(n){if(!n)return()=>0;const o=n instanceof Uint8Array?n:n.words;if(o instanceof Uint8Array){const l=n instanceof Uint8Array?"lsb":H(n);if(l==="lsb")return c=>o[c>>>3]>>>(c&7)&1;if(l==="msb")return c=>o[c>>>3]>>>7-(c&7)&1}return typeof n.get=="function"?l=>n.get(l)?1:0:()=>0}function z(n){return!n||!n.presence?null:_(n.presence)}function v(n){return n?typeof n.size=="number"?n.size:typeof n.values=="function"?n.values().length:0:0}function S(n,o){return n?typeof n.valueOf=="function"?n.valueOf(o):typeof n.values=="function"?n.values()[o]:null:null}function g(n,o){const l=n.offsets,c=n.values;if(!l||!c)return[];const i=l[o],m=l[o+1];if(!(m>i))return[];const d=n.dict,h=new Array(m-i);for(let s=i;s<m;s++)h[s-i]=d?S(d,c[s]):c[s];return h}function u(n){if(!n)return()=>{};const o=n.values,l=z(n),c=n.kind;if(c==="dictionary"){const i=n.dict;return l?m=>l(m)?S(i,o[m]):null:m=>S(i,o[m])}if(c==="bitset"){const i=_(o);return l?m=>l(m)?i(m)===1:null:m=>i(m)===1}if(c==="multi")return l?i=>l(i)?g(n,i):null:i=>g(n,i);if(!o&&typeof n.get=="function"){const i=n.get.bind(n);return m=>{const d=i(m);return d===void 0?null:d}}return l?i=>{if(!l(i))return null;const m=o[i];return m===void 0?null:m}:i=>{const m=o[i];return m===void 0?null:m}}function f(n,o){if(n<o)return-1;if(n>o)return 1;if(n===o){const i=Object.is(n,-0),m=Object.is(o,-0);return i===m?0:i?-1:1}const l=Number.isNaN(n),c=Number.isNaN(o);return l&&c?0:l?1:-1}function a(n){const o=$(n);return(l,c)=>{if(l===c)return 0;const i=typeof l,m=typeof c;if(i==="string"&&m==="string")return o.compare(l,c);if(i==="number"&&m==="number")return f(l,c);if(i==="boolean"&&m==="boolean")return l===c?0:l?1:-1;if(l instanceof Date||c instanceof Date){const d=l instanceof Date?l.getTime():Number(l),h=c instanceof Date?c.getTime():Number(c);return f(d,h)}return B(l,c)}}function r(n,o){if(n&&typeof n.ranks=="function")return n.ranks(o);const l=n&&typeof n.values=="function"?n.values():[],c=l.length,i=a(o),m=new Array(c);for(let h=0;h<c;h++)m[h]=h;m.sort((h,s)=>i(l[h],l[s])||h-s);const d=new Uint32Array(c);for(let h=0;h<c;h++)d[m[h]]=h;return d}function t(n){return n==null||typeof n=="number"&&Number.isNaN(n)}}),$e("packages/core/src/compute/filter.js",function(e,W){"use strict";Object.defineProperty(e,"releaseMask",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"compilePredicate",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"wallMs",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"testValue",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"itemwisePredicate",{enumerable:!0,get:function(){return E}}),Object.defineProperty(e,"evaluateCondition",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"evaluateFilters",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(e,"pruneColumn",{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,"mentionsColumn",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(e,"compact",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(e,"declareOperators",{enumerable:!0,get:function(){return se}}),Object.defineProperty(e,"declaredOperator",{enumerable:!0,get:function(){return we}});const Z=W("packages/core/src/internal/util.js"),$=Z.isBlank,B=Z.toArray,D=Z.warnOnce,K=W("packages/core/src/format/date.js"),Q=K.toDate,G=K.toIsoDate,H=W("packages/core/src/compute/handle.js"),_=H.bitReader,z=H.dictSize,v=H.dictValue,S=H.presenceReader,g=H.valueComparator,u=H.valueReader,f=/^\d{4}-\d{2}-\d{2}$/,a="\0null\0";function r(he,te){const ae=he&&he.pool;if(ae){const ge=ae.mask||ae.acquireMask||ae.acquire||ae.take;if(typeof ge=="function"){const be=ge.call(ae,te);if(be&&be.length>=te)return be}}return new Uint8Array(te)}function t(he,te){const ae=he&&he.pool;if(!ae||!te)return;const ge=ae.release||ae.releaseMask||ae.free||ae.recycle;typeof ge=="function"&&ge.call(ae,te)}function n(he,te,ae){return he.fill(ae,0,te),he}function o(he){return he==null||typeof he=="number"&&Number.isNaN(he)}function l(he,te){if(he==null)return he;if(te==="number")return typeof he=="number"?he:Number(he);if(te==="date"||te==="dateString"){const ae=G(he);return ae===null?c(he):ae}return te==="boolean"?typeof he=="boolean"?he:he==="true"||he===1?!0:he==="false"||he===0?!1:!!he:he}function c(he){return he instanceof Date?he.getTime():typeof he=="number"?he:Date.parse(String(he))}function i(he){return typeof he=="number"?he:he instanceof Date?he.getTime():he==null||he===""?NaN:Number(he)}function m(he,te){const ae=typeof he=="string"?he:String(he);return te?ae:ae.toLowerCase()}function d(he,te){return he==null?a:typeof he=="string"?te?he:he.toLowerCase():he instanceof Date?he.getTime():he}function h(he,te,ae){const ge=new Set;for(const be of B(he)){const je=l(be,ae);ge.add(d(je,te)),typeof je=="string"&&je!==""&&Number.isFinite(Number(je))?ge.add(Number(je)):typeof je=="number"&&Number.isFinite(je)&&ge.add(d(String(je),te))}return ge}function s(he,te,ae){if(he==null||te===null||te===void 0)return he==null&&te==null;const ge=typeof he,be=typeof te;return ge==="string"&&be==="string"?ae?he===te:he.toLowerCase()===te.toLowerCase():he instanceof Date||te instanceof Date?c(he)===c(te):ge==="number"&&be==="number"?he===te||Number.isNaN(he)&&Number.isNaN(te):ge==="number"&&be==="string"?he===Number(te):ge==="string"&&be==="number"?Number(he)===te:ge==="boolean"||be==="boolean"?he===te:Array.isArray(he)&&Array.isArray(te)?he.length===te.length&&he.every((je,xe)=>s(je,te[xe],ae)):he===te}function p(he,te){try{if(he instanceof RegExp){const ae=he.flags.replace(/[gy]/g,"");return new RegExp(he.source,te||ae.includes("i")?ae:`${ae}i`)}return new RegExp(String(he),te?"":"i")}catch(ae){return D(`regex:${String(he)}`,`filter operator "matches" received an invalid pattern: ${String(he)}`,ae),null}}function w(he,te){if(he&&he.type==="datetime"&&A.has(he.op))return j(he,te);const ae=F(he,te),ge=he&&he.type;return ge!=="date"&&ge!=="dateString"?ae:be=>ae(typeof be=="string"&&f.test(be)?be:G(be)??be)}const A=new Set(["eq","ne","lt","lte","gt","gte","between","notBetween","in","notIn"]),P=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3})\d*)?)?)?$/,b=new Map;function O(he,te){let ae=b.get(te);if(ae===void 0){try{ae=new Intl.DateTimeFormat("en-CA",{timeZone:te,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{ae=null}b.set(te,ae)}if(!ae)return null;const ge={};for(const be of ae.formatToParts(he))be.type!=="literal"&&(ge[be.type]=be.value);return ge}function x(he,te){if(he==null||he==="")return null;if(typeof he=="string"){const je=P.exec(he.trim());if(je)return Date.UTC(+je[1],+je[2]-1,+je[3],+(je[4]||0),+(je[5]||0),+(je[6]||0),+(je[7]||"0").padEnd(3,"0"))}const ae=Q(he);if(!ae)return null;const ge=ae.getUTCMilliseconds(),be=te?O(ae,te):null;return be?Date.UTC(+be.year,+be.month-1,+be.day,be.hour==="24"?0:+be.hour,+be.minute,+be.second,ge):Date.UTC(ae.getFullYear(),ae.getMonth(),ae.getDate(),ae.getHours(),ae.getMinutes(),ae.getSeconds(),ge)}function j(he,te){const ae=typeof he.timeZone=="string"&&he.timeZone?he.timeZone:void 0,ge=xe=>x(xe,ae),be=Array.isArray(he.value)?he.value.map(ge):ge(he.value),je=F({...he,type:"number",value:be},te);return xe=>je(x(xe))}function F(he,te){const ae=he&&he.op,ge=!!(he&&he.caseSensitive),be=he&&he.type,je=g(te),xe=Ce=>ke=>!Ce(ke);switch(ae){case"eq":{const Ce=l(he.value,be);return ke=>s(ke,Ce,ge)}case"ne":{const Ce=l(he.value,be);return ke=>!s(ke,Ce,ge)}case"lt":case"lte":case"gt":case"gte":{const Ce=l(he.value,be);if(o(Ce))return()=>!1;const ke=ae==="lt"?-1:ae==="lte"?0:ae==="gt"?1:2;return ye=>{if(o(ye))return!1;const ve=je(ye,Ce);return ke===-1?ve<0:ke===0?ve<=0:ke===1?ve>0:ve>=0}}case"between":case"notBetween":{const Ce=B(he.value),ke=l(Ce[0],be),ye=l(Ce[1],be),ve=he.bounds||"[]",Se=ve.charAt(0)!=="(",Le=ve.charAt(1)!==")";if(o(ke)||o(ye))return ae==="between"?()=>!1:()=>!0;const De=He=>{if(o(He))return!1;const Ze=je(He,ke),Ee=je(He,ye);return(Se?Ze>=0:Ze>0)&&(Le?Ee<=0:Ee<0)};return ae==="between"?De:xe(De)}case"in":case"notIn":{const Ce=h(he.value,ge,be),ke=ye=>Ce.has(d(ye,ge));return ae==="in"?ke:xe(ke)}case"contains":case"notContains":{const Ce=m(l(he.value,be),ge),ke=ye=>ye==null?!1:m(ye,ge).includes(Ce);return ae==="contains"?ke:xe(ke)}case"startsWith":{const Ce=m(l(he.value,be),ge);return ke=>ke==null?!1:m(ke,ge).startsWith(Ce)}case"endsWith":{const Ce=m(l(he.value,be),ge);return ke=>ke==null?!1:m(ke,ge).endsWith(Ce)}case"matches":{const Ce=p(he.value,ge);return Ce?ke=>ke==null?!1:Ce.test(String(ke)):()=>!1}case"blank":return Ce=>$(Ce)||Array.isArray(Ce)&&Ce.length===0;case"notBlank":return Ce=>!($(Ce)||Array.isArray(Ce)&&Ce.length===0);case"containsAny":case"containsNone":{const Ce=h(he.value,ge,be),ke=ye=>{const ve=ye==null?[]:B(ye);for(let Se=0;Se<ve.length;Se++)if(Ce.has(d(ve[Se],ge)))return!0;return!1};return ae==="containsAny"?ke:xe(ke)}case"containsAll":{const Ce=B(he.value).map(ke=>d(l(ke,be),ge));return ke=>{const ye=ke==null?[]:B(ke);if(Ce.length===0)return!0;const ve=new Set(ye.map(Se=>d(Se,ge)));for(let Se=0;Se<Ce.length;Se++)if(!ve.has(Ce[Se]))return!1;return!0}}default:{const Ce=we(ae);return Ce?Ce.compile(he.value):(D(`op:${String(ae)}`,`unknown filter operator "${String(ae)}"; the condition is refused rather than matching every row`),()=>!1)}}}function C(he,te,ae){return w(te,ae)(he)}const M=Object.freeze({ne:"eq",notIn:"in",notBetween:"between",notContains:"contains"}),L=new Set(["containsAny","containsAll","containsNone"]);function E(he,te,ae){const ge=he&&he.op,be=M[ge]||ge,je=w({...he,op:be,type:te.type},ae),xe=te.items,Ce=ke=>{const ye=xe(ke);if(!ye)return!1;for(let ve=0;ve<ye.length;ve++)if(je(ye[ve]))return!0;return!1};return M[ge]?ke=>!Ce(ke):Ce}function I(he,te,ae,ge){const be=S(he);if(be){const Ce=te?1:0;for(let ke=0;ke<ge;ke++)ae[ke]=be(ke)===Ce?1:0;return ae}const je=he.kind;if(je==="float64"||je==="int32"||je==="bitset")return n(ae,ge,te?1:0);const xe=u(he);for(let Ce=0;Ce<ge;Ce++){const ke=xe(Ce),ye=$(ke)||Array.isArray(ke)&&ke.length===0;ae[Ce]=ye===te?0:1}return ae}function R(he,te,ae,ge){const be=he.dict,je=z(be),xe=new Uint8Array(je);for(let ve=0;ve<je;ve++)xe[ve]=te(v(be,ve))?1:0;const Ce=he.values,ke=S(he);if(!ke){for(let ve=0;ve<ge;ve++)ae[ve]=xe[Ce[ve]];return ae}const ye=te(null)?1:0;for(let ve=0;ve<ge;ve++)ae[ve]=ke(ve)===1?xe[Ce[ve]]:ye;return ae}function k(he,te,ae,ge){const be=_(he.values),je=te(!0)?1:0,xe=te(!1)?1:0,Ce=S(he);if(!Ce){for(let ye=0;ye<ge;ye++)ae[ye]=be(ye)===1?je:xe;return ae}const ke=te(null)?1:0;for(let ye=0;ye<ge;ye++)ae[ye]=Ce(ye)===0?ke:be(ye)===1?je:xe;return ae}function y(he,te,ae,ge,be){const je=he.values,xe=te.type,Ce=te.op;let ke=!0;switch(Ce){case"eq":case"ne":{const ve=i(l(te.value,xe)),Se=typeof te.value=="number"&&Number.isNaN(te.value),Le=Ce==="ne"?1:0;if(Se)for(let De=0;De<be;De++)ge[De]=(Number.isNaN(je[De])?1:0)^Le;else for(let De=0;De<be;De++)ge[De]=(je[De]===ve?1:0)^Le;break}case"lt":{const ve=i(l(te.value,xe));for(let Se=0;Se<be;Se++)ge[Se]=je[Se]<ve?1:0;break}case"lte":{const ve=i(l(te.value,xe));for(let Se=0;Se<be;Se++)ge[Se]=je[Se]<=ve?1:0;break}case"gt":{const ve=i(l(te.value,xe));for(let Se=0;Se<be;Se++)ge[Se]=je[Se]>ve?1:0;break}case"gte":{const ve=i(l(te.value,xe));for(let Se=0;Se<be;Se++)ge[Se]=je[Se]>=ve?1:0;break}case"between":case"notBetween":{const ve=B(te.value),Se=i(l(ve[0],xe)),Le=i(l(ve[1],xe)),De=te.bounds||"[]",He=De.charAt(0)!=="(",Ze=De.charAt(1)!==")",Ee=Ce==="notBetween"?1:0;if(He&&Ze)for(let Ge=0;Ge<be;Ge++)ge[Ge]=(je[Ge]>=Se&je[Ge]<=Le?1:0)^Ee;else if(He)for(let Ge=0;Ge<be;Ge++)ge[Ge]=(je[Ge]>=Se&je[Ge]<Le?1:0)^Ee;else if(Ze)for(let Ge=0;Ge<be;Ge++)ge[Ge]=(je[Ge]>Se&je[Ge]<=Le?1:0)^Ee;else for(let Ge=0;Ge<be;Ge++)ge[Ge]=(je[Ge]>Se&je[Ge]<Le?1:0)^Ee;break}case"in":case"notIn":{const ve=new Set;for(const Le of B(te.value)){const De=i(l(Le,xe));Number.isNaN(De)||ve.add(De)}const Se=Ce==="notIn"?1:0;for(let Le=0;Le<be;Le++)ge[Le]=(ve.has(je[Le])?1:0)^Se;break}default:ke=!1;break}if(!ke)return!1;const ye=S(he);if(ye){const ve=ae(null)?1:0;for(let Se=0;Se<be;Se++)ye(Se)===0&&(ge[Se]=ve)}return!0}function T(he,te,ae,ge){const be=u(he);for(let je=0;je<ge;je++)ae[je]=te(be(je))?1:0;return ae}function V(he,te,ae){const ge=te.count|0,be=ae||r(te,ge);if(!he)return n(be,ge,1);const je=typeof te.handle=="function"?te.handle(he.col):void 0,xe=typeof te.custom=="function"?te.custom:null;if(!je){if(xe){for(let ve=0;ve<ge;ve++)be[ve]=xe(he,ve)?1:0;return be}return D(`filter:col:${String(he.col)}`,`filter references unknown column "${String(he.col)}"; the condition is refused rather than matching every row`),n(be,ge,0)}const Ce=he.op;if(Ce==="blank"||Ce==="notBlank")return I(je,Ce==="notBlank",be,ge);const ke=typeof te.itemwise=="function"?te.itemwise(he.col):null;if(ke&&!we(Ce)&&!L.has(Ce))return T(je,E(he,ke,te.locale),be,ge);const ye=w(he,te.locale);switch(je.kind){case"dictionary":return R(je,ye,be,ge);case"bitset":return k(je,ye,be,ge);case"float64":case"int32":return y(je,he,ye,be,ge)?be:T(je,ye,be,ge);default:return T(je,ye,be,ge)}}function q(he,te,ae){if(!he)return n(r(te,ae),ae,1);if(Array.isArray(he.conditions)){const ge=he.conditions.filter(xe=>xe!=null),be=he.op==="or"?"or":he.op==="not"?"not":"and";if(ge.length===0)return n(r(te,ae),ae,1);const je=q(ge[0],te,ae);for(let xe=1;xe<ge.length;xe++){const Ce=q(ge[xe],te,ae);if(be==="or")for(let ke=0;ke<ae;ke++)je[ke]|=Ce[ke];else for(let ke=0;ke<ae;ke++)je[ke]&=Ce[ke];t(te,Ce)}if(be==="not")for(let xe=0;xe<ae;xe++)je[xe]^=1;return je}return V(he,te,r(te,ae))}function Y(he,te){return q(he,te,te.count|0)}function J(he,te){if(!he||!te)return he||null;const ae=he;if(Array.isArray(ae.conditions)){if((ae.op==="or"?"or":ae.op==="not"?"not":"and")!=="and")return ee(ae,te)?null:he;const be=[];for(const je of ae.conditions){const xe=J(je,te);xe&&be.push(xe)}return be.length?{...ae,op:"and",conditions:be}:null}return ae.col===te?null:he}function ee(he,te){if(!he||typeof he!="object")return!1;const ae=he;if(ae.col===te)return!0;if(Array.isArray(ae.conditions)){for(const ge of ae.conditions)if(ee(ge,te))return!0}return!1}function ne(he,te,ae){if(ae&&ae.length>=te){let xe=0;for(let Ce=0;Ce<te;Ce++)he[Ce]&&(ae[xe++]=Ce);return ae.subarray(0,xe)}let ge=0;for(let xe=0;xe<te;xe++)ge+=he[xe]?1:0;const be=new Uint32Array(ge);let je=0;for(let xe=0;xe<te;xe++)he[xe]&&(be[je++]=xe);return be}const ie=new Map;function se(he){if(!(!he||typeof he!="object"))for(const[te,ae]of Object.entries(he))ae&&typeof ae.compile=="function"&&ie.set(te,ae)}function we(he){return typeof he=="string"?ie.get(he):void 0}}),$e("packages/core/src/columns/datatypes.js",function(e,W){"use strict";Object.defineProperty(e,"localeSeparators",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"parseNumberText",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"BUILTIN_TYPES",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"INFERENCE_ORDER",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"createTypeRegistry",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"comparatorFor",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"storageKind",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"typeLabel",{enumerable:!0,get:function(){return L}});const Z=W("packages/core/src/internal/util.js"),$=Z.collator,B=Z.defaultCompare,D=Z.isNil,K=Z.isObject,Q=Z.isFunction,G=Z.fail,H=Z.titleCase,_=W("packages/core/src/format/date.js"),z=_.toDate,v=_.toIsoDate,S=_.compareIso,u=W("packages/core/src/format/boolean.js").toTriState,a=W("packages/core/src/columns/types/index.js").EXTENDED_TYPES,r=W("packages/core/src/formula/index.js"),t=r.evaluateFormula,n=r.looksLikeFormula,l=W("packages/core/src/compute/filter.js").declareOperators,c=/^\d{4}-\d{2}-\d{2}$/;function i(E){return E.getHours()===0&&E.getMinutes()===0&&E.getSeconds()===0&&E.getMilliseconds()===0}const m=new Map;function d(E){const I=E||"",R=m.get(I);if(R)return R;const k={group:",",decimal:"."};try{for(const y of new Intl.NumberFormat(E||void 0).formatToParts(12345.6))y.type==="group"?k.group=y.value:y.type==="decimal"&&(k.decimal=y.value)}catch{}return m.set(I,k),k}const h=/\d\s*[*/^]\s*[\d.(]/;function s(E,I){if(D(E))return null;let R=String(E).trim();if(R===""||R.startsWith("=")||h.test(R))return null;let k=1;R.startsWith("(")&&R.endsWith(")")&&(k=-1,R=R.slice(1,-1));const y=R.endsWith("%"),{group:T,decimal:V}=d(I);if(R=R.replace(/[\s\u00a0\u202f\u2009']/g,""),T&&T!=="."&&T!==","&&(R=R.split(T).join("")),R=R.replace(/[^0-9eE+\-.,]/g,""),V===","?R=R.split(".").join("").replace(",","."):R=R.split(",").join(""),R===""||R==="-"||R==="+")return null;const q=Number(R);return Number.isNaN(q)?null:k*(y?q/100:q)}function p(E,I){const R=D(E)||Number.isNaN(E)?null:Number(E),k=D(I)||Number.isNaN(I)?null:Number(I);return R===null?k===null?0:1:k===null||R<k?-1:R>k?1:0}function w(E,I){const R=u(E),k=u(I);return R===null?k===null?0:1:k===null?-1:R===k?0:R?1:-1}function A(E,I){const R=z(E),k=z(I);if(!R)return k?1:0;if(!k)return-1;const y=R.getTime(),T=k.getTime();return y<T?-1:y>T?1:0}const P=new Map;function b(E){const I=z(E.value);if(!I)return"";const R=E.locale||"";let k=P.get(R);return k||(k=new Intl.DateTimeFormat(E.locale||void 0,{dateStyle:"medium"}),P.set(R,k)),k.format(I)}const O={boolean:{base:"boolean",storage:"bitset",matches:E=>typeof E=="boolean",parse:E=>u(E.text),compare:w,format:E=>u(E.value)===null?"":u(E.value)?"Yes":"No",defaults:{filter:"set",editor:"checkbox",align:"center"},excel:"General",toClipboard:E=>u(E)===null?"":String(u(E)),fromClipboard:E=>u(E)},number:{base:"number",storage:"float64",matches:E=>typeof E=="number"&&!Number.isNaN(E),parse:E=>{if(n(E.text)){const I=t(E.text,E);if(!I.ok)return null;const R=Number(I.value);return Number.isFinite(R)?R:null}return s(E.text,E.locale)},compare:p,defaults:{filter:"number",editor:"number",align:"end"},excel:"General",toClipboard:E=>D(E)?"":String(E),fromClipboard:(E,I)=>s(E,I&&I.locale)},date:{base:"dateString",storage:"dictionary",matches:E=>typeof E=="string"&&c.test(E)&&!Number.isNaN(Date.parse(E))||E instanceof Date&&!Number.isNaN(E.getTime())&&i(E),parse:E=>v(E.text),compare:S,format:b,defaults:{filter:"date",editor:"date",align:"start"},excel:"yyyy-mm-dd",toStorage:E=>v(E),toClipboard:E=>D(E)?"":String(E),fromClipboard:E=>v(E)},dateString:{base:"dateString",storage:"dictionary",matches:E=>typeof E=="string"&&c.test(E)&&!Number.isNaN(Date.parse(E)),parse:E=>v(E.text),compare:S,format:b,defaults:{filter:"date",editor:"date",align:"start"},excel:"yyyy-mm-dd",toStorage:E=>v(E),toClipboard:E=>D(E)?"":String(E),fromClipboard:E=>v(E)},text:{base:"text",storage:"dictionary",matches:E=>typeof E=="string",parse:E=>E.text===""?null:String(E.text),compare:(E,I)=>D(E)?D(I)?0:1:D(I)?-1:$().compare(String(E),String(I)),defaults:{filter:"text",editor:"text",align:"start"},excel:"@",toClipboard:E=>D(E)?"":String(E),fromClipboard:E=>E},image:{base:"text",storage:"dictionary",parse:E=>E.text===""||E.text==null?null:String(E.text).trim(),compare:(E,I)=>D(E)?D(I)?0:1:D(I)?-1:$().compare(String(E),String(I)),defaults:{filter:"text",editor:"text",align:"center",render:"image"},excel:"@",toClipboard:E=>D(E)?"":String(E),fromClipboard:E=>E},lookup:{base:"text",storage:"dictionary",parse:E=>{if(E.text===""||E.text==null)return null;const I=E.column&&E.column.lookup,R=I&&Q(I.options)?I.options():null;if(!R)return E.text;const k=String(E.text),y=R.find(q=>String(q.id)===k);if(y)return y.id;const T=k.trim().toLowerCase(),V=R.find(q=>String(q.label).toLowerCase()===T);return V?V.id:E.text},compare:B,defaults:{filter:"set",editor:"select",align:"start"},excel:"@",multiStorage:"multi",toClipboard:E=>D(E)?"":String(E),fromClipboard:E=>E},object:{base:"object",storage:"object",matches:E=>E!==null&&typeof E=="object"&&!(E instanceof Date),parse:E=>{try{return E.text===""?null:JSON.parse(E.text)}catch{return E.text}},compare:(E,I)=>B(E,I),format:E=>{const I=E.value;if(D(I))return"";if(typeof I=="string")return I;try{return JSON.stringify(I)}catch{return String(I)}},defaults:{filter:"none",editor:"none",align:"start"},excel:"@",toClipboard:E=>D(E)?"":typeof E=="string"?E:JSON.stringify(E),fromClipboard:E=>E}},x=["boolean","number","date","dateString","datetime","text","object"];function j(E,I,R,k){const y=R.get(E);if(y)return y;k.includes(E)&&G(`circular data type extends chain: ${[...k,E].join(" → ")}`);const T=I[E];T||G(`unknown data type "${E}"`);let V=null;T.extends&&(V=j(T.extends,I,R,[...k,E]));const q={...V||{},...T,name:E,defaults:{...V&&V.defaults||{},...T.defaults||{}}};return q.base||(q.base=V&&V.base||"text"),q.storage||(q.storage=V&&V.storage||"object"),R.set(E,q),q}function F(E,I){const R={...O,...a};if(I&&typeof I.dataType=="function"&&typeof I.names=="function")for(const y of I.names("dataType")){const T=I.dataType(y);T&&(R[y]=T)}if(K(E))for(const[y,T]of Object.entries(E))R[y]=T;const k=new Map;for(const y of x)j(y,R,k,[]);j("lookup",R,k,[]);for(const y of Object.keys(R))j(y,R,k,[]);for(const y of k.values())l(y.operators);return k}function C(E,I){if(E.base==="text"&&(!E.compare||E.compare===O.text.compare)){const R=$(I);return(k,y)=>D(k)?D(y)?0:1:D(y)?-1:R.compare(String(k),String(y))}return E.compare||B}function M(E,I){return I?E.multiStorage||"multi":E.storage||"object"}function L(E){return H(String(E).replace(/([a-z])([A-Z])/g,"$1 $2"))}}),$e("packages/core/src/columns/infer.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_SAMPLE",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"inferFromValues",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"inferColumnType",{enumerable:!0,get:function(){return Q}});const Z=W("packages/core/src/internal/util.js"),$=Z.infoOnce,B=Z.isNil,D=100;function K(G,H,_={}){const z=_.sampleSize??D,v=[];for(let S=0;S<G.length&&v.length<z;S++){const g=G[S];B(g)||typeof g=="number"&&Number.isNaN(g)||v.push(g)}if(v.length===0)return{type:"text",unanimous:!1,sampled:0};for(const[S,g]of H){if(typeof g.matches!="function")continue;let u=!0;for(let f=0;f<v.length;f++)if(!g.matches(v[f])){u=!1;break}if(u)return{type:S,unanimous:!0,sampled:v.length}}return _.quiet||$(`infer:${_.colId||"?"}`,`column "${_.colId||"?"}" has mixed or ambiguous values and was inferred as "text". Declare \`type\` on the column to get correct sorting, filtering and export.`),{type:"text",unanimous:!1,sampled:v.length}}function Q(G,H,_,z,v={}){const S=v.sampleSize??D,g=[];for(let u=0;u<H.length&&g.length<S;u++){const f=_(H[u]);B(f)||typeof f=="number"&&Number.isNaN(f)||g.push(f)}return K(g,z,{...v,colId:G}).type}}),$e("packages/core/src/columns/graph.js",function(e,W){"use strict";Object.defineProperty(e,"WHOLE_ROW",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"declarationOf",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"buildGraph",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"affectedBy",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"depsProxy",{enumerable:!0,get:function(){return z}});const Z=W("packages/core/src/internal/util.js"),$=Z.DEV,B=Z.fail,D=Z.isFunction,K=Z.warnOnce,Q="*";function G(v){const S=v.value||{};if(!D(S.compute))return{computed:!1,wholeRow:!1,deps:[],pure:!0};const u=S.pure!==!1;return S.deps===Q?{computed:!0,wholeRow:!0,deps:[],pure:u}:Array.isArray(S.deps)?{computed:!0,wholeRow:!1,deps:S.deps.slice(),pure:u}:(K(`deps:missing:${v.id}`,`computed column "${v.id}" declares no \`value.deps\`; treating it as \`deps: '*'\` (a whole-row dependency). Declare the dependencies to get precise invalidation.`),{computed:!0,wholeRow:!0,deps:[],pure:u})}function H(v){const S=new Map;for(const m of v)S.set(m.id,m);const g=new Map,u=new Map,f=new Set,a=new Set,r=new Set,t=new Set;for(const m of v){const d=G(m);if(!d.computed){g.set(m.id,[]);continue}a.add(m.id),(d.pure?r:t).add(m.id),d.wholeRow&&f.add(m.id);const h=[],s=[];for(const p of d.deps)(S.has(p)?h:s).push(p);g.set(m.id,h),s.length&&u.set(m.id,s)}for(const m of r)for(const d of g.get(m))t.has(d)&&B(`pure computed column "${m}" depends on impure column "${d}". Mark it \`value.pure: false\` or make the dependency pure.`);const n=[],o=new Map,l=[],c=m=>{const d=o.get(m);if(d!=="done"){if(d==="open"){const h=l.indexOf(m);B(`circular column dependency: ${[...l.slice(h),m].join(" → ")}`)}o.set(m,"open"),l.push(m);for(const h of g.get(m)||[])S.has(h)&&c(h);l.pop(),o.set(m,"done"),n.push(m)}};for(const m of v)c(m.id);const i=new Map;for(const m of v)i.set(m.id,[]);for(const m of v)for(const d of g.get(m.id)||[]){const h=i.get(d);h&&!h.includes(m.id)&&h.push(m.id)}if(f.size)for(const m of v){if(a.has(m.id))continue;const d=i.get(m.id);for(const h of f)d.includes(h)||d.push(h)}return{order:n,dependents:i,pure:r,impure:t,computed:a,deps:g,wholeRow:f,external:u,index:S}}function _(v,S){const g=Array.isArray(S)?S:[S],u=new Set,f=[...g];for(;f.length;){const a=f.shift();for(const r of v.dependents.get(a)||[])u.has(r)||(u.add(r),f.push(r))}for(const a of g)u.delete(a);return v.order.filter(a=>u.has(a))}function z(v,S,g){if(!$)return v;const u=S instanceof Set?S:new Set(S);return new Proxy(v,{get(f,a){return typeof a=="string"&&!u.has(a)&&!Object.hasOwn(f,a)&&K(`undeclared:${g}:${a}`,`computed column "${g}" read undeclared dependency "${a}". Add it to \`value.deps\` or the value will go stale.`),f[a]}})}}),$e("packages/core/src/model/rowkey.js",function(e,W){"use strict";Object.defineProperty(e,"KEY_DEPENDENT_FEATURES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"compositeKey",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"createRowKey",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"warnMissingKeys",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"groupPathKey",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"splitPathKey",{enumerable:!0,get:function(){return f}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.pathGetter,D=Z.isFunction,K=Z.isBlank,Q=["changes (rows.apply / rows.queue)","streaming dedupe","selection persistence","remote reload","cell comments"],G="";function H(a){if(a===null)return"\0n";if(a===void 0)return"\0u";const r=typeof a;if(r==="string")return a;if(r==="number"||r==="bigint"||r==="boolean")return String(a);if(a instanceof Date)return`\0d${a.getTime()}`;try{return`\0o${JSON.stringify(a)}`}catch{return"\0o?"}}function _(a){if(a.length===1)return H(a[0]);let r="";for(let t=0;t<a.length;t++)t&&(r+=G),r+=H(a[t]);return r}function z(a,r={}){const t=r.warn!==!1;if(D(a)){const n=a;return{stable:!0,fields:[],disabled:[],key(o,l){try{const c=n(o);return Array.isArray(c)?_(c):H(c)}catch(c){return $("rowKey.throw","rowKey function threw; falling back to index identity for the affected rows.",c),`#${l??-1}`}},keyEmpty(o){try{const l=n(o);return Array.isArray(l)?l.length===0||l.some(K):K(l)}catch{return!1}},missingFields(){return[]}}}if(Array.isArray(a)&&a.length>0){const n=a.filter(c=>typeof c=="string"),o=n.map(c=>B(c)),l=o.length;return{stable:!0,fields:n,disabled:[],key(c){const i=new Array(l);for(let m=0;m<l;m++)i[m]=o[m](c);return _(i)},keyEmpty(c){for(let i=0;i<l;i++)if(K(o[i](c)))return!0;return!1},missingFields(c){const i=[];for(let m=0;m<l;m++)K(o[m](c))&&i.push(n[m]);return i}}}if(typeof a=="string"&&a.length>0){const n=B(a);return{stable:!0,fields:[a],disabled:[],key(o){return H(n(o))},keyEmpty(o){return K(n(o))},missingFields(o){return K(n(o))?[a]:[]}}}return t&&$("rowKey.missing",`no rowKey configured, so rows are identified by object identity. This disables: ${Q.join(", ")}. Set rowKey to a field name, an array of field names, or a function.`),{stable:!1,fields:[],disabled:Q.slice(),key(n,o){if(n===null||typeof n!="object")return`#${o??0}:${String(n)}`;let l=v.get(n);return l===void 0&&(l=`#${S++}`,v.set(n,l)),l}}}const v=new WeakMap;let S=0;function g(a,r){if(!a||a.stable===!1||!D(a.keyEmpty)||!Array.isArray(r)||r.length===0)return;let t=0,n=null,o;for(let m=0;m<r.length;m++){const d=r[m];a.keyEmpty(d)&&(t++,n===null&&(n=D(a.missingFields)?a.missingFields(d):[],o=d))}if(t===0)return;const l=a.fields.length?a.fields.join(","):"(function)",c=n&&n.length?n.join(", "):a.fields.length?a.fields.join(", "):"the rowKey function",i=o!==null&&typeof o=="object"?Object.keys(o).join(", ")||"(no fields)":String(o);$(`rowKey.emptyValue:${l}`,`rowKey ${c} is missing on ${t} of ${r.length} rows; the first such row has: ${i}. Rows without a key value collapse onto one key, so selection, edits and rows.apply updates land on whichever row now shares it. Set rowKey to a field present on every row, or fix the source data.`)}function u(a){return _(a)}function f(a){return a.split(G)}}),$e("packages/core/src/columns/lookup.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_SEPARATOR",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"normaliseOption",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"flattenOptions",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"Lookup",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"toValueArray",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"createLookup",{enumerable:!0,get:function(){return a}});const Z=W("packages/core/src/internal/util.js"),$=Z.collator,B=Z.defaultCompare,D=Z.isFunction,K=Z.isNil,Q=Z.warnOnce,H=W("packages/core/src/model/rowkey.js").compositeKey,_=", ",z="";function v(r,t,n,o){if(r===null||typeof r!="object")return{id:r,label:r==null?"":String(r)};const l=r[t],c=r[n],i={id:l,label:c==null?String(l??""):String(c)};r.disabled&&(i.disabled=!0),r.variant&&(i.variant=r.variant),r.icon&&(i.icon=r.icon);const m=o?r[o]:r.group;return m!==void 0&&(i.group=m),i}function S(r,t,n=0,o=[],l=[]){for(const c of r||[]){const i=c&&typeof c=="object"?c[t]:null;if(l.push({raw:c,depth:n,path:o}),Array.isArray(i)&&i.length){const m=String(c&&typeof c=="object"?c.label??c.name??c.id??"":c);S(i,t,n+1,[...o,m],l)}}return l}function g(r){return!!r&&typeof r=="object"&&!Array.isArray(r)&&D(r.router&&r.router.subscribe)}class u{#e;#t;#n;#r;#o=[];#i=new Map;#s=new Map;#l=0;#a="idle";#u=null;#c;#d=null;#f=new Map;constructor(t,n={}){this.#e=t||{},this.#t=n.colId||"?",this.#n=n.locale,this.#r=n.onChange||null,this.#c=$(this.#n),Array.isArray(this.#e.options)?this.#h(this.#e.options):this.#e.options===void 0&&(this.#a="ready")}get colId(){return this.#t}get version(){return this.#l}get state(){return this.#a}get ready(){return this.#a==="ready"}get multiple(){return this.#e.multiple===!0}get separator(){return this.#e.separator??_}get allowCustom(){return this.#e.allowCustom===!0}get sortBy(){return this.#e.sortBy||"label"}get spec(){return this.#e}options(){return this.#o}setLocale(t){this.#n=t,this.#c=$(t)}#h(t){const n=this.#e,o=n.valueKey||"id",l=n.labelKey||"label",c=n.childrenKey||"children";this.#o=S(t,c).map(i=>{const m=v(i.raw,o,l,n.groupKey);return i.depth&&(m.depth=i.depth,m.path=i.path),m}),this.#i=new Map,this.#s=new Map,this.#o.forEach((i,m)=>{this.#i.set(i.id,i),this.#s.set(i.id,m)}),this.#a="ready",this.#l+=1}load(){if(this.#u)return this.#u;const t=this.#e.options;if(Array.isArray(t)||t===void 0)return this.#u=Promise.resolve(this.#o),this.#u;if(g(t))return this.#u=this.#p(t),this.#u;if(!D(t))return Q(`lookup:options:${this.#t}`,`column "${this.#t}" has an invalid \`lookup.options\`; expected an array, a function, or a router route`),this.#a="ready",this.#u=Promise.resolve([]),this.#u;this.#a="loading";let n;try{n=t()}catch(o){return this.#a="error",Q(`lookup:load:${this.#t}`,`column "${this.#t}" failed to load lookup options`,o),this.#u=Promise.resolve([]),this.#u}return!n||!D(n.then)?(this.#h(n),this.#u=Promise.resolve(this.#o),this.#r&&this.#r(this),this.#u):(this.#u=n.then(o=>(this.#h(o),this.#r&&this.#r(this),this.#o),o=>(this.#a="error",Q(`lookup:load:${this.#t}`,`column "${this.#t}" failed to load lookup options`,o),[])),this.#u)}refresh(){return this.#u=null,Array.isArray(this.#e.options)?(this.#h(this.#e.options),this.#r&&this.#r(this),Promise.resolve(this.#o)):this.load()}#p(t){if(this.#d)return Promise.resolve(this.#o);const n=this.#e,o=n.valueKey||"id",l=n.labelKey||"label",c=n.groupKey,i=D(t.map)?t.map:null,m=h=>v(i?i(h):h,o,l,c).id,d=h=>this.#m(h,i,o,l,c);return t.router.subscribe(t.predicate,d,{rowKey:m}),this.#d=()=>{D(t.router.detach)&&t.router.detach(d)},this.#a="ready",Promise.resolve(this.#o)}#m(t,n,o,l,c){const i=t&&t.add||[],m=t&&t.update||[],d=t&&t.remove||[];if(!(!i.length&&!m.length&&!d.length)){for(const h of i)this.#g(h,n,o,l,c);for(const h of m)this.#g(h,n,o,l,c);for(const h of d){if(!this.#f.has(h))continue;const s=this.#f.get(h);this.#f.delete(h),this.#i.delete(s);const p=this.#o.findIndex(w=>w.id===s);p>=0&&this.#o.splice(p,1)}this.#s=new Map(this.#o.map((h,s)=>[h.id,s])),this.#a="ready",this.#l+=1,this.#r&&this.#r(this)}}#g(t,n,o,l,c){const i=v(n?n(t):t,o,l,c);this.#f.set(H([i.id]),i.id);const m=this.#o.findIndex(d=>d.id===i.id);m>=0?this.#o[m]=i:this.#o.push(i),this.#i.set(i.id,i)}destroy(){this.#d&&(this.#d(),this.#d=null)}search(t,n){const o=this.#e;if(!D(o.search)){const i=String(t||"").toLowerCase();return Promise.resolve(i===""?this.#o:this.#o.filter(m=>m.label.toLowerCase().includes(i)))}const l=o.valueKey||"id",c=o.labelKey||"label";return Promise.resolve(o.search(t,n)).then(i=>(i||[]).map(m=>v(m,l,c,o.groupKey)))}option(t){return this.#i.get(t)}has(t){return this.#i.has(t)}label(t){if(K(t)||t==="")return"";const n=this.#i.get(t);if(n)return n.label;if(this.#a==="loading"||this.#a==="idle")return"";this.allowCustom||Q(`lookup:unknown:${this.#t}`,`column "${this.#t}" holds value ${JSON.stringify(t)} which is not in its lookup options. Showing the raw value; set \`lookup.unknownLabel\` or \`lookup.allowCustom\` to change that.`);const o=this.#e.unknownLabel;return D(o)?String(o(t)??""):typeof o=="string"?o:String(t)}text(t){if(this.multiple){const n=f(t);return n.length===0?"":n.map(o=>this.label(o)).join(this.separator)}return this.label(t)}dictionary(){return this.#o.map(t=>t.id)}sorted(){const t=this.sortBy;if(t==="optionOrder"||t==="count")return this.#o.slice();if(t==="value")return this.#o.slice().sort((o,l)=>B(o.id,l.id));const n=this.#c;return this.#o.slice().sort((o,l)=>n.compare(o.label,l.label))}comparator(){const t=this.sortBy,n=this.multiple,o=this.#c,l=this.#s;if(n&&t==="count")return(i,m)=>f(i).length-f(m).length;const c=n?i=>f(i)[0]:i=>i;return t==="value"?(i,m)=>B(c(i),c(m)):t==="optionOrder"?(i,m)=>{const d=l.has(c(i))?l.get(c(i)):Number.MAX_SAFE_INTEGER,h=l.has(c(m))?l.get(c(m)):Number.MAX_SAFE_INTEGER;return d-h}:(i,m)=>{const d=c(i),h=c(m);return K(d)?K(h)?0:1:K(h)?-1:o.compare(this.label(d),this.label(h))}}groupKey(t){return this.multiple?f(t).map(o=>String(o)).sort().join(z):K(t)?"":String(t)}countValues(t){return this.multiple?f(t).length:K(t)?0:1}contains(t,n,o){const l=this.multiple?f(t):K(t)?[]:[t],c=Array.isArray(n)?n:[n];switch(o){case"containsAll":return c.every(i=>l.includes(i));case"containsNone":return!c.some(i=>l.includes(i));default:return c.some(i=>l.includes(i))}}exportText(t,n="label"){return n==="value"?this.multiple?f(t).join(this.separator):K(t)?"":String(t):this.text(t)}exportColumns(){const t=this.multiple;return this.#o.map(n=>({id:n.id,label:n.label,has:o=>t?f(o).includes(n.id):o===n.id}))}}function f(r){return Array.isArray(r)?r:K(r)||r===""?[]:[r]}function a(r,t={}){const n=r.lookup;if(!n)return null;const o=new u(n,{colId:r.id,locale:t.locale,onChange:t.onChange});return!Array.isArray(n.options)&&n.options!==void 0&&o.load(),o}}),$e("packages/core/src/columns/value.js",function(e,W){"use strict";Object.defineProperty(e,"compileDisplay",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"warnImpureUse",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"ValuePipeline",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"defaultRowKey",{enumerable:!0,get:function(){return g}});const Z=W("packages/core/src/internal/util.js"),$=Z.getPath,B=Z.isFunction,D=Z.isNil,K=Z.Lru,Q=Z.warnOnce,H=W("packages/core/src/columns/graph.js").depsProxy,_="\0";function z(r,t={}){const n=t.locale,o=t.grid??null,l=t.context,c=r.value&&r.value.format,i=r.formatter||null,m=r.dataType&&r.dataType.format,d=r.lookup||null,h=(s,p,w)=>({value:s,data:w,row:p,column:r,colId:r.id,grid:o,context:l,locale:n});if(B(c))return(s,p,w)=>{const A=c(h(s,p,w));return A==null?"":String(A)};if(i){if(d){const s=i.kind==="text";return(p,w,A)=>i(s?d.text(p):p,h(p,w,A))}return(s,p,w)=>i(s,h(s,p,w))}return B(m)?(s,p,w)=>{const A=m(h(s,p,w));return A==null?"":String(A)}:d?s=>d.text(s):s=>D(s)?"":typeof s=="string"?s:String(s)}function v(r,t){!r||!r.value||r.value.pure!==!1||Q(`impure:${t}:${r.id}`,`column "${r.id}" is an impure computed column (\`value.pure: false\`) and is being used to ${t}. The result is not stable across passes.`)}class S{#e;#t;#n;#r;#o;#i;#s=new K(4096);constructor(t){this.#e=t.columns instanceof Map?t.columns:new Map((t.columns||[]).map(n=>[n.id,n])),this.#t=t.graph,this.#n=t.grid??null,this.#r=t.context,this.#i=t.stored||null,this.#o=t.rowKey||g}get graph(){return this.#t}setGraph(t){this.#t=t,this.#s.clear()}beginPass(){this.#s.clear()}endPass(){this.#s.clear()}invalidate(t){if(this.#s.size===0)return;const n=t&&t.rows?new Set([...t.rows].map(String)):null,o=t&&t.columns?[...t.columns]:null;if(!n&&!o){this.#s.clear();return}const l=o?this.#l(o):null;for(const c of[...this.#s.keys()]){const i=String(c).split(_);i.length===3&&(n&&!n.has(i[0])||l&&!l.has(i[2])||this.#s.delete(c))}}#l(t){const n=new Set,o=this.#t,l=[...t];for(;l.length;){const c=l.pop();if(!n.has(c)){n.add(c);for(const i of o?o.dependents.get(c)||[]:[])l.push(i)}}return n}value(t,n,o){const l=typeof t=="string"?this.#e.get(t):t;if(!l)return;if(!l.computed)return this.#u(l,n,o);if(l.value.pure!==!1&&this.#i&&o&&o.physical!=null&&this.#i.has(l.id))return this.#i.get(l.id,o.physical);if(l.volatile)return this.compute(l,n,o);if(l.value.pure===!1)return this.compute(l,n,o);const c=`${this.#a(n,o)}${_}${l.id}`;if(this.#s.has(c))return this.#s.get(c);const i=this.compute(l,n,o);return this.#s.set(c,i),i}#a(t,n){return`${this.#o(t,n)}${_}${u(t)}`}#u(t,n,o){if(this.#i&&o&&o.physical!=null&&this.#i.has(t.id))return this.#i.get(t.id,o.physical);if(t.field)return t.read?t.read(n):$(n,t.field)}compute(t,n,o){const l=this.#t,c=l&&l.wholeRow.has(t.id);let i;if(c)i=n??{};else{i={};const d=l&&l.deps.get(t.id)||[];for(const s of d)i[s]=this.value(s,n,o);const h=l&&l.external.get(t.id)||[];for(const s of h)i[s]=$(n,s);i=H(i,[...d,...h],t.id)}const m={data:n,row:o,column:t,grid:this.#n,context:this.#r};return t.value.compute(i,m)}values(t,n){const o={},l=this.#t?this.#t.order:[...this.#e.keys()];for(const c of l)o[c]=this.value(c,t,n);return o}text(t,n,o){const l=typeof t=="string"?this.#e.get(t):t;return l?l.formatValue(this.value(l,n,o),o,n):""}key(t,n,o){const l=typeof t=="string"?this.#e.get(t):t;if(!l)return"";const c=this.value(l,n,o);return B(l.value.key)?String(l.value.key(this.#c(l,c,n,o))):l.lookup?l.lookup.groupKey(c):D(c)?"":String(c)}quickFilterText(t,n,o){const l=typeof t=="string"?this.#e.get(t):t;if(!l)return"";if(B(l.value.quickFilterText)){const c=this.value(l,n,o);return String(l.value.quickFilterText(this.#c(l,c,n,o))??"")}return this.text(l,n,o)}#c(t,n,o,l){return{value:n,data:o,row:l,column:t,colId:t.id,grid:this.#n,context:this.#r}}parse(t,n,o,l){const c=typeof t=="string"?this.#e.get(t):t;if(!c)return n;const i={text:n,value:this.value(c,o,l),data:o,row:l,column:c,grid:this.#n,context:this.#r,locale:this.#n&&B(this.#n.get)?this.#n.get("locale"):void 0,formulaFunctions:this.#n&&B(this.#n.get)?this.#n.get("formulaFunctions"):void 0};return B(c.value.parse)?c.value.parse(i):c.dataType&&B(c.dataType.parse)?c.dataType.parse(i):n}validate(t,n,o,l,c){const i=typeof t=="string"?this.#e.get(t):t;if(!i||!B(i.edit.validate))return!0;const m=i.edit.validate({value:n,oldValue:o,data:l,row:c,column:i,grid:this.#n,context:this.#r});return m===!0||m===void 0?!0:String(m)}apply(t,n,o,l){const c=typeof t=="string"?this.#e.get(t):t;if(!c)return!1;const i=this.value(c,o,l);if(B(c.value.apply)){const m=c.value.apply({value:n,oldValue:i,data:o,row:l,column:c,grid:this.#n,context:this.#r});return this.#d(c,o,l),m!==!1}return c.field?i===n?!1:(c.write(o,n),this.#d(c,o,l),!0):(Q(`apply:${c.id}`,`column "${c.id}" has no \`field\` and no \`value.apply\`, so an edit cannot be written back.`),!1)}commit(t,n,o,l){const c=typeof t=="string"?this.#e.get(t):t;if(!c)return{ok:!1,value:void 0,oldValue:void 0,changed:!1,error:"unknown column"};const i=this.value(c,o,l),m=this.parse(c,n,o,l),d=this.validate(c,m,i,o,l);if(d!==!0)return{ok:!1,value:m,oldValue:i,changed:!1,error:d};const h=this.apply(c,m,o,l);return{ok:!0,value:m,oldValue:i,changed:h}}#d(t,n,o){if(this.#s.size===0)return;const l=this.#a(n,o);this.#s.delete(`${l}${_}${t.id}`);for(const c of this.#t?this.#t.dependents.get(t.id)||[]:[])this.#s.delete(`${l}${_}${c}`)}}function g(r,t){return t&&t.key!=null?String(t.key):u(r)}function u(r){if(r&&typeof r=="object"){let t=f.get(r);return t===void 0&&(t=`#${a++}`,f.set(r,t)),t}return String(r)}const f=new WeakMap;let a=0}),$e("packages/core/src/model/shadow.js",function(e,W){"use strict";Object.defineProperty(e,"MAX_TRACKED",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"DEFAULT_DEPTH",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"HISTORY_TICK_MAX_MS",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"HISTORY_TICK_MIN_MS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"historyTickFor",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"SHADOW_KINDS",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"ROLLING_KINDS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"FIT_SHADOW_KINDS",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"MAD_SCALE",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"DEFAULT_ANOMALY_THRESHOLD",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"SPEC_STATUS",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"POSITIONAL_KINDS",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"SHADOW_LABELS",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"specStatusOf",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"ShadowTracker",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"shadowsIn",{enumerable:!0,get:function(){return i}});const $=W("packages/core/src/internal/util.js").warnOnce,B=2e5,D=20,K=1e3,Q=50;function G(m){return Math.min(K,Math.max(Q,Math.floor(m)))}const H=Object.freeze(["updates","updatedAt","sinceUpdate","delta","deltaPercent","rate","history","firstValue","streak","rank","rankAsc","rankChange","percentile","quartile","zScore","shareOfTotal","anomalyScore","anomalyFlag","specStatus","rollingSum","rollingAvg","rollingMin","rollingMax","windowCoverage","cumulativeToDate","periodOverPeriod","rollingQuantile","windowApproximate","tsTrend","tsSeasonal","tsResidual","tsCoverage","tsSmoothed","tsSmoothingAlpha","tsSmoothingBeta","fitPredicted","fitResidual","fitInfluence","fitStdResidual","fitLeverage","fitCooksD"]),_=Object.freeze(["rollingSum","rollingAvg","rollingMin","rollingMax","windowCoverage","cumulativeToDate","periodOverPeriod","rollingQuantile","windowApproximate","tsTrend","tsSeasonal","tsResidual","tsCoverage","tsSmoothed","tsSmoothingAlpha","tsSmoothingBeta"]),z=Object.freeze(["fitPredicted","fitResidual","fitInfluence","fitStdResidual","fitLeverage","fitCooksD"]),v=.6745,S=3.5,g=Object.freeze({PASS:"PASS",WARN:"WARN",FAIL:"FAIL"}),u=Object.freeze(["rank","rankAsc","rankChange","percentile","quartile","zScore","shareOfTotal","anomalyScore","anomalyFlag"]),f=Object.freeze({updates:"Updates",updatedAt:"Updated at",sinceUpdate:"Since update",delta:"Change",deltaPercent:"Change %",rate:"Rate of change",history:"History",firstValue:"Baseline",streak:"Streak",rank:"Rank",rankAsc:"Rank, ascending",rankChange:"Rank change",percentile:"Percentile",quartile:"Quartile",zScore:"Z-score",shareOfTotal:"Share of total",anomalyScore:"Anomaly score",anomalyFlag:"Anomaly",specStatus:"Spec status",rollingSum:"Rolling sum",rollingAvg:"Rolling average",rollingMin:"Rolling minimum",rollingMax:"Rolling maximum",windowCoverage:"Window coverage",cumulativeToDate:"Cumulative to date",periodOverPeriod:"Period over period",rollingQuantile:"Rolling quantile",windowApproximate:"Window approximate",tsTrend:"Trend",tsSeasonal:"Seasonal",tsResidual:"Seasonal residual",tsCoverage:"Decomposition coverage",tsSmoothed:"Smoothed",tsSmoothingAlpha:"Smoothing α",tsSmoothingBeta:"Smoothing β",fitPredicted:"Predicted",fitResidual:"Residual",fitInfluence:"Influence",fitStdResidual:"Std. residual",fitLeverage:"Leverage",fitCooksD:"Cook's D"});function a(m,d){if(!d)return null;const h=Number.isFinite(Number(d.lower))?Number(d.lower):null,s=Number.isFinite(Number(d.upper))?Number(d.upper):null;if(h===null&&s===null||!Number.isFinite(m))return null;if(h!==null&&m<h||s!==null&&m>s)return g.FAIL;const p=Number.isFinite(Number(d.warnLower))?Number(d.warnLower):null,w=Number.isFinite(Number(d.warnUpper))?Number(d.warnUpper):null;return p!==null&&m<p||w!==null&&m>w?g.WARN:g.PASS}function r(m,d,h){if(!d||typeof d!="object")return null;if(d.kind!=="time")return d.kind!==void 0&&$(`shadow.history.window.kind:${m}`,`a 'history' shadow's 'window' only accepts {kind: 'time', span}; '${d.kind}' is not honoured (a plain count is already what 'depth' means, and a session has no span to divide into buckets), so it reported the original, unwindowed history.`),null;const s=d.minutes!=null?Number(d.minutes)*6e4:Number(d.span);if(!(s>0))return $(`shadow.history.window.span:${m}`,"a 'history' shadow's time window needs a positive 'span' (ms) or 'minutes'; it had none, so it reported the original, unwindowed history."),null;const p=Math.max(2,Math.floor(h)||D);return{span:s,bucketMs:Math.max(1,Math.floor(s/p))}}class t{#e;#t=new Map;#n=new Map;#r=new Map;#o=new Map;#i=new Map;#s=new Map;#l=0;#a;#u;#c;#d;#f=new Map;#h=null;#p=null;#m=null;constructor(d){this.#e=d.colId,this.#a=Math.max(2,d.depth||D),this.#u=Math.max(1,d.max||B),this.#c=d.now||(()=>Date.now()),this.#d=r(this.#e,d.historyWindow,this.#a),this.#d&&(this.#h=Math.floor(this.#c()/this.#d.bucketMs))}get colId(){return this.#e}get forgotten(){return this.#l}get size(){return this.#n.size}get historyWindow(){return this.#d}observe(d,h){const s=c(h);if(s===null)return;if(!this.#n.has(d)){this.#p=null,this.#m=null,this.#g(),this.#t.set(d,s),this.#n.set(d,s),this.#r.set(d,0),this.#o.set(d,this.#c()),this.#i.set(d,[s]),this.#d&&this.#f.set(d,[s]),this.#s.set(d,0);return}const p=this.#n.get(d);if(p===s)return;this.#p=null,this.#m=null,this.#n.set(d,s),this.#r.set(d,(this.#r.get(d)||0)+1),this.#o.set(d,this.#c());const w=this.#i.get(d)||[];w.push(s),w.length>this.#a&&w.splice(0,w.length-this.#a),this.#i.set(d,w);const A=Math.sign(s-p),P=this.#s.get(d)||0;this.#s.set(d,Math.sign(P)===A?P+A:A)}#g(){if(this.#n.size<this.#u)return;const d=this.#n.keys().next().value;d!==void 0&&(this.#t.delete(d),this.#n.delete(d),this.#r.delete(d),this.#o.delete(d),this.#i.delete(d),this.#f.delete(d),this.#s.delete(d),this.#l++)}rebase(){for(const[d,h]of this.#n)this.#t.set(d,h);this.#p=null,this.#m=null}reset(){this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#o.clear(),this.#i.clear(),this.#f.clear(),this.#s.clear(),this.#l=0,this.#p=null,this.#m=null,this.#d&&(this.#h=Math.floor(this.#c()/this.#d.bucketMs))}retain(d){const h=d instanceof Set?d:new Set(d);let s=0;for(const p of[...this.#n.keys()])h.has(p)||(this.#t.delete(p),this.#n.delete(p),this.#r.delete(p),this.#o.delete(p),this.#i.delete(p),this.#f.delete(p),this.#s.delete(p),s++);return s&&(this.#p=null,this.#m=null),s}advanceHistoryWindow(d=this.#c()){const h=this.#d;if(!h)return 0;const s=Math.floor(d/h.bucketMs),p=s-this.#h;if(!(p>0))return 0;const w=Math.min(p,this.#a);for(const[A,P]of this.#f){const b=this.#n.get(A);for(let O=0;O<w;O++)P.push(b);P.length>this.#a&&P.splice(0,P.length-this.#a)}return this.#h=s,p}read(d,h,s,p){switch(d){case"updates":return this.#r.has(h)?this.#r.get(h):0;case"updatedAt":{const w=this.#o.get(h);return w===void 0?null:new Date(w)}case"sinceUpdate":{const w=this.#o.get(h);return w===void 0?null:this.#c()-w}case"firstValue":return this.#t.has(h)?this.#t.get(h):null;case"delta":return this.#n.has(h)?this.#n.get(h)-this.#t.get(h):null;case"deltaPercent":{if(!this.#n.has(h))return null;const w=this.#t.get(h);return w?(this.#n.get(h)-w)/Math.abs(w)*100:null}case"rate":{const w=this.#i.get(h),A=this.#o.get(h);if(!w||w.length<2||A===void 0)return null;const P=this.#c()-A,b=w[w.length-1]-w[w.length-2];return P>0?b/P*1e3:b}case"history":return this.#d?this.#f.has(h)?[...this.#f.get(h)]:null:this.#i.has(h)?[...this.#i.get(h)]:null;case"streak":return this.#s.has(h)?this.#s.get(h):0;case"specStatus":return this.#n.has(h)?a(this.#n.get(h),p):null;default:return u.includes(d)?this.#A(d,h,s,p):null}}#y(d){if(d){if(this.#m&&this.#m.only===d)return this.#m.view;const h=this.#b(d);return this.#m={only:d,view:h},h}return this.#p?this.#p:(this.#p=this.#b(null),this.#p)}#b(d){const h=[];for(const[F,C]of this.#n)d&&!d.has(F)||h.push(C);const s=h.sort((F,C)=>F-C);let p=0,w=0,A=0,P=0;for(const F of s){P+=F,p++;const C=F-w;w+=C/p,A+=C*(F-w)}const b=[];for(const[F,C]of this.#t)d&&!d.has(F)||b.push(C);const O=p?n(s):0,x=s.map(F=>Math.abs(F-O)).sort((F,C)=>F-C),j=p?n(x):0;return{sorted:s,baseline:b.sort((F,C)=>F-C),sum:P,mean:p?w:0,sd:p>1?Math.sqrt(A/(p-1)):0,median:O,mad:j}}#A(d,h,s,p){if(!this.#n.has(h)||s&&!s.has(h))return null;const w=this.#n.get(h),A=this.#y(s),P=A.sorted.length;if(!P)return null;switch(d){case"rank":return P-l(A.sorted,w)+1;case"rankAsc":return o(A.sorted,w)+1;case"rankChange":{if(!this.#t.has(h)||!A.baseline.length)return null;const b=A.baseline.length-l(A.baseline,this.#t.get(h))+1,O=P-l(A.sorted,w)+1;return b-O}case"percentile":return l(A.sorted,w)/P*100;case"quartile":{const b=l(A.sorted,w)/P;return Math.min(4,Math.max(1,Math.ceil(b*4)))}case"zScore":return A.sd?(w-A.mean)/A.sd:null;case"anomalyScore":return A.mad?v*(w-A.median)/A.mad:null;case"anomalyFlag":{if(!A.mad)return null;const b=p&&Number.isFinite(Number(p.threshold))?Number(p.threshold):S;return Math.abs(v*(w-A.median)/A.mad)>b}case"shareOfTotal":return A.sum?w/A.sum*100:null;default:return null}}}function n(m){const d=m.length;if(!d)return 0;const h=(d-1)*.5,s=Math.floor(h),p=Math.ceil(h);return s===p?m[s]:m[s]+(h-s)*(m[p]-m[s])}function o(m,d){let h=0,s=m.length;for(;h<s;){const p=h+s>>1;m[p]<d?h=p+1:s=p}return h}function l(m,d){let h=0,s=m.length;for(;h<s;){const p=h+s>>1;m[p]<=d?h=p+1:s=p}return h}function c(m){if(m==null||m==="")return null;if(m instanceof Date){const h=m.getTime();return Number.isFinite(h)?h:null}const d=typeof m=="number"?m:Number(m);return Number.isFinite(d)?d:null}function i(m){const d=[];for(const h of m||[]){const s=h.shadow;if(!s)continue;const p=typeof s=="string"?{kind:s}:s,w=p.kind;H.includes(w)&&(_.includes(w)||z.includes(w)||d.push({colId:h.id||h.field,of:p.of||h.field||h.id,kind:w,depth:p.depth,historyWindow:w==="history"?p.window:void 0}))}return d}}),$e("packages/core/src/columns/model.js",function(e,W){"use strict";Object.defineProperty(e,"BUILTIN_DEFAULTS",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"normaliseAlign",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"normaliseVAlign",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"expandColumn",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"ColumnModel",{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,"flattenTree",{enumerable:!0,get:function(){return se}});const Z=W("packages/core/src/internal/util.js"),$=Z.expand,B=Z.fail,D=Z.getPath,K=Z.humanise,Q=Z.isFunction,G=Z.isObject,H=Z.merge,_=Z.pathGetter,z=Z.pathSetter,v=Z.toArray,S=Z.uid,g=Z.warnOnce,f=W("packages/core/src/format/index.js").compileFormat,a=W("packages/core/src/columns/datatypes.js"),r=a.comparatorFor,t=a.createTypeRegistry,n=a.storageKind,o=W("packages/core/src/columns/infer.js"),l=o.inferColumnType,c=o.DEFAULT_SAMPLE,i=W("packages/core/src/columns/graph.js"),m=i.buildGraph,d=i.affectedBy,s=W("packages/core/src/columns/lookup.js").createLookup,p=W("packages/core/src/columns/value.js"),w=p.compileDisplay,A=p.ValuePipeline,P=p.warnImpureUse,O=W("packages/core/src/model/shadow.js").FIT_SHADOW_KINDS,x=Object.freeze({geometry:"geometry",list:"list"}),j={value:{pure:!0},cell:{},edit:{enabled:!1},sort:{enabled:!0,direction:null,order:0,nullsFirst:!1},filter:{enabled:!0,type:"text"},group:{enabled:!1,index:-1,explode:!1},pivot:{enabled:!1,index:-1},total:null,layout:{width:150,min:40,max:null,flex:0,pin:null,hidden:!1,resizable:!0,movable:!0,lockVisible:!1,lockPosition:!1},header:{},facet:{},export:{lookup:"label",csv:!0,excel:!0},allowGroup:!0,allowPivot:!0,allowTotal:!0,nullable:!0,quickFilter:!0},F={centre:"center"},C=new Set(["start","center","end","left","right"]);function M(he){if(typeof he!="string")return;const te=he.toLowerCase();return F[te]?F[te]:C.has(te)?te:void 0}function L(he){if(typeof he!="string")return;const te=he.toLowerCase();return te==="center"||te==="centre"?"middle":te==="top"||te==="middle"||te==="bottom"?te:void 0}const E=["cell","layout","header"];function I(he){if(!G(he))return{};const te={...he},ae=(ge,be)=>{if(he[ge]===void 0)return;const je=$(he[ge],be);je&&E.includes(ge)&&!G(he[ge])&&delete je.enabled,te[ge]=je};return ae("sort","direction"),ae("filter","type"),ae("cell","render"),ae("edit","editor"),ae("layout","width"),ae("group","index"),ae("pivot","index"),ae("header","render"),ae("facet","strategy"),te}function R(he,te){const ae={...he||{}},ge=G(te)&&G(te.layout)&&te.layout.width!==void 0;return ae.fit==="content"&&!ge&&delete ae.width,ae}const k=new Set(["allowGroup","allowPivot","allowTotal","cell","colSpan","contextMenu","diff","edit","export","facet","field","filter","filterRow","format","grandTotal","group","groupTotal","header","headerControls","id","layout","lookup","nullable","pivot","preset","quickFilter","rowSpan","running","shadow","showWhen","sort","spec","tags","title","total","type","typeOptions","validation","value","verticalAlign"]),y=new Set(["collapsible","columns","facet","header","id","marryChildren","openByDefault","showWhen","title"]);function T(he,te,ae,ge){const be=ae==="columnGroup"?"column group":"column";for(const je of Object.keys(he))if(!te.has(je)){if(je==="timeZone"&&ae==="column"){g("column.timeZone",`\`timeZone\` is not a column option, so it had no effect on column "${ge}". A date column stores, displays, sorts and filters in the grid-level \`timeZone\` (else the viewer's); set \`timeZone\` on the grid, not the column.`);continue}g(`${ae}.unknown:${je}`,`'${je}' is not a configuration key this grid recognises, so it had no effect on ${be} "${ge}". Check the spelling against the reference.`)}}function V(he){G(he.cell)&&he.cell.autoHeight!==void 0&&g("column.cell.autoHeight",`\`cell.autoHeight\` is not a column option, so it had no effect on column "${he.id||he.field||"(unnamed)"}". Rows grow to fit with the grid-level \`autoHeight\`; \`cell.wrap\` lets this column's text wrap.`)}function q(he,te){const ae=te&&Q(he.defaultsFor)?he.defaultsFor(te):null,ge={...he.defaults||{},...G(ae)?ae:{}},be={};return ge.align&&(be.align=ge.align,be.cell={align:ge.align},be.header={align:ge.align}),ge.filter&&(be.filter=ge.filter==="none"?{enabled:!1,type:"none"}:{enabled:!0,type:ge.filter}),ge.editor&&(be.edit=ge.editor==="none"?{editor:null}:{editor:ge.editor}),ge.total&&(be.total=ge.total),ge.render&&(be.cell={...be.cell||{},render:ge.render}),he.export&&(be.export={...he.export}),be}function Y(he){if(typeof he=="string")return he.trim()?[he.trim()]:[];if(!Array.isArray(he))return[];const te=[];for(const ae of he){if(typeof ae!="string")continue;const ge=ae.trim();ge&&!te.includes(ge)&&te.push(ge)}return te}class J{#e=new Map;#t=[];#n=[];#r=new WeakMap;#o;#i;#s;#l;#a;#u;#c(te,ae,ge){const be=this.#d(te,ae,ge);if(typeof be!="string"||!this.#f)return be??null;const je=ae&&ae.totals&&ae.totals.implement;if(je&&Q(je[be])){const Ce=je[be];return Ce.totalName=be,Ce}const xe=this.#f.totalFn?.(be);return Q(xe)?xe:be}#d(te,ae,ge){if(typeof te!="string")return te;const be=ae&&ae.totals&&ae.totals.supported;if(!Array.isArray(be)||be.includes(te))return te;const je=be.length?be.join(", "):"none";return B(`column "${ge}" is typed ${ae.name||"a type"}, for which the total "${te}" is not meaningful. Supported: ${je}. Aggregating it anyway would produce a confident wrong number.`),te}#f;#h;#p;#m;#g;#y;#b=!1;#A;#w;constructor(te={}){this.#i=I(te.columnDefaults||{}),this.#s=te.columnPresets||{},this.#a=te.locale,this.#l=te.timeZone,this.#u=L(te.verticalAlign),this.#f=te.registry||null,this.#h=te.grid||null,this.#p=te.context,this.#A=te.sampleSize??c,this.#w=te.onChange||null,this.#y=Q(te.rowKey)?te.rowKey:void 0,this.#o=t(te.dataTypes,this.#f);const{leaves:ae,groups:ge}=se(te.columns||[]);this.#n=ge;for(const be of ae){be.facet!==void 0&&this.#r.set(be.def,be.facet);const je=this.#S(be.def,null);if(je.groupPath=be.path,this.#e.has(je.id)){g(`columns.duplicate:${je.id}`,`two columns resolve to the id '${je.id}', so the second is ignored. An id defaults to the column's field, so declare an explicit \`id\` when two columns read the same field.`);continue}be.column=je,this.#e.set(je.id,je),this.#t.push(je.id)}this.#P(te.stored||null)}#S(te,ae){T(te,k,"column",te.id||te.field||"(unnamed)"),V(te);const ge=I(te),be=v(te.preset),je=be.map(Ee=>{const Ge=this.#s[Ee];return Ge?I(Ge):(g(`preset:${Ee}`,`unknown column preset "${Ee}"; ignoring`),{})}),xe=this.#O(ge,je,ae),Ce=this.#o.get(xe)||this.#o.get("text");if(!this.#o.has(xe)&&te.type){const Ee=x[xe];g(`type:${xe}`,`unknown data type "${xe}"; falling back to "text"`+(Ee?`. It is registered by importing '@toclocoinc/lattice-grid/modules/${Ee}'.`:""))}const ke=Q(Ce.items)?this.#C(ge,je,te.id||te.field||"(unnamed)"):null;let ye=j;ye=H(ye,this.#i),te.type!==!1&&(ye=H(ye,q(Ce,ke)));for(const Ee of je)ye=H(ye,Ee);this.#r.has(te)&&(ye=H(ye,I({facet:this.#r.get(te)}))),ye=H(ye,ge);const ve=ye.edit;ve&&ve.editor&&ve.enabled!==!0&&!Q(ve.enabled)&&(te.edit||{}).editor&&g(`column.editor-not-enabled:${te.id||te.field}`,`column '${te.id||te.field}' names the editor '${ve.editor}' but does not enable editing, so it stays read-only. Add \`enabled: true\`, or use \`edit: true\` and set \`editor\` alongside it.`);const Se=te.id||te.field||S("col");if(te.shadow&&!Q(ye.value&&ye.value.compute)){const Ee=typeof te.shadow=="string"?{kind:te.shadow}:te.shadow,Ge=Ee.of||te.field||Se,Ye=O.includes(Ee.kind),tt=Ye?Ee.model||Ee:null,st=Ye&&tt?[...Array.isArray(tt.predictors)?tt.predictors:[],tt.response].filter(Boolean):null;ye.value={...ye.value||{},deps:st&&st.length?st:Ee.orderBy&&Ee.orderBy!==Ge?[Ge,Ee.orderBy]:[Ge],pure:!1,compute:(ft,mt)=>{const St=mt.grid&&mt.grid.statistics;if(!St)return null;const jt=mt.row&&mt.row.key||St.keyOf(mt.data);if(!jt)return null;if(Ye){if(!Q(St.fitShadow))return null;const Pt=Ee.model?{...Ee.model,threshold:Ee.threshold}:Ee;return St.fitShadow(Ee.kind,jt,Pt)}return St.shadow(Ge,Ee.kind,jt,Ee.scope,Ee)}}}if(te.running&&!Q(ye.value&&ye.value.compute)){const Ee=typeof te.running=="string"?{kind:te.running}:te.running,Ge=Ee.of||te.field||Se;ye.value={...ye.value||{},deps:[Ge],pure:!1,compute:(Ye,tt)=>{const st=tt.grid&&tt.grid.statistics;if(!st||!Q(st.running))return null;const ft=tt.row&&tt.row.key||st.keyOf(tt.data);return ft?st.running(Ge,Ee.kind||"total",ft):null}},te.sort===void 0&&(ye.sort={...ye.sort||{},enabled:!1})}const Le=te.field??(Q(ye.value&&ye.value.compute)?null:te.id??null),De=Q(ye.value&&ye.value.compute),He={id:Se,field:Le,shadow:te.shadow||null,running:te.running||null,spec:te.spec||null,validation:te.validation||null,volatile:!!(te.shadow||te.running),title:ye.title??K(Le||Se),type:Ce.name,dataType:Ce,itemType:ke,nullable:ye.nullable!==!1,align:M(ge.cell&&ge.cell.align||ge.align||ye.cell&&ye.cell.align||ye.align||Ce.defaults&&Ce.defaults.align)||"start",verticalAlign:L(ge.cell&&ge.cell.verticalAlign||ge.verticalAlign||ye.cell&&ye.cell.verticalAlign||ye.verticalAlign)||this.#u,rowSpan:Q(ye.rowSpan)?ye.rowSpan:null,colSpan:Q(ye.colSpan)?ye.colSpan:null,value:{pure:!0,...ye.value||{}},cell:{...ye.cell||{}},edit:{...ye.edit||{}},sort:{...ye.sort||{}},filter:{...ye.filter||{}},group:{enabled:!1,index:-1,explode:!1,...ye.group||{}},pivot:{enabled:!1,index:-1,...ye.pivot||{}},total:this.#c(ye.total,Ce,te.id||te.field||"(unnamed)"),groupTotal:ye.groupTotal===void 0?null:this.#c(ye.groupTotal,Ce,te.id||te.field||"(unnamed)"),grandTotal:ye.grandTotal===void 0?null:this.#c(ye.grandTotal,Ce,te.id||te.field||"(unnamed)"),tags:Y(ye.tags),typeOptions:ye.typeOptions??null,...G(ye[xe])?{[xe]:ye[xe]}:{},layout:R(ye.layout,ge),header:{...ye.header||{}},contextMenu:ye.contextMenu===void 0?null:ye.contextMenu,facet:{...ye.facet||{}},export:{...ye.export||{}},allowGroup:ye.allowGroup!==!1,allowPivot:ye.allowPivot!==!1,allowTotal:ye.allowTotal!==!1,quickFilter:ye.quickFilter!==!1,def:te,format:ye.format,presets:be,inferred:ae!=null&&!te.type,computed:De,diff:te.diff===void 0?void 0:!!te.diff,read:Le?_(Le):null,write:Le?z(Le):null};He.cell.align=M(ge.cell&&ge.cell.align)||He.align,He.header.align=M(ge.header&&ge.header.align)||He.align;const Ze=ye.lookup||null;return He.lookup=Ze?s({id:Se,lookup:Ze},{locale:this.#a,onChange:()=>{this.#w&&this.#w("lookup",{colId:Se})}}):null,He.group.explode&&He.lookup&&He.lookup.multiple&&g(`explode:${Se}`,`column "${Se}" has \`group.explode\`, so rows appear under each of their values and totals double-count. Group footers should be annotated accordingly.`),this.#v(He),He}#v(te){te.formatter=f(te.format,te.dataType,this.#a,this.#l,te.id),te.formatValue=w(te,{locale:this.#a,grid:this.#h,context:this.#p}),te.itemCompare=te.itemType?r(te.itemType,this.#a):null,te.compare=Q(te.value.compare)?te.value.compare:te.lookup?te.lookup.comparator():Q(te.dataType.compareFor)?te.dataType.compareFor(te):r(te.dataType,this.#a),te.excel=te.formatter&&te.formatter.ooxml||te.dataType&&te.dataType.excel||"General",te.storeKind=n(te.dataType,!!(te.lookup&&te.lookup.multiple))}#C(te,ae,ge){let be=G(te.typeOptions)?te.typeOptions:null;for(let ke=ae.length-1;!be&&ke>=0;ke--)G(ae[ke].typeOptions)&&(be=ae[ke].typeOptions);!be&&G(this.#i.typeOptions)&&(be=this.#i.typeOptions);const je=be&&be.of!==void 0?be.of:"text",xe=typeof je=="string"?this.#o.get(je):void 0;return xe&&!Q(xe.items)&&xe.storage!=="object"?xe:(g(`type:of:${String(je)}`,`column "${ge}" names "${String(je)}" as its item type (typeOptions.of), which is not ${xe?"a scalar data type":"a known data type"}; its items are read as text.`),this.#o.get("text"))}#O(te,ae,ge){if(te.type===!1)return"text";if(te.type)return te.type;for(let be=ae.length-1;be>=0;be--)if(ae[be].type)return ae[be].type;if(this.#i.type)return this.#i.type;if(te.shadow){const be=typeof te.shadow=="string"?te.shadow:te.shadow.kind;if(be==="fitInfluence")return"boolean";if(be==="fitPredicted"||be==="fitResidual"||be==="fitStdResidual"||be==="fitLeverage"||be==="fitCooksD"||be==="tsTrend"||be==="tsSeasonal"||be==="tsResidual"||be==="tsCoverage"||be==="tsSmoothed"||be==="tsSmoothingAlpha"||be==="tsSmoothingBeta")return"number"}return ge||(te.lookup?"lookup":"text")}#P(te){const ae=this.all();this.#m=m(ae),this.#g?this.#g.setGraph(this.#m):this.#g=new A({columns:this.#e,graph:this.#m,grid:this.#h,context:this.#p,stored:te||null,rowKey:this.#y});const ge=this.#g;for(const be of ae)be.getValue=(je,xe)=>ge.value(be,je,xe)}all(){return this.#t.map(te=>this.#e.get(te))}visible(){return this.all().filter(te=>!te.layout.hidden)}get(te){return this.#e.get(te)}groups(){const te=ae=>{const ge=[];for(const be of ae)Array.isArray(be.columns)?ge.push({...be,columns:te(be.columns)}):be.column&&ge.push(be.column);return ge};return te(this.#n)}graph(){return this.#m}pipeline(){return this.#g}types(){return this.#o}affectedBy(te){return d(this.#m,te)}value(te,ae,ge){return this.#g.value(te,ae,ge)}text(te,ae,ge){return this.#g.text(te,ae,ge)}checkImpure(te,ae){P(this.#e.get(te),ae)}setLocale(te){this.#a=te;for(const ae of this.all())ae.lookup&&ae.lookup.setLocale(te),this.#v(ae);this.#w&&this.#w("locale",{locale:te})}infer(te){const ae={};if(this.#b||!Array.isArray(te)||te.length===0)return ae;this.#b=!0;let ge=!1;for(const be of this.all()){const je=be.def;if(je.type!==void 0||!be.field||be.computed||be.lookup||this.#M(be))continue;const xe=be.read||(ye=>D(ye,be.field)),Ce=l(be.id,te,xe,this.#o,{sampleSize:this.#A});if(Ce===be.type)continue;ae[be.id]=Ce;const ke=this.#S(je,Ce);ke.groupPath=be.groupPath,ke.layout={...ke.layout,...ee(be.layout)},this.#e.set(be.id,ke),we(this.#n,be.id,ke),ge=!0}return ge&&this.#P(null),ae}redecorate(te,ae,ge={}){const be=this.#e.get(te);if(!be){g(`redecorate:${te}`,`columns.decorate('${te}', …): no column with id '${te}'.`);return}const je=be.def||{},xe={...G(je.cell)?je.cell:{}};xe.decoration=ae??void 0,ge&&"variant"in ge&&(xe.variant=ge.variant);const Ce={...je,cell:xe};this.#r.has(je)&&this.#r.set(Ce,this.#r.get(je));const ke=this.#S(Ce,be.type);return ke.groupPath=be.groupPath,ke.layout={...ke.layout,...ee(be.layout)},be.lookup&&be.lookup!==ke.lookup&&Q(be.lookup.destroy)&&be.lookup.destroy(),this.#e.set(te,ke),we(this.#n,te,ke),this.#P(null),this.#w&&this.#w("decorate",{colId:te}),ke}destroy(){for(const te of this.#e.values())te.lookup&&Q(te.lookup.destroy)&&te.lookup.destroy()}#M(te){for(const ae of te.presets){const ge=this.#s[ae];if(ge&&ge.type)return!0}return!!this.#i.type}#E(te){return!te.computed&&Q(te.dataType&&te.dataType.toStorage)}storeReader(te){if(te.computed)return ae=>this.#g.value(te,ae,null);if(this.#E(te)){const ae=te.dataType.toStorage,ge={timeZone:this.#l,colId:te.id,itemType:te.itemType||null};return be=>ae(te.read(be),ge)}return te.read}storeValue(te,ae){if(!(!te||te.computed)&&Q(te.read))return this.storeReader(te)(ae)}storeSchema(){const te=[];for(const ae of this.all()){if(ae.computed&&ae.value.pure===!1||!ae.computed&&!ae.field)continue;const ge=this.storeReader(ae);let be=null;!ae.computed&&!this.#E(ae)&&typeof ae.field=="string"&&!ae.lookup&&(be=ae.field);const je={id:ae.id,kind:ae.storeKind,nullable:ae.nullable,read:ge};be!==null&&(je.field=be),ae.lookup&&(je.dictionary=ae.lookup.dictionary()),te.push(je)}return te}state(){return this.all().map(te=>({id:te.id,width:te.layout.width,flex:te.layout.flex||void 0,hidden:!!te.layout.hidden,pin:te.layout.pin??null,sort:te.sort.direction??null,sortIndex:te.sort.direction?te.sort.order??0:null,groupIndex:te.group.enabled?te.group.index??0:null,pivotIndex:te.pivot.enabled?te.pivot.index??0:null,total:typeof te.total=="string"?te.total:null,groupTotal:typeof te.groupTotal=="string"?te.groupTotal:void 0,grandTotal:typeof te.grandTotal=="string"?te.grandTotal:void 0,decoration:te.cell&&te.cell.decoration!=null?ne(te.cell.decoration):void 0,variant:te.cell&&te.cell.variant!=null?ne(te.cell.variant):void 0}))}applyState(te,ae={}){const ge={applied:[],skipped:[]},be=Array.isArray(te)?te:te&&te.columns||[],je=!Array.isArray(te)&&te&&te.columnOrder||null;for(const Ce of be){if(!Ce||!Ce.id){ge.skipped.push({key:"?",reason:"no id"});continue}let ke=this.#e.get(Ce.id);if(!ke){ge.skipped.push({key:Ce.id,reason:"unknown column"});continue}if(Object.hasOwn(Ce,"decoration")||Object.hasOwn(Ce,"variant")){const ye=ke.cell?ke.cell.decoration:void 0,ve=Ce.decoration??null,Se=Object.hasOwn(Ce,"variant"),Le=Se&&!ie(ke.cell?ke.cell.variant:void 0,Ce.variant);(!ie(ye,ve)||Le)&&(this.redecorate(Ce.id,ve,Se?{variant:Ce.variant??void 0}:{}),ke=this.#e.get(Ce.id)||ke)}Ce.width!=null&&(ke.layout.width=Ce.width),Ce.flex!=null&&(ke.layout.flex=Ce.flex),Ce.hidden!=null&&(ke.layout.hidden=!!Ce.hidden),Ce.pin!==void 0&&(ke.layout.pin=Ce.pin),Ce.sort!==void 0&&(ke.sort.direction=Ce.sort),Ce.sortIndex!=null&&(ke.sort.order=Ce.sortIndex),Ce.groupIndex!=null&&(ke.group.enabled=!0,ke.group.index=Ce.groupIndex),Ce.pivotIndex!=null&&(ke.pivot.enabled=!0,ke.pivot.index=Ce.pivotIndex),Ce.total!==void 0&&(ke.total=Ce.total),Ce.groupTotal!==void 0&&(ke.groupTotal=Ce.groupTotal),Ce.grandTotal!==void 0&&(ke.grandTotal=Ce.grandTotal),ge.applied.push(Ce.id)}const xe=je||(ae&&ae.keepOrder?[]:be.map(Ce=>Ce&&Ce.id).filter(Boolean));if(xe.length){const Ce=xe.filter(ye=>this.#e.has(ye)),ke=this.#t.filter(ye=>!Ce.includes(ye));this.#t=[...Ce,...ke]}return this.#w&&this.#w("state",ge),ge}move(te,ae){this.#T(te,ae)&&(this.#x(),this.#w&&this.#w("move",{id:te,to:ae}))}reorder(te){const ae={applied:[],skipped:[]},ge=[];let be=0;for(const je of Array.isArray(te)?te:[]){const xe=be++;this.#T(je,xe)&&(ae.applied.push(je),ge.push({id:je,to:xe}))}if(!ge.length)return ae;if(this.#x(),this.#w)for(const je of ge)this.#w("move",je);return ae}#T(te,ae){const ge=this.#t.indexOf(te);if(ge===-1||Math.max(0,Math.min(Number(ae)||0,this.#t.length-1))===ge)return!1;const je=this.#e.get(te);if(je.layout.movable===!1||je.layout.lockPosition)return g(`move:${te}`,`column "${te}" is not movable; the move was ignored`),!1;const xe=this.#N(te,ae);return xe?(g(`move.married:${xe}`,`band "${xe}" declares marryChildren, so its columns stay together; the move was ignored`),!1):(this.#t.splice(ge,1),this.#t.splice(Math.max(0,Math.min(ae,this.#t.length)),0,te),!0)}#N(te,ae){if(!this.#n||!this.#n.length)return null;const ge=this.#t.filter(Ce=>Ce!==te),be=Math.max(0,Math.min(ae,ge.length)),je=(Ce,ke)=>{if(Array.isArray(Ce.columns)){for(const ve of Ce.columns)je(ve,ke);return ke}const ye=Ce.column?Ce.column.id:Ce.id;return ye&&ke.push(ye),ke},xe=Ce=>{for(const ke of Ce){if(!Array.isArray(ke.columns))continue;if(ke.marryChildren===!0){const ve=je(ke,[]),Se=ve.includes(te),Le=ve.map(De=>ge.indexOf(De)).filter(De=>De>=0);if(Le.length){const De=Math.min(...Le),He=Math.max(...Le);if(Se?be<De||be>He+1:be>De&&be<=He)return ke.id}}const ye=xe(ke.columns);if(ye)return ye}return null};return xe(this.#n)}#x(){const te=new Map(this.#t.map((be,je)=>[be,je])),ae=be=>{if(!Array.isArray(be.columns)){const xe=be.column?be.column.id:be.id;return te.has(xe)?te.get(xe):1/0}let je=1/0;for(const xe of be.columns)je=Math.min(je,ae(xe));return je},ge=be=>{be.sort((je,xe)=>ae(je)-ae(xe));for(const je of be)Array.isArray(je.columns)&&ge(je.columns)};ge(this.#n)}#B(te){const ae=ge=>{for(let be=0;be<ge.length;be++){const je=ge[be];if(Array.isArray(je.columns)){const xe=ae(je.columns);if(xe)return xe}else if(je.column&&je.column.id===te)return ge.splice(be,1)[0]}return null};return ae(this.#n)}#_(te){const ae=[];for(let ge=te.length-1;ge>=0;ge--){const be=te[ge];Array.isArray(be.columns)&&(ae.push(...this.#_(be.columns)),be.columns.length===0&&(ae.push(be.id),te.splice(ge,1)))}return ae}#z(){const te=(ae,ge,be)=>{for(const je of ae)Array.isArray(je.columns)?te(je.columns,[...ge,je.id]):je.column&&(je.column.groupPath=ge)};te(this.#n,[])}#D(te){const ae=new Set(te),ge=this.#t.filter(Ce=>ae.has(Ce));if(!ge.length)return;const be=Math.min(...ge.map(Ce=>this.#t.indexOf(Ce))),je=this.#t.slice(0,be).filter(Ce=>!ae.has(Ce)),xe=this.#t.slice(be).filter(Ce=>!ae.has(Ce));this.#t=[...je,...ge,...xe]}#q(te){const ae=[],ge=be=>{if(Array.isArray(be.columns))for(const je of be.columns)ge(je);else be.column&&ae.push(be.column.id)};return ge(te),ae}#$(te){const ae=ge=>{for(const be of ge){if(!Array.isArray(be.columns))continue;if(be.id===te)return{node:be,parent:ge};const je=ae(be.columns);if(je)return je}return null};return ae(this.#n)}groupColumns(te,ae={}){const ge=v(te).filter(ke=>this.#e.has(ke));if(!ge.length)return g("columns.group.empty","groupColumns was given no known column ids; nothing was grouped."),null;for(const ke of ge)if(this.#e.get(ke).layout.lockPosition)return g(`columns.group.locked:${ke}`,`column "${ke}" is position-locked and cannot be grouped.`),null;const be=ae.groupId?this.#$(ae.groupId):null;if(ae.groupId&&!be)return g(`columns.group.unknown:${ae.groupId}`,`no band "${ae.groupId}" to add to; nothing was grouped.`),null;let je=null;if(!be&&ae.id!=null&&(je=String(ae.id),this.#$(je)||this.#e.has(je)))return g(`columns.group.idtaken:${je}`,`band id "${je}" is already in use; nothing was grouped.`),null;const xe=ge.map(ke=>this.#B(ke)).filter(Boolean);if(!xe.length)return null;let Ce;if(be)be.node.columns.push(...xe),Ce=be.node.id;else{const ke={id:je||S("grp"),title:ae.title||"",collapsible:!1,openByDefault:!0,showWhen:"always",marryChildren:!1,header:{},def:{},columns:xe},ye=Number.isInteger(ae.at)?Math.max(0,Math.min(ae.at,this.#n.length)):this.#n.length;this.#n.splice(ye,0,ke),Ce=ke.id}return this.#_(this.#n),this.#D(ge),this.#z(),this.#x(),this.#w&&this.#w("columngroup",{action:"formed",groupId:Ce,ids:ge}),Ce}ungroupColumn(te){const ae=this.#e.get(te);if(!ae){g(`columns.ungroup.unknown:${te}`,`no column "${te}" to ungroup.`);return}const ge=ae.groupPath||[];if(!ge.length)return;const be=ge[ge.length-1],je=this.#$(be);if(!je)return;const xe=this.#B(te);if(!xe)return;const Ce=je.parent.indexOf(je.node);je.parent.splice(Ce+1,0,xe);const ke=this.#_(this.#n),ye=this.#q(je.node);if(ye.length){this.#D(ye);const ve=Math.max(...ye.map(Le=>this.#t.indexOf(Le))),Se=this.#t.filter(Le=>Le!==te);Se.splice(ve+1,0,te),this.#t=Se}this.#z(),this.#x(),this.#w&&this.#w("columngroup",{action:"removed",id:te,dissolved:ke})}renameGroup(te,ae){const ge=this.#$(te);if(!ge){g(`columns.group.rename:${te}`,`no band "${te}" to rename.`);return}ge.node.title=String(ae??""),this.#w&&this.#w("columngroup",{action:"renamed",groupId:te,title:ge.node.title})}dissolveGroup(te){const ae=this.#$(te);if(!ae){g(`columns.group.dissolve:${te}`,`no band "${te}" to dissolve.`);return}const ge=ae.parent.indexOf(ae.node);ae.parent.splice(ge,1,...ae.node.columns),this.#z(),this.#x(),this.#w&&this.#w("columngroup",{action:"dissolved",groupId:te})}moveGroup(te,ae){const ge=this.#$(te);if(!ge){g(`columns.group.move:${te}`,`no band "${te}" to move.`);return}const be=ge.parent,je=be.indexOf(ge.node);je!==-1&&(be.splice(je,1),be.splice(Math.max(0,Math.min(ae,be.length)),0,ge.node),this.#W(),this.#z(),this.#w&&this.#w("columngroup",{action:"moved",groupId:te,to:ae}))}#W(){const te=[],ae=be=>{for(const je of be)Array.isArray(je.columns)?ae(je.columns):je.column&&te.push(je.column.id)};ae(this.#n);const ge=new Set(te);this.#t=[...te,...this.#t.filter(be=>!ge.has(be))]}groupTree(){const te=ge=>ge.map(be=>Array.isArray(be.columns)?{id:be.id,title:be.title||"",collapsible:!!be.collapsible,openByDefault:be.openByDefault!==!1,columns:te(be.columns)}:be.column?be.column.id:null).filter(be=>be!==null),ae=te(this.#n);return ae.some(ge=>ge&&typeof ge=="object")?ae:[]}applyGroupTree(te){if(!Array.isArray(te))return;const ae=new Set,ge=je=>{const xe=[];for(const Ce of je)if(Ce&&typeof Ce=="object"&&Array.isArray(Ce.columns)){const ke=ge(Ce.columns);if(!ke.length)continue;xe.push({id:Ce.id||S("grp"),title:Ce.title||"",collapsible:Ce.collapsible===!0,openByDefault:Ce.openByDefault!==!1,showWhen:"always",marryChildren:!1,header:{},def:{},columns:ke})}else if(typeof Ce=="string"){const ke=this.#e.get(Ce);ke&&!ae.has(Ce)&&(ae.add(Ce),xe.push({column:ke,path:[]}))}return xe},be=ge(te);for(const je of this.#t){if(ae.has(je))continue;const xe=this.#e.get(je);xe&&be.push({column:xe,path:[]})}this.#n=be,this.#z(),this.#x(),this.#w&&this.#w("columngroup",{action:"applied"})}show(te){this.#V(te,!1)}hide(te){this.#V(te,!0)}#V(te,ae){const ge=[];for(const be of v(te)){const je=this.#e.get(be);if(je){if(ae&&je.layout.lockVisible){g(`lockVisible:${be}`,`column "${be}" is \`layout.lockVisible\` and cannot be hidden`);continue}je.layout.hidden!==ae&&(je.layout.hidden=ae,ge.push(be))}}ge.length&&this.#w&&this.#w("visible",{ids:ge,hidden:ae})}pin(te,ae){const ge=this.#e.get(te);ge&&(ge.layout.pin=ae??null,this.#w&&this.#w("pin",{id:te,side:ge.layout.pin}))}pinMany(te){const ae={};for(const[be,je]of te){const xe=this.#e.get(be);xe&&(xe.layout.pin=je??null,ae[be]=xe.layout.pin)}const ge=Object.keys(ae);ge.length&&this.#w&&this.#w("pin",{ids:ge,pins:ae})}#U(te,ae){const ge=te.layout.min??0,be=te.layout.max;let je=Math.max(ge,ae);return be!=null&&(je=Math.min(be,je)),te.layout.width=je,te.layout.flex=0,je}resize(te,ae){const ge=this.#e.get(te);if(!ge)return;if(ge.layout.resizable===!1){g(`resize:${te}`,`column "${te}" is not resizable; the resize was ignored`);return}const be=this.#U(ge,ae);this.#w&&this.#w("resize",{id:te,width:be})}resizeMany(te){const ae={};for(const[be,je]of te){const xe=this.#e.get(be);if(xe){if(xe.layout.resizable===!1){g(`resize:${be}`,`column "${be}" is not resizable; the resize was ignored`);continue}ae[be]=this.#U(xe,je)}}const ge=Object.keys(ae);ge.length&&this.#w&&this.#w("resize",{ids:ge,widths:ae})}}function ee(he){const te={};return he.width!=null&&(te.width=he.width),he.hidden!=null&&(te.hidden=he.hidden),he.pin!==void 0&&(te.pin=he.pin),te}function ne(he){if(he===null||typeof he!="object")return he;try{return structuredClone(he)}catch{}try{return JSON.parse(JSON.stringify(he))}catch{return he}}function ie(he,te){const ae=he??null,ge=te??null;if(ae===ge)return!0;if(ae===null||ge===null)return!1;if(typeof ae!="object"||typeof ge!="object")return ae===ge;try{return JSON.stringify(ae)===JSON.stringify(ge)}catch{return!1}}function se(he){const te=[],ae=(be,je,xe)=>{const Ce=[];for(const ke of be){if(!G(ke)){B("a column definition must be an object");continue}if(Array.isArray(ke.columns)){T(ke,y,"columnGroup",ke.title||ke.id||"(unnamed)");const ye={id:ke.id||S("grp"),title:ke.title||"",collapsible:ke.collapsible===!0,openByDefault:ke.openByDefault!==!1,showWhen:ke.showWhen||"always",marryChildren:ke.marryChildren===!0,header:ke.header||{},def:ke,columns:[]};ye.columns=ae(ke.columns,[...je,ye.id],ke.facet!==void 0?ke.facet:xe),Ce.push(ye)}else{const ye={def:ke,path:je,facet:xe};te.push(ye),Ce.push(ye)}}return Ce},ge=ae(he,[],void 0);return{leaves:te,groups:ge}}function we(he,te,ae){for(const ge of he){if(ge.columns){if(we(ge.columns,te,ae))return!0;continue}if(ge.column&&ge.column.id===te)return ge.column=ae,!0}return!1}}),$e("packages/core/src/columns/autogroup.js",function(e,W){"use strict";Object.defineProperty(e,"AUTO_GROUP_ID",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"createAutoGroupColumn",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"warnOnAbsurdGrouping",{enumerable:!0,get:function(){return G}});const $=W("packages/core/src/internal/util.js").warnOnce,B="__lattice_group",D=240,K=.5;function Q(H){const{columns:_,groupBy:z}=H,v=z.map(u=>_.get(u)).filter(Boolean),S=v.length?v.map(u=>u.title||u.id).join(" > "):"Group",g=H.config&&H.config.autoGroupColumnWidth||D;return{id:B,field:null,title:S,type:"text",dataType:{base:"text"},nullable:!0,align:"start",generated:!0,value:{pure:!0},cell:{render:"group"},edit:{enabled:!1},sort:{enabled:!0,direction:null},filter:{enabled:!0},groupedIds:z.slice(),group:{enabled:!1,index:0,explode:!1},pivot:{enabled:!1,index:0},total:null,lookup:null,layout:{width:g,min:120,pin:H.config&&H.config.autoGroupColumnPin||null,hidden:!1,resizable:!0,movable:!1,lockPosition:!0},header:{},export:{csv:!1,excel:!1},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(u,f){return f&&f.group?f.groupValue:null},formatValue(u,f){if(!f||!f.group)return"";if(f.grandTotal)return H.config&&H.config.grandTotalLabel||"Total";const a=v[Math.min(f.level||0,v.length-1)];return a&&typeof a.formatValue=="function"?a.formatValue(u,f):u==null?"":String(u)}}}function G(H,_,z){!H.length||z<100||_<z*K||$(`grouping.cardinality:${H.join(",")}`,`grouping by ${H.join(", ")} produced ${_} groups for ${z} rows: nearly one group per row. Grouping a continuous value such as a percentage or a timestamp rarely reads usefully; consider a computed banding column.`)}}),$e("packages/core/src/columns/selectcolumn.js",function(e,W){"use strict";Object.defineProperty(e,"SELECT_COLUMN_ID",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"createSelectionColumn",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return D}});const Z="__lattice_select",$=44;function B(K){const Q=K.selection||{},G=K.config&&K.config.selectionColumnWidth||$;return{id:Z,field:null,title:"",type:"boolean",dataType:{base:"boolean"},nullable:!1,align:"center",generated:!0,control:!0,value:{pure:!0},cell:{render:"checkbox",props:{mode:"selection"},align:"center"},edit:{enabled:!1},sort:{enabled:!1,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},pivot:{enabled:!1,index:0},total:null,lookup:null,layout:{width:G,min:G,max:G,pin:K.config&&K.config.selectionColumnPin||"start",hidden:!1,resizable:!1,movable:!1,lockPosition:!0},header:{},export:{csv:!1,excel:!1},allowGroup:!1,allowPivot:!1,allowTotal:!1,headerCheckbox:Q.headerCheckbox===!0,def:{},getValue(H,_){return _?_.selected:!1},formatValue(){return""}}}const D=B}),$e("packages/core/src/columns/rownumbercolumn.js",function(e,W){"use strict";Object.defineProperty(e,"ROW_NUMBER_COLUMN_ID",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"createRowNumberColumn",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return _}});const $=W("packages/core/src/internal/util.js").isFunction,B="__lattice_rownumber",D=40,K=9,Q=22;function G(z){const v=String(Math.max(1,Math.trunc(Math.abs(z))||1)).length;return Math.max(D,v*K+Q)}function H(z){const v=z.rowNumbers,S=v&&typeof v=="object"?v:{},g=Number.isFinite(S.start)?S.start:1,u=Number.isFinite(S.width)?S.width:G((z.maxNumber||0)+g),f=$(z.rank)?z.rank:()=>null;return{id:B,field:null,title:typeof S.title=="string"?S.title:"",type:"number",dataType:{base:"number"},nullable:!0,align:"end",generated:!0,control:!0,value:{pure:!0},cell:{align:"end"},edit:{enabled:!1},sort:{enabled:!1,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},pivot:{enabled:!1,index:0},total:null,lookup:null,layout:{width:u,min:u,max:u,pin:"start",hidden:!1,resizable:S.width==null,movable:!1,lockPosition:!0},header:{},export:{csv:!1,excel:!1},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(a,r){const t=f(r);return t==null?null:t-1+g},formatValue(a){return a==null?"":String(a)}}}const _=H}),$e("packages/core/src/model/detail.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_DETAIL_HEIGHT",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"DEFAULT_CACHE_LIMIT",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"resolveDetail",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"DetailModel",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return H}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=240,K=10;function Q(_){if(!_)return null;const z=_===!0?{}:_;return z.enabled===!1?null:!$(z.rows)&&!z.render?(B("detail.rows","detail is enabled but neither `rows` nor `render` was supplied; expanding a master would show an empty region, so it stays off."),null):{render:z.render||null,config:z.config||null,rows:$(z.rows)?z.rows:null,height:z.height??D,cacheLimit:Number.isFinite(z.cacheLimit)?Math.max(0,z.cacheLimit):K,isMaster:$(z.isMaster)?z.isMaster:null,target:z.target||null,onCreate:$(z.onCreate)?z.onCreate:null,path:typeof z.path=="string"?z.path:null}}class G{#e;#t=new Set;#n;#r=0;constructor(z){this.#e=z.config,this.#n=$(z.onChange)?z.onChange:()=>{}}get config(){return this.#e}get inline(){return!this.#e.target}isMaster(z){if(!z||z.group||z.detail)return!1;const v=this.#e.isMaster;return v?!!v(z.data,z):!0}isOpen(z){return this.#t.has(z)}keys(){return[...this.#t]}activeKey(){for(const z of this.#t)return z;return null}heightOf(z){const v=this.#e.height;return $(v)?Number(v(z))||D:v==="auto"?D:Number(v)||D}open(z){return this.#t.has(z)?!1:(this.inline||this.#t.clear(),this.#t.add(z),this.#o(),!0)}close(z){return this.#t.delete(z)?(this.#o(),!0):!1}toggle(z){return this.#t.has(z)?(this.close(z),!1):(this.open(z),!0)}closeAll(){this.#t.size&&(this.#t.clear(),this.#o())}prune(z){if(!this.#t.size||!$(z))return;let v=!1;for(const S of[...this.#t])z(S)||(this.#t.delete(S),v=!0);v&&this.#o()}signature(){return`${this.#r}`}set(z){this.#t.clear();const v=Array.isArray(z)?z:[];for(const S of this.inline?v:v.slice(0,1))this.#t.add(S);this.#o()}#o(){this.#r++,this.#n()}}const H=G}),$e("packages/core/src/compute/special.js",function(e,W){"use strict";Object.defineProperty(e,"logGamma",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"incompleteBeta",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"normalQuantile",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"normalCdf",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"studentT",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"studentTQuantile",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"regularizedGammaP",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"chiSquareCdf",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"chiSquareUpperTail",{enumerable:!0,get:function(){return a}});const Z=Object.freeze([676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23]),$=3e-12,B=1e-300;function D(r){if(r<.5)return Math.log(Math.PI/Math.sin(Math.PI*r))-D(1-r);const t=r-1;let n=.9999999999998099;const o=t+7.5;for(let l=0;l<Z.length;l++)n+=Z[l]/(t+l+1);return .5*Math.log(2*Math.PI)+(t+.5)*Math.log(o)-o+Math.log(n)}function K(r,t,n){const o=r+t,l=r+1,c=r-1;let i=1,m=1-o*n/l;Math.abs(m)<B&&(m=B),m=1/m;let d=m;for(let h=1;h<=300;h++){const s=2*h;let p=h*(t-h)*n/((c+s)*(r+s));m=1+p*m,Math.abs(m)<B&&(m=B),i=1+p/i,Math.abs(i)<B&&(i=B),m=1/m,d*=m*i,p=-(r+h)*(o+h)*n/((r+s)*(l+s)),m=1+p*m,Math.abs(m)<B&&(m=B),i=1+p/i,Math.abs(i)<B&&(i=B),m=1/m;const w=m*i;if(d*=w,Math.abs(w-1)<$)break}return d}function Q(r,t,n){if(!(r>0)||!(t>0)||!Number.isFinite(n))return Number.NaN;if(n<=0)return 0;if(n>=1)return 1;const o=Math.exp(D(r+t)-D(r)-D(t)+r*Math.log(n)+t*Math.log(1-n));return n<(r+1)/(r+t+2)?o*K(r,t,n)/r:1-o*K(t,r,1-n)/t}function G(r){if(!(r>0)||!(r<1))return r===0?-1/0:r===1?1/0:Number.NaN;const t=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],n=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572],o=[-.007784894002430293,-.3223964580411365,-2.400758277161838,-2.549732539343734,4.374664141464968,2.938163982698783],l=[.007784695709041462,.3224671290700398,2.445134137142996,3.754408661907416],c=.02425;let i,m,d;r<c?(i=Math.sqrt(-2*Math.log(r)),d=(((((o[0]*i+o[1])*i+o[2])*i+o[3])*i+o[4])*i+o[5])/((((l[0]*i+l[1])*i+l[2])*i+l[3])*i+1)):r<=1-c?(i=r-.5,m=i*i,d=(((((t[0]*m+t[1])*m+t[2])*m+t[3])*m+t[4])*m+t[5])*i/(((((n[0]*m+n[1])*m+n[2])*m+n[3])*m+n[4])*m+1)):(i=Math.sqrt(-2*Math.log(1-r)),d=-(((((o[0]*i+o[1])*i+o[2])*i+o[3])*i+o[4])*i+o[5])/((((l[0]*i+l[1])*i+l[2])*i+l[3])*i+1));const s=(.5*H(-d/Math.SQRT2)-r)*Math.sqrt(2*Math.PI)*Math.exp(d*d/2);return d-s/(1+d*s/2)}function H(r){const t=Math.abs(r),n=2/(2+t),o=4*n-2,l=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,15626441722e-18,-85238095915e-18,6529054439e-18,5059343495e-18,-991364156e-18,-227365122e-18,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18];let c=0,i=0,m;for(let h=l.length-1;h>0;h--)m=i,i=o*i-c+l[h],c=m;const d=n*Math.exp(-t*t+.5*(l[0]+o*i)-c);return r>=0?d:2-d}function _(r){return .5*H(-r/Math.SQRT2)}function z(r,t){if(!(t>0)||!Number.isFinite(r))return Number.NaN;const n=.5*Q(t/2,.5,t/(t+r*r));return r>0?1-n:n}function v(r,t){if(!(r>0)||!(r<1)||!(t>0))return Number.NaN;if(t>1e7)return G(r);let n=-1e4,o=1e4,l=G(r);const c=D(t/2)+D(.5)-D((t+1)/2);for(let i=0;i<60;i++){const m=z(l,t);m<r?n=l:o=l;const d=Math.exp(-((t+1)/2)*Math.log(1+l*l/t)-c)/Math.sqrt(t),h=d>0?(m-r)/d:0;if(Math.abs(h)<1e-12)break;const s=l-h;if(l=s>n&&s<o&&Number.isFinite(s)?s:(n+o)/2,o-n<1e-12)break}return l}function S(r,t){let n=r,o=1/r,l=o;for(let c=0;c<300&&(n+=1,l*=t/n,o+=l,!(Math.abs(l)<Math.abs(o)*$));c++);return o*Math.exp(-t+r*Math.log(t)-D(r))}function g(r,t){let n=t+1-r,o=1/B,l=1/n,c=l;for(let i=1;i<=300;i++){const m=-i*(i-r);n+=2,l=m*l+n,Math.abs(l)<B&&(l=B),o=n+m/o,Math.abs(o)<B&&(o=B),l=1/l;const d=l*o;if(c*=d,Math.abs(d-1)<$)break}return Math.exp(-t+r*Math.log(t)-D(r))*c}function u(r,t){return!(r>0)||!(t>=0)||!Number.isFinite(t)?Number.NaN:t===0?0:t<r+1?S(r,t):1-g(r,t)}function f(r,t){return t>0?u(t/2,r/2):Number.NaN}function a(r,t){const n=f(r,t);return Number.isNaN(n)?Number.NaN:Math.min(1,Math.max(0,1-n))}}),$e("packages/core/src/compute/linalg.js",function(e,W){"use strict";Object.defineProperty(e,"cholesky",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"choleskySolve",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"choleskyInverse",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"normalEquations",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"matVec",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"quadForm",{enumerable:!0,get:function(){return Q}});function Z(G){const H=G.length,_=Array.from({length:H},()=>new Array(H).fill(0));for(let z=0;z<H;z++)for(let v=0;v<=z;v++){let S=G[z][v];for(let g=0;g<v;g++)S-=_[z][g]*_[v][g];if(z===v){if(!(S>0))return null;_[z][v]=Math.sqrt(S)}else _[z][v]=S/_[v][v]}return _}function $(G,H){const _=G.length,z=new Array(_).fill(0);for(let S=0;S<_;S++){let g=H[S];for(let u=0;u<S;u++)g-=G[S][u]*z[u];z[S]=g/G[S][S]}const v=new Array(_).fill(0);for(let S=_-1;S>=0;S--){let g=z[S];for(let u=S+1;u<_;u++)g-=G[u][S]*v[u];v[S]=g/G[S][S]}return v}function B(G){const H=G.length,_=Array.from({length:H},()=>new Array(H).fill(0));for(let z=0;z<H;z++){const v=new Array(H).fill(0);v[z]=1;const S=$(G,v);for(let g=0;g<H;g++)_[g][z]=S[g]}return _}function D(G,H,_){const z=G.length,v=z?G[0].length:0,S=Array.from({length:v},()=>new Array(v).fill(0)),g=new Array(v).fill(0);for(let u=0;u<z;u++){const f=_?_[u]:1,a=G[u];for(let r=0;r<v;r++){const t=f*a[r];g[r]+=t*H[u];for(let n=r;n<v;n++)S[r][n]+=t*a[n]}}for(let u=0;u<v;u++)for(let f=0;f<u;f++)S[u][f]=S[f][u];return{xtwx:S,xtwy:g}}function K(G,H){return G.map(_=>_.reduce((z,v,S)=>z+v*H[S],0))}function Q(G,H){let _=0;for(let z=0;z<G.length;z++){let v=0;for(let S=0;S<G.length;S++)v+=H[z][S]*G[S];_+=G[z]*v}return _}}),$e("packages/core/src/compute/sketch.js",function(e,W){"use strict";Object.defineProperty(e,"Welford",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"Reservoir",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"hash32",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"HyperLogLog",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"SpaceSaving",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"KLL",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return S}});class Z{#e=0;#t=0;#n=0;static get errorBound(){return Object.freeze({kind:"exact",metric:"none",value:0,statement:"mean and variance match a full recompute to float rounding"})}get count(){return this.#e}add(u){if(!Number.isFinite(u))return;this.#e++;const f=u-this.#t;this.#t+=f/this.#e,this.#n+=f*(u-this.#t)}merge(u){if(u.#e===0)return;if(this.#e===0){this.#e=u.#e,this.#t=u.#t,this.#n=u.#n;return}const f=this.#e+u.#e,a=u.#t-this.#t;this.#t+=a*(u.#e/f),this.#n+=u.#n+a*a*(this.#e*u.#e/f),this.#e=f}mean(){return this.#e?this.#t:null}variance(){return this.#e>1?this.#n/(this.#e-1):null}varianceP(){return this.#e?this.#n/this.#e:null}stddev(){const u=this.variance();return u===null?null:Math.sqrt(u)}stddevP(){const u=this.varianceP();return u===null?null:Math.sqrt(u)}}class ${#e=[];#t=0;#n;#r;constructor(u,f=Math.random){if(!(u>0))throw new RangeError("reservoir capacity must be positive");this.#n=Math.floor(u),this.#r=f}static get errorBound(){return Object.freeze({kind:"probabilistic",metric:"none",value:0,statement:"uniform sample: each element included with probability capacity/n; sample statistics are unbiased estimators"})}get seen(){return this.#t}get size(){return this.#e.length}add(u){if(!Number.isFinite(u))return;if(this.#t++,this.#e.length<this.#n){this.#e.push(u);return}const f=Math.floor(this.#r()*this.#t);f<this.#n&&(this.#e[f]=u)}sample(){return this.#e.slice()}mean(){if(!this.#e.length)return null;let u=0;for(const f of this.#e)u+=f;return u/this.#e.length}quantile(u){const f=this.#e.length;if(!f)return null;const a=this.#e.slice().sort((o,l)=>o-l);if(f===1)return a[0];const r=(f-1)*Math.min(1,Math.max(0,u)),t=Math.floor(r),n=Math.ceil(r);return t===n?a[t]:a[t]+(r-t)*(a[n]-a[t])}}function B(g){return g^=g>>>16,g=Math.imul(g,2246822507),g^=g>>>13,g=Math.imul(g,3266489909),g^=g>>>15,g>>>0}function D(g){if(typeof g=="number"){const a=new DataView(new ArrayBuffer(8));return a.setFloat64(0,g===0?0:g),B(a.getUint32(0)^a.getUint32(4))}const u=typeof g=="string"?g:String(g);let f=2166136261;for(let a=0;a<u.length;a++)f^=u.charCodeAt(a),f=Math.imul(f,16777619);return B(f)}class K{#e;#t;#n;constructor(u=14){const f=Math.floor(u);if(f<4||f>16)throw new RangeError("HLL precision must be 4..16");this.#e=f,this.#t=1<<f,this.#n=new Uint8Array(this.#t)}static errorBoundFor(u=14){const f=1<<Math.floor(u),a=1.04/Math.sqrt(f);return Object.freeze({kind:"probabilistic",metric:"relative",value:a,statement:`distinct count within ~${(a*100).toFixed(2)}% relative standard error (m=${f} buckets)`})}errorBound(){return K.errorBoundFor(this.#e)}add(u){const f=D(u),a=f&this.#t-1,r=f>>>this.#e|1<<32-this.#e;let t=1,n=r;for(;(n&1)===0;)t++,n>>>=1;t>this.#n[a]&&(this.#n[a]=t)}count(){const u=this.#t,f=32-this.#e,a=new Float64Array(f+2);for(let n=0;n<u;n++)a[this.#n[n]]++;let r=u*H(1-a[f+1]/u);for(let n=f;n>=1;n--)r=.5*(r+a[n]);r+=u*G(a[0]/u);const t=Q*u*u/r;return Math.round(t)}}const Q=.5/Math.log(2);function G(g){if(g===1)return 1/0;let u=1,f=g,a;do g*=g,a=f,f+=g*u,u+=u;while(f!==a);return f}function H(g){if(g===0||g===1)return 0;let u=1,f=1-g,a;do g=Math.sqrt(g),a=f,u*=.5,f-=(1-g)**2*u;while(f!==a);return f/3}class _{#e=new Map;#t;#n=0;constructor(u){if(!(u>0))throw new RangeError("Space-Saving capacity must be positive");this.#t=Math.floor(u)}errorBoundFor(u){const f=u/this.#t;return Object.freeze({kind:"deterministic",metric:"absolute",value:f,statement:`each count overestimates the truth by at most N/m = ${f.toFixed(2)} (N=${u}, m=${this.#t})`})}get seen(){return this.#n}add(u){this.#n++;const f=this.#e.get(u);if(f){f.count++;return}if(this.#e.size<this.#t){this.#e.set(u,{count:1,error:0});return}let a,r=1/0;for(const[t,n]of this.#e)n.count<r&&(r=n.count,a=t);this.#e.delete(a),this.#e.set(u,{count:r+1,error:r})}top(u=this.#t){return[...this.#e.entries()].map(([a,r])=>({item:a,count:r.count,error:r.error})).sort((a,r)=>r.count-a.count).slice(0,Math.max(0,Math.floor(u)))}}class z{#e;#t=[[]];#n=0;#r;#o;constructor(u=200,f=Math.random){this.#e=Math.max(8,Math.floor(u)),this.#r=f,this.#o=2/3}static errorBoundFor(u=200){const f=1/Math.max(8,Math.floor(u));return Object.freeze({kind:"probabilistic",metric:"rank",value:f,statement:`queried quantile's true rank within ~${(f*100).toFixed(2)}% of N of the requested rank (k=${u})`})}errorBound(){return z.errorBoundFor(this.#e)}get count(){return this.#n}#i(u){const a=this.#t.length-1-u,r=Math.ceil(this.#e*this.#o**a);return Math.max(2,r)}add(u){Number.isFinite(u)&&(this.#n++,this.#t[0].push(u),this.#t[0].length>=this.#i(0)&&this.#s(0))}#s(u){const f=this.#t[u];f.sort((t,n)=>t-n),u+1>=this.#t.length&&this.#t.push([]);const a=this.#t[u+1],r=this.#r()<.5?0:1;for(let t=r;t<f.length;t+=2)a.push(f[t]);this.#t[u]=[];for(let t=0;t<this.#t.length;t++)if(this.#t[t].length>=this.#i(t)){this.#s(t);return}}#l(){const u=[];for(let f=0;f<this.#t.length;f++){const a=1<<f;for(const r of this.#t[f])u.push({v:r,w:a})}return u}quantile(u){const f=this.#l();if(!f.length)return null;f.sort((n,o)=>n.v-o.v);let a=0;for(const n of f)a+=n.w;const r=Math.min(1,Math.max(0,u))*a;let t=0;for(const n of f)if(t+=n.w,t>=r)return n.v;return f[f.length-1].v}rank(u){let f=0;for(let a=0;a<this.#t.length;a++){const r=1<<a;for(const t of this.#t[a])t<=u&&(f+=r)}return f}}const v=Object.freeze({distinct:K.errorBoundFor(14),median:z.errorBoundFor(200),p25:z.errorBoundFor(200),p75:z.errorBoundFor(200),p90:z.errorBoundFor(200),p95:z.errorBoundFor(200),p99:z.errorBoundFor(200),iqr:z.errorBoundFor(200),topK:Object.freeze({kind:"deterministic",metric:"absolute",value:0,statement:"each count overestimates the truth by at most N/m; top-K exact when the K-th item exceeds N/m"})}),S={Welford:Z,Reservoir:$,HyperLogLog:K,SpaceSaving:_,KLL:z,hash32:D,SKETCH_BOUNDS:v}}),$e("packages/core/src/compute/statistics.js",function(e,W){"use strict";Object.defineProperty(e,"KENDALL_LIMIT",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"MAINTENANCE",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"APPROXIMATE",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"maintenanceOf",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"numbers",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"frequencies",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"herfindahl",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"entropy",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"evenness",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"topShare",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"gini",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"moments",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"quantileSorted",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"quantile",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"STAT_FNS",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"STAT_LABELS",{enumerable:!0,get:function(){return j}}),Object.defineProperty(e,"weightedAverage",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"extremeRow",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"correlation",{enumerable:!0,get:function(){return M}}),Object.defineProperty(e,"trimmedMean",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"winsorizedMean",{enumerable:!0,get:function(){return E}}),Object.defineProperty(e,"modifiedZOutliers",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"jarqueBera",{enumerable:!0,get:function(){return R}}),Object.defineProperty(e,"weightedQuantile",{enumerable:!0,get:function(){return k}}),Object.defineProperty(e,"pairs",{enumerable:!0,get:function(){return y}}),Object.defineProperty(e,"covariance",{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,"regression",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"fitLinearModel",{enumerable:!0,get:function(){return te}}),Object.defineProperty(e,"ADF_CT_CRITICAL",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(e,"augmentedDickeyFuller",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(e,"autocorrelations",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(e,"spearman",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(e,"kendall",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(e,"seriesStats",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(e,"D2_N2",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(e,"D4_N2",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(e,"movingRanges",{enumerable:!0,get:function(){return De}}),Object.defineProperty(e,"withinSigma",{enumerable:!0,get:function(){return He}}),Object.defineProperty(e,"capability",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(e,"controlLimits",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(e,"westernElectricViolations",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(e,"nelsonViolations",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(e,"CONTROL_RULE_SETS",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(e,"controlViolations",{enumerable:!0,get:function(){return st}}),Object.defineProperty(e,"countOutside",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(e,"histogram",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(e,"DEFAULT_CONFIDENCE",{enumerable:!0,get:function(){return St}}),Object.defineProperty(e,"meanInterval",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(e,"proportionInterval",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(e,"slopeInterval",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(e,"capabilityInterval",{enumerable:!0,get:function(){return $t}}),Object.defineProperty(e,"standardizedMeanDifference",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(e,"normalTotalVariation",{enumerable:!0,get:function(){return et}}),Object.defineProperty(e,"frequencyMap",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(e,"categoricalDistance",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(e,"SUBSET_RELIABILITY_FLOOR",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(e,"compareColumn",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(e,"isNumericColumn",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(e,"populationRead",{enumerable:!0,get:function(){return Ne}});const Z=W("packages/core/src/compute/handle.js"),$=Z.presenceReader,B=Z.valueReader,D=W("packages/core/src/compute/special.js"),K=D.studentTQuantile,Q=D.studentT,G=D.normalQuantile,H=D.normalCdf,_=D.chiSquareUpperTail,z=W("packages/core/src/compute/linalg.js"),v=z.cholesky,S=z.choleskySolve,g=z.choleskyInverse,u=z.normalEquations,f=z.quadForm,r=W("packages/core/src/compute/sketch.js").SKETCH_BOUNDS,t=5e3,n=Object.freeze({variance:"rescan",varianceP:"rescan",stddev:"rescan",stddevP:"rescan",sumSquares:"rescan",weightedAvg:"rescan",median:"rescan",p25:"rescan",p75:"rescan",p90:"rescan",p95:"rescan",p99:"rescan",iqr:"rescan",mode:"rescan",distinct:"rescan",range:"rescan",skewness:"rescan",kurtosis:"rescan",geomean:"rescan",harmean:"rescan",mad:"rescan",argmin:"rescan",argmax:"rescan",hhi:"rescan",entropy:"rescan",evenness:"rescan",top3Share:"rescan",top10Share:"rescan",gini:"rescan",trimmedMean:"rescan",winsorizedMean:"rescan",robustOutliers:"rescan",jarqueBera:"rescan",passRate:"rescan",failureCount:"rescan"}),o=Object.freeze({distinct:Object.freeze({sketch:"HyperLogLog",bound:r.distinct}),median:Object.freeze({sketch:"KLL",bound:r.median}),p25:Object.freeze({sketch:"KLL",bound:r.p25}),p75:Object.freeze({sketch:"KLL",bound:r.p75}),p90:Object.freeze({sketch:"KLL",bound:r.p90}),p95:Object.freeze({sketch:"KLL",bound:r.p95}),p99:Object.freeze({sketch:"KLL",bound:r.p99}),iqr:Object.freeze({sketch:"KLL",bound:r.iqr}),top3Share:Object.freeze({sketch:"SpaceSaving",bound:r.topK}),top10Share:Object.freeze({sketch:"SpaceSaving",bound:r.topK})});function l(de){const ue=de==="sum"||de==="avg"||de==="countValues"||de==="min"||de==="max"?"maintained":Object.prototype.hasOwnProperty.call(n,de)?n[de]:null,me=Object.prototype.hasOwnProperty.call(o,de)?o[de]:null;return{stat:de,exact:ue,approximate:me}}function c(de,ue){const me=ue.length,Ae=new Float64Array(me);let Me=0;if(de&&(de.kind==="float64"||de.kind==="int32")){const Ue=de.values,Te=$(de);for(let Be=0;Be<me;Be++){const Ke=ue[Be];if(Te&&Te(Ke)!==1)continue;const Je=Ue[Ke];Number.isNaN(Je)||(Ae[Me++]=Je)}return Ae.subarray(0,Me)}const We=B(de);for(let Ue=0;Ue<me;Ue++){const Te=We(ue[Ue]);if(Te==null||Te==="")continue;const Be=typeof Te=="number"?Te:Number(Te);Number.isFinite(Be)&&(Ae[Me++]=Be)}return Ae.subarray(0,Me)}function i(de,ue){const me=new Map,Ae=B(de);let Me=0;for(let We=0;We<ue.length;We++){const Ue=Ae(ue[We]);if(Ue==null||Ue===""||typeof Ue=="number"&&Number.isNaN(Ue))continue;const Te=typeof Ue=="object"?String(Ue):Ue;me.set(Te,(me.get(Te)||0)+1),Me++}const Ie=[...me.values()].sort((We,Ue)=>Ue-We);return{counts:Ie,total:Me,distinct:Ie.length}}function m(de){return de.total>0?de.counts.map(ue=>ue/de.total):[]}function d(de,ue){const me=i(de,ue);if(!me.total)return null;let Ae=0;for(const Me of m(me))Ae+=Me*Me;return Ae}function h(de,ue){const me=i(de,ue);if(!me.total)return null;let Ae=0;for(const Me of m(me))Me>0&&(Ae-=Me*Math.log2(Me));return Ae}function s(de,ue){const me=i(de,ue);if(!me.total||me.distinct<2)return me.total?1:null;let Ae=0;for(const Me of m(me))Me>0&&(Ae-=Me*Math.log2(Me));return Ae/Math.log2(me.distinct)}function p(de,ue,me=3){const Ae=i(de,ue);if(!Ae.total)return null;const Me=Math.max(1,Math.floor(me));let Ie=0;for(let We=0;We<Math.min(Me,Ae.counts.length);We++)Ie+=Ae.counts[We];return Ie/Ae.total}function w(de,ue){const me=c(de,ue),Ae=me.length;if(!Ae)return null;const Me=me.slice().sort();if(Me[0]<0)return null;let Ie=0,We=0;for(let Ue=0;Ue<Ae;Ue++)Ie+=Me[Ue],We+=(Ue+1)*Me[Ue];return Ie===0?0:2*We/(Ae*Ie)-(Ae+1)/Ae}function A(de){let ue=0,me=0,Ae=0;for(let Me=0;Me<de.length;Me++){const Ie=de[Me];ue++;const We=Ie-me;me+=We/ue,Ae+=We*(Ie-me)}return{n:ue,mean:me,m2:Ae}}function P(de,ue){const me=de.length;if(!me)return NaN;if(me===1)return de[0];const Ae=(me-1)*Math.min(1,Math.max(0,ue)),Me=Math.floor(Ae),Ie=Math.ceil(Ae);return Me===Ie?de[Me]:de[Me]+(Ae-Me)*(de[Ie]-de[Me])}function b(de,ue){if(!de.length)return NaN;const me=de.slice().sort();return P(me,ue)}function O(de,ue){const me=B(de);let Ae=0,Me=0,Ie=0;for(let We=0;We<ue.length;We++){const Ue=me(ue[We]);if(Ue==null||Ue==="")continue;const Te=String(Ue).toUpperCase();Te==="PASS"?Ae++:Te==="FAIL"?Me++:Te==="WARN"&&Ie++}return{pass:Ae+Ie,fail:Me,warn:Ie,judged:Ae+Ie+Me}}const x=Object.freeze({hhi:(de,ue)=>d(de,ue),entropy:(de,ue)=>h(de,ue),evenness:(de,ue)=>s(de,ue),top3Share:(de,ue)=>p(de,ue,3),top10Share:(de,ue)=>p(de,ue,10),gini:(de,ue)=>w(de,ue),trimmedMean:(de,ue)=>L(c(de,ue),.1),winsorizedMean:(de,ue)=>E(c(de,ue),.1),robustOutliers:(de,ue)=>I(c(de,ue),3.5),jarqueBera:(de,ue)=>R(c(de,ue)),variance:(de,ue)=>{const{n:me,m2:Ae}=A(c(de,ue));return me>1?Ae/(me-1):null},varianceP:(de,ue)=>{const{n:me,m2:Ae}=A(c(de,ue));return me>0?Ae/me:null},stddev:(de,ue)=>{const{n:me,m2:Ae}=A(c(de,ue));return me>1?Math.sqrt(Ae/(me-1)):null},stddevP:(de,ue)=>{const{n:me,m2:Ae}=A(c(de,ue));return me>0?Math.sqrt(Ae/me):null},median:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.5):null},p25:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.25):null},p75:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.75):null},p90:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.9):null},p95:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.95):null},p99:(de,ue)=>{const me=c(de,ue);return me.length?b(me,.99):null},iqr:(de,ue)=>{const me=c(de,ue);if(!me.length)return null;const Ae=me.slice().sort();return P(Ae,.75)-P(Ae,.25)},mad:(de,ue)=>{const me=c(de,ue);if(!me.length)return null;const Ae=b(me,.5),Me=new Float64Array(me.length);for(let Ie=0;Ie<me.length;Ie++)Me[Ie]=Math.abs(me[Ie]-Ae);return b(Me,.5)},range:(de,ue)=>{const me=c(de,ue);if(!me.length)return null;let Ae=1/0,Me=-1/0;for(let Ie=0;Ie<me.length;Ie++)me[Ie]<Ae&&(Ae=me[Ie]),me[Ie]>Me&&(Me=me[Ie]);return Me-Ae},distinct:(de,ue)=>{const me=B(de),Ae=new Set;for(let Me=0;Me<ue.length;Me++){const Ie=me(ue[Me]);Ie==null||Ie===""||Ae.add(Ie instanceof Date?Ie.getTime():Ie)}return Ae.size},mode:(de,ue)=>{const me=B(de),Ae=new Map;for(let We=0;We<ue.length;We++){const Ue=me(ue[We]);if(Ue==null||Ue==="")continue;const Te=Ue instanceof Date?Ue.getTime():Ue;Ae.set(Te,(Ae.get(Te)||0)+1)}let Me=null,Ie=1;for(const[We,Ue]of Ae)Ue>Ie&&(Ie=Ue,Me=We);return Me},skewness:(de,ue)=>{const me=c(de,ue),{n:Ae,mean:Me,m2:Ie}=A(me);if(Ae<3||Ie<=0)return null;const We=Math.sqrt(Ie/(Ae-1));let Ue=0;for(let Te=0;Te<me.length;Te++)Ue+=((me[Te]-Me)/We)**3;return Ae/((Ae-1)*(Ae-2))*Ue},kurtosis:(de,ue)=>{const me=c(de,ue),{n:Ae,mean:Me,m2:Ie}=A(me);if(Ae<4||Ie<=0)return null;const We=Math.sqrt(Ie/(Ae-1));let Ue=0;for(let Ke=0;Ke<me.length;Ke++)Ue+=((me[Ke]-Me)/We)**4;const Te=Ae*(Ae+1)/((Ae-1)*(Ae-2)*(Ae-3)),Be=3*(Ae-1)**2/((Ae-2)*(Ae-3));return Te*Ue-Be},geomean:(de,ue)=>{const me=c(de,ue);if(!me.length)return null;let Ae=0;for(let Me=0;Me<me.length;Me++){if(me[Me]<=0)return null;Ae+=Math.log(me[Me])}return Math.exp(Ae/me.length)},harmean:(de,ue)=>{const me=c(de,ue);if(!me.length)return null;let Ae=0;for(let Me=0;Me<me.length;Me++){if(me[Me]===0)return null;Ae+=1/me[Me]}return me.length/Ae},sumSquares:(de,ue)=>{const me=c(de,ue);let Ae=0;for(let Me=0;Me<me.length;Me++)Ae+=me[Me]*me[Me];return Ae},passRate:(de,ue)=>{const{pass:me,judged:Ae}=O(de,ue);return Ae?me/Ae:null},failureCount:(de,ue)=>O(de,ue).fail}),j=Object.freeze({hhi:"Concentration (HHI)",entropy:"Entropy",evenness:"Evenness",top3Share:"Top 3 share",top10Share:"Top 10 share",gini:"Gini coefficient",trimmedMean:"Trimmed mean",winsorizedMean:"Winsorized mean",robustOutliers:"Outliers (robust)",jarqueBera:"Jarque–Bera",median:"Median",p25:"25th percentile",p75:"75th percentile",p90:"90th percentile",p95:"95th percentile",p99:"99th percentile",iqr:"Interquartile range",mad:"Median absolute deviation",variance:"Variance",varianceP:"Variance (population)",stddev:"Standard deviation",stddevP:"Standard deviation (population)",range:"Range",distinct:"Distinct",mode:"Mode",skewness:"Skewness",kurtosis:"Kurtosis",geomean:"Geometric mean",harmean:"Harmonic mean",sumSquares:"Sum of squares",weightedAvg:"Weighted average",argmin:"Lowest by",argmax:"Highest by",passRate:"Pass rate",failureCount:"Failures"});function F(de,ue,me){const Ae=B(de),Me=B(ue);let Ie=0,We=0;for(let Ue=0;Ue<me.length;Ue++){const Te=me[Ue],Be=Number(Ae(Te)),Ke=Number(Me(Te));!Number.isFinite(Be)||!Number.isFinite(Ke)||(Ie+=Be*Ke,We+=Ke)}return We===0?null:Ie/We}function C(de,ue,me){const Ae=B(de);let Me=null,Ie=me?-1/0:1/0;for(let We=0;We<ue.length;We++){const Ue=ue[We],Te=Number(Ae(Ue));Number.isFinite(Te)&&(me?Te>Ie:Te<Ie)&&(Ie=Te,Me=Ue)}return Me}function M(de,ue,me){const Ae=B(de),Me=B(ue);let Ie=0,We=0,Ue=0,Te=0,Be=0,Ke=0;for(let it=0;it<me.length;it++){const gt=me[it],wt=Number(Ae(gt)),dt=Number(Me(gt));!Number.isFinite(wt)||!Number.isFinite(dt)||(Ie++,We+=wt,Ue+=dt,Te+=wt*wt,Be+=dt*dt,Ke+=wt*dt)}if(Ie<2)return null;const Je=Ie*Ke-We*Ue,Qe=Math.sqrt((Ie*Te-We*We)*(Ie*Be-Ue*Ue));if(Qe===0)return null;const at=Je/Qe;return Math.max(-1,Math.min(1,at))}function L(de,ue=.1){const me=de.length;if(!me)return null;const Ae=Array.from(de).sort((Ue,Te)=>Ue-Te),Me=Math.floor(me*Math.min(.49,Math.max(0,ue))),Ie=Ae.slice(Me,me-Me);if(!Ie.length)return P(Ae,.5);let We=0;for(const Ue of Ie)We+=Ue;return We/Ie.length}function E(de,ue=.1){const me=de.length;if(!me)return null;const Ae=Array.from(de).sort((Te,Be)=>Te-Be),Me=Math.floor(me*Math.min(.49,Math.max(0,ue))),Ie=Ae[Me],We=Ae[me-1-Me];let Ue=0;for(const Te of Ae)Ue+=Math.min(We,Math.max(Ie,Te));return Ue/me}function I(de,ue=3.5){if(!de.length)return null;const Ae=Array.from(de).sort((Te,Be)=>Te-Be),Me=P(Ae,.5),Ie=Ae.map(Te=>Math.abs(Te-Me)).sort((Te,Be)=>Te-Be),We=P(Ie,.5);if(We===0)return null;let Ue=0;for(const Te of Ae)Math.abs(.6745*(Te-Me)/We)>ue&&Ue++;return Ue}function R(de){const ue=de.length;if(ue<8)return null;let me=0;for(const Te of de)me+=Te;me/=ue;let Ae=0,Me=0,Ie=0;for(const Te of de){const Be=Te-me;Ae+=Be*Be,Me+=Be*Be*Be,Ie+=Be*Be*Be*Be}if(Ae/=ue,Me/=ue,Ie/=ue,Ae===0)return null;const We=Me/Ae**1.5,Ue=Ie/(Ae*Ae)-3;return ue/6*(We*We+Ue*Ue/4)}function k(de,ue,me){const Ae=[];let Me=0;for(let Te=0;Te<de.length;Te++){const Be=Number(de[Te]),Ke=Number(ue[Te]);!Number.isFinite(Be)||!Number.isFinite(Ke)||Ke<=0||(Ae.push([Be,Ke]),Me+=Ke)}if(!Ae.length||Me<=0)return null;if(Ae.sort((Te,Be)=>Te[0]-Be[0]),Ae.length===1)return Ae[0][0];const Ie=[];let We=0;for(const[,Te]of Ae)Ie.push((We+Te/2)/Me),We+=Te;const Ue=Math.max(0,Math.min(1,me));if(Ue<=Ie[0])return Ae[0][0];if(Ue>=Ie[Ie.length-1])return Ae[Ae.length-1][0];for(let Te=1;Te<Ie.length;Te++){if(Ue>Ie[Te])continue;const Be=Ie[Te]-Ie[Te-1],Ke=Be>0?(Ue-Ie[Te-1])/Be:0;return Ae[Te-1][0]+(Ae[Te][0]-Ae[Te-1][0])*Ke}return Ae[Ae.length-1][0]}function y(de,ue,me){const Ae=B(de),Me=B(ue),Ie=new Float64Array(me.length),We=new Float64Array(me.length);let Ue=0;for(let Te=0;Te<me.length;Te++){const Be=me[Te],Ke=Number(Ae(Be)),Je=Number(Me(Be));!Number.isFinite(Ke)||!Number.isFinite(Je)||(Ie[Ue]=Ke,We[Ue]=Je,Ue++)}return{xs:Ie.subarray(0,Ue),ys:We.subarray(0,Ue),n:Ue}}function T(de,ue,me,Ae=!1){const{xs:Me,ys:Ie,n:We}=y(de,ue,me);if(We<2)return null;let Ue=0,Te=0;for(let Ke=0;Ke<We;Ke++)Ue+=Me[Ke],Te+=Ie[Ke];Ue/=We,Te/=We;let Be=0;for(let Ke=0;Ke<We;Ke++)Be+=(Me[Ke]-Ue)*(Ie[Ke]-Te);return Be/(Ae?We:We-1)}function V(de,ue,me){const{xs:Ae,ys:Me,n:Ie}=y(de,ue,me);if(Ie<2)return null;let We=0,Ue=0;for(let wt=0;wt<Ie;wt++)We+=Ae[wt],Ue+=Me[wt];We/=Ie,Ue/=Ie;let Te=0,Be=0,Ke=0;for(let wt=0;wt<Ie;wt++){const dt=Ae[wt]-We,Et=Me[wt]-Ue;Te+=dt*dt,Be+=dt*Et,Ke+=Et*Et}if(Te===0)return null;const Je=Be/Te,Qe=Ue-Je*We,at=Ke===0?1:Math.max(0,Math.min(1,Be*Be/(Te*Ke))),it=Math.max(0,Ke-Je*Be),gt=Ie>2?Math.sqrt(it/(Ie-2)/Te):0;return{slope:Je,intercept:Qe,r2:at,stdError:gt,n:Ie}}const q=new Set(["ols","wls","robust"]),Y=new Set(["quantile"]),J=new Set(["ridge","lasso","elasticnet","mixed","gls"]),ee=1.345;function ne(de,ue,me){const{xtwx:Ae,xtwy:Me}=u(de,ue,me),Ie=v(Ae);if(!Ie)return null;const We=S(Ie,Me),Ue=g(Ie),Te=ie(de,We),Be=ue.map((Ke,Je)=>Ke-Te[Je]);return{beta:We,cov:Ue,fitted:Te,residuals:Be}}function ie(de,ue){return de.map(me=>me.reduce((Ae,Me,Ie)=>Ae+Me*ue[Ie],0))}function se(de,ue){const me=de.length,Ae=de.map(Be=>Be[ue]),Me=de.map(Be=>[1,...Be.filter((Ke,Je)=>Je!==ue)]),Ie=ne(Me,Ae,null);if(!Ie)return 1;const We=Ae.reduce((Be,Ke)=>Be+Ke,0)/me;let Ue=0,Te=0;for(let Be=0;Be<me;Be++)Ue+=Ie.residuals[Be]**2,Te+=(Ae[Be]-We)**2;return Te===0?1:Math.max(0,Math.min(1,1-Ue/Te))}function we(de){const ue=[...de].sort((Me,Ie)=>Me-Ie),me=he(ue),Ae=de.map(Me=>Math.abs(Me-me)).sort((Me,Ie)=>Me-Ie);return he(Ae)/.6745}function he(de){const ue=de.length;if(!ue)return 0;const me=Math.floor(ue/2);return ue%2?de[me]:(de[me-1]+de[me])/2}function te(de,ue,me={}){const Ae=me.method||"ols";if(J.has(Ae))throw new Error(`[lattice] regression method "${Ae}" is out of scope; use ols, wls or robust.`);if(Y.has(Ae))throw new Error("[lattice] quantile regression is coming next and not yet available; use ols, wls or robust.");if(!q.has(Ae))throw new Error(`[lattice] unknown regression method "${Ae}"; use ols, wls or robust.`);const Me=Array.isArray(ue)?ue.length:0,Ie=Me&&Array.isArray(de[0])?de[0].length:0,We=Ie+1;if(!(Me>We))return null;for(let At=0;At<Me;At++){if(!Number.isFinite(ue[At])||!Array.isArray(de[At])||de[At].length!==Ie)return null;for(let It=0;It<Ie;It++)if(!Number.isFinite(de[At][It]))return null}let Ue=null;if(Ae==="wls"){if(Ue=me.weights,!Array.isArray(Ue)||Ue.length!==Me)return null;for(let At=0;At<Me;At++)if(!(Ue[At]>0)||!Number.isFinite(Ue[At]))return null}const Te=de.map(At=>[1,...At]);let Be,Ke=null;if(Ae==="robust"){if(Be=ne(Te,ue,null),!Be)return null;for(let At=0;At<50;At++){const It=we(Be.residuals);if(!(It>0))break;const Ht=Be.residuals.map(Zt=>{const Qt=Math.abs(Zt/It);return Qt<=ee?1:ee/Qt}),Kt=ne(Te,ue,Ht);if(!Kt)return null;const Xt=Kt.beta.reduce((Zt,Qt,rn)=>Math.max(Zt,Math.abs(Qt-Be.beta[rn])),0);if(Be=Kt,Ke=Ht,Xt<1e-10)break}}else if(Be=ne(Te,ue,Ue),!Be)return null;const Je=Ae==="robust"?Ke:Ue,{beta:Qe,cov:at,fitted:it,residuals:gt}=Be;let wt=0,dt=0,Et=0;for(let At=0;At<Me;At++){const It=Je?Je[At]:1;wt+=It*gt[At]**2,dt+=It,Et+=It*ue[At]}const Ft=Et/dt;let _e=0;for(let At=0;At<Me;At++){const It=Je?Je[At]:1;_e+=It*(ue[At]-Ft)**2}const ht=Me-We,ot=wt/ht,ut=_e===0?1:Math.max(0,Math.min(1,1-wt/_e)),Ot=1-(1-ut)*(Me-1)/ht,Rt=Array.isArray(me.names)&&me.names.length===Ie?me.names:de[0].map((At,It)=>`x${It+1}`),yt=jt(me.confidence),xt=ht>0?K(1-(1-yt)/2,ht):1/0,Bt=Qe.map((At,It)=>{const Ht=Math.sqrt(Math.max(0,ot*at[It][It])),Kt=Ht>0?At/Ht:At===0?0:1/0,Xt=Number.isFinite(Kt)?2*(1-Q(Math.abs(Kt),ht)):0,Zt=Number.isFinite(xt)?xt*Ht:null;return{name:It===0?"(intercept)":Rt[It-1],estimate:At,stdError:Ht,t:Kt,p:Math.max(0,Math.min(1,Xt)),lower:Zt===null?null:At-Zt,upper:Zt===null?null:At+Zt}}),en=new Array(Me),sn=new Array(Me);for(let At=0;At<Me;At++){const It=Je?Je[At]:1,Ht=Math.max(0,Math.min(1,It*f(Te[At],at)));en[At]=Ht;const Kt=(1-Ht)**2;sn[At]=Kt>0&&ot>0?gt[At]**2/(We*ot)*(Ht/Kt):null}const yn=de[0].map((At,It)=>{if(Ie<2)return 1;const Ht=se(de,It);return Ht>=1?1/0:1/(1-Ht)});let an=null;{const At=gt.map(Ht=>Ht*Ht),It=ne(Te,At,null);if(It){const Ht=At.reduce((Jt,dn)=>Jt+dn,0)/Me;let Kt=0,Xt=0;for(let Jt=0;Jt<Me;Jt++)Kt+=It.residuals[Jt]**2,Xt+=(At[Jt]-Ht)**2;const Zt=Xt===0?0:Math.max(0,Math.min(1,1-Kt/Xt)),Qt=Me*Zt,rn=_(Qt,Ie);an={statistic:Qt,df:Ie,p:rn,heteroscedastic:rn<.05}}}let qt=null;if(Ie===1){const At=de.map((It,Ht)=>Ht).sort((It,Ht)=>de[It][0]-de[Ht][0]);qt={confidence:yt,points:At.map(It=>{const Ht=Te[It],Kt=Math.sqrt(Math.max(0,ot*f(Ht,at)));return{x:de[It][0],yhat:it[It],lower:it[It]-xt*Kt,upper:it[It]+xt*Kt}})}}return{method:Ae,coefficients:Bt,r2:ut,adjR2:Ot,n:Me,df:ht,sigma2:ot,fitted:it,residuals:gt,leverage:en,cooksD:sn,vif:yn,heteroscedasticity:an,band:qt,weights:Je?[...Je]:null}}function ae(de){const ue=de.length,me=Array.from({length:ue},(Ie,We)=>We).sort((Ie,We)=>de[Ie]-de[We]),Ae=new Float64Array(ue);let Me=0;for(;Me<ue;){let Ie=Me;for(;Ie+1<ue&&de[me[Ie+1]]===de[me[Me]];)Ie++;const We=(Me+Ie)/2+1;for(let Ue=Me;Ue<=Ie;Ue++)Ae[me[Ue]]=We;Me=Ie+1}return Ae}const ge=Object.freeze({"1%":-3.9638,"5%":-3.4126,"10%":-3.1279});function be(de){const ue=[.01,.05,.1],me=[ge["1%"],ge["5%"],ge["10%"]];if(de<=me[0]){const Ie=(Math.log(ue[1])-Math.log(ue[0]))/(me[1]-me[0]);return Math.max(1e-4,Math.min(.01,Math.exp(Math.log(ue[0])+Ie*(de-me[0]))))}if(de>=me[2]){const Ie=(Math.log(ue[2])-Math.log(ue[1]))/(me[2]-me[1]);return Math.max(.1,Math.min(.999,Math.exp(Math.log(ue[2])+Ie*(de-me[2]))))}const Ae=de<me[1]?0:1,Me=(de-me[Ae])/(me[Ae+1]-me[Ae]);return Math.exp(Math.log(ue[Ae])+Me*(Math.log(ue[Ae+1])-Math.log(ue[Ae])))}function je(de,ue,me,Ae){const Me=me-Ae,Ie=Ae+3,We=new Array(Me),Ue=new Array(Me);let Te=!0,Be=Ae;for(let it=0;it<Me;it++){const gt=Ae+it,wt=new Float64Array(Ie);wt[0]=1,wt[1]=it+1,wt[2]=de[gt];for(let dt=1;dt<=Ae;dt++)wt[2+dt]=ue[gt-dt];for(let dt=1;dt<Ie;dt++)Number.isFinite(wt[dt])||(Be=Math.min(Be,dt-3));We[it]=wt,Ue[it]=ue[gt],Number.isFinite(Ue[it])||(Te=!1)}if(!Te)return 0;const{xtwx:Ke,xtwy:Je}=u(We,Ue,null);let Qe=0,at=1/0;for(let it=0;it<=Be;it++){const gt=it+3;if(!(Me>gt))continue;const wt=new Array(gt);for(let ut=0;ut<gt;ut++)wt[ut]=Ke[ut].slice(0,gt);const dt=v(wt);if(!dt)continue;const Et=S(dt,Je.slice(0,gt));let Ft=0;for(let ut=0;ut<Me;ut++){const Ot=We[ut];let Rt=0;for(let yt=0;yt<gt;yt++)Rt+=Ot[yt]*Et[yt];Ft+=(Ue[ut]-Rt)**2}const ht=Ft/(Me-gt)*(Me-gt);if(!(ht>0))continue;const ot=Me*Math.log(ht/Me)+2*gt;ot<at&&(at=ot,Qe=it)}return Qe}function xe(de,ue={}){const me=[];for(let at=0;at<de.length;at++){const it=Number(de[at]);Number.isFinite(it)&&me.push(it)}const Ae=me.length,Me=Ae-1;if(Ae<8||Me<6)return null;const Ie=new Array(Me);for(let at=0;at<Me;at++)Ie[at]=me[at+1]-me[at];let We=Number.isFinite(ue.maxlag)?Math.floor(ue.maxlag):Math.ceil(12*(Ae/100)**.25);We=Math.max(0,Math.min(We,Math.floor((Me-5)/2)));const Ue=(at,it)=>{const gt=[],wt=[];for(let dt=it;dt<Me;dt++){const Et=[dt-it+1,me[dt]];for(let Ft=1;Ft<=at;Ft++)Et.push(Ie[dt-Ft]);gt.push(Et),wt.push(Ie[dt])}return te(gt,wt,{method:"ols"})},Te=je(me,Ie,Me,We),Be=Ue(Te,Te);if(!Be||!Be.coefficients[2])return null;const Ke=Be.coefficients[2].t,Je=be(Ke),Qe=Ke<ge["5%"];return{statistic:Ke,usedLag:Te,nobs:Me-Te,criticalValues:{...ge},pValue:Je,pApproximate:!0,stationary:Qe,verdict:Qe?"stationary":"non-stationary",regression:"ct"}}function Ce(de,ue={}){const me=[];for(let Qe=0;Qe<de.length;Qe++){const at=Number(de[Qe]);Number.isFinite(at)&&me.push(at)}const Ae=me.length;if(Ae<3)return null;let Me=Number.isFinite(ue.maxlag)?Math.floor(ue.maxlag):Math.min(10,Ae-1);Me=Math.max(1,Math.min(Me,Ae-1));let Ie=0;for(const Qe of me)Ie+=Qe;Ie/=Ae;const We=me.map(Qe=>Qe-Ie);let Ue=0;for(const Qe of We)Ue+=Qe*Qe;Ue/=Ae;const Te=new Array(Me+1).fill(0);Te[0]=1;for(let Qe=1;Qe<=Me;Qe++){let at=0;for(let it=Qe;it<Ae;it++)at+=We[it]*We[it-Qe];Te[Qe]=Ue>0?at/Ae/Ue:0}const Be=new Array(Me+1).fill(0);Be[0]=1;let Ke=[];for(let Qe=1;Qe<=Me;Qe++){let at=Te[Qe];for(let dt=1;dt<Qe;dt++)at-=Ke[dt-1]*Te[Qe-dt];let it=1;for(let dt=1;dt<Qe;dt++)it-=Ke[dt-1]*Te[dt];const gt=it!==0?at/it:0,wt=new Array(Qe);for(let dt=1;dt<Qe;dt++)wt[dt-1]=Ke[dt-1]-gt*Ke[Qe-1-dt];wt[Qe-1]=gt,Be[Qe]=gt,Ke=wt}const Je=1.96/Math.sqrt(Ae);return{acf:Te,pacf:Be,bounds:{upper:Je,lower:-Je},n:Ae,nlags:Me,approximate:!0}}function ke(de,ue,me){const{xs:Ae,ys:Me,n:Ie}=y(de,ue,me);if(Ie<2)return null;const We=ae(Ae),Ue=ae(Me);let Te=0,Be=0;for(let at=0;at<Ie;at++)Te+=We[at],Be+=Ue[at];Te/=Ie,Be/=Ie;let Ke=0,Je=0,Qe=0;for(let at=0;at<Ie;at++){const it=We[at]-Te,gt=Ue[at]-Be;Ke+=it*gt,Je+=it*it,Qe+=gt*gt}return Je===0||Qe===0?null:Math.max(-1,Math.min(1,Ke/Math.sqrt(Je*Qe)))}function ye(de,ue,me){const{xs:Ae,ys:Me,n:Ie}=y(de,ue,me);if(Ie<2||Ie>t)return null;let We=0,Ue=0,Te=0,Be=0;for(let Qe=0;Qe<Ie;Qe++)for(let at=Qe+1;at<Ie;at++){const it=Math.sign(Ae[Qe]-Ae[at]),gt=Math.sign(Me[Qe]-Me[at]),wt=it*gt;wt>0?We++:wt<0?Ue++:it===0&>===0||(it===0?Te++:Be++)}const Ke=We+Ue+Be,Je=We+Ue+Te;return Ke===0||Je===0?null:(We-Ue)/Math.sqrt(Ke*Je)}function ve(de,ue={}){const me=de.length;if(me<2)return null;const Ae=de[0],Me=de[me-1],Ie=[];for(let dt=1;dt<me;dt++){const Et=de[dt-1];Et!==0&&Ie.push((de[dt]-Et)/Math.abs(Et))}let We=null;if(Ie.length>1){let dt=0;for(const Ft of Ie)dt+=Ft;dt/=Ie.length;let Et=0;for(const Ft of Ie)Et+=(Ft-dt)**2;We=Math.sqrt(Et/(Ie.length-1))}const Ue=Number(ue.periodsPerYear)>0?Number(ue.periodsPerYear):null;let Te=de[0],Be=0,Ke=0,Je=0,Qe=0;for(let dt=1;dt<me;dt++){if(de[dt]>Te){Te=de[dt],Be=dt;continue}if(Te<=0)continue;const Et=(Te-de[dt])/Te;Et>Ke&&(Ke=Et,Je=Be,Qe=dt)}let at=null;if(me>2){let dt=0;for(let _e=0;_e<me;_e++)dt+=de[_e];dt/=me;let Et=0,Ft=0;for(let _e=0;_e<me;_e++){const ht=de[_e]-dt;Ft+=ht*ht,_e>0&&(Et+=ht*(de[_e-1]-dt))}at=Ft>0?Et/Ft:null}let it=0,gt=0;for(const dt of Ie)dt>0?it++:dt<0&>++;let wt=null;if(Ae>0&&Me>0){const dt=(Me/Ae)**(1/(me-1))-1;wt=Ue?(1+dt)**Ue-1:dt}return{n:me,first:Ae,last:Me,change:Me-Ae,changePercent:Ae===0?null:(Me-Ae)/Math.abs(Ae)*100,volatility:We,annualisedVolatility:We!==null&&Ue?We*Math.sqrt(Ue):null,growth:wt,maxDrawdown:Ke,maxDrawdownFrom:Je,maxDrawdownTo:Qe,autocorrelation:at,upDays:it,downDays:gt}}const Se=1.128,Le=3.267;function De(de){const ue=de.length;if(ue<2)return null;const me=[];for(let Me=1;Me<ue;Me++)me.push(Math.abs(de[Me]-de[Me-1]));const Ae=me.reduce((Me,Ie)=>Me+Ie,0)/me.length;return{ranges:me,centre:Ae,upper:Le*Ae,lower:0}}function He(de){const ue=de.length;if(ue<2)return null;let me=0;for(let Me=1;Me<ue;Me++)me+=Math.abs(de[Me]-de[Me-1]);const Ae=me/(ue-1);return{sigma:Ae/Se,meanRange:Ae}}function Ze(de,ue){const me=de.length;if(me<2||!ue)return null;const Ae=Number.isFinite(Number(ue.lower))?Number(ue.lower):null,Me=Number.isFinite(Number(ue.upper))?Number(ue.upper):null;if(Ae===null&&Me===null)return null;let Ie=0;for(let it=0;it<me;it++)Ie+=de[it];Ie/=me;let We=0;for(let it=0;it<me;it++)We+=(de[it]-Ie)**2;const Ue=Math.sqrt(We/(me-1)),Te=He(de),Be=Te?Te.sigma:null,Ke=it=>{if(!it||it<=0)return{index:null,k:null};const wt=Ae!==null&&Me!==null?(Me-Ae)/(6*it):null,dt=Me!==null?(Me-Ie)/(3*it):1/0,Et=Ae!==null?(Ie-Ae)/(3*it):1/0;return{index:wt,k:Math.min(dt,Et)}},Je=Ke(Be),Qe=Ke(Ue);let at=0;for(let it=0;it<me;it++){if(Ae!==null&&de[it]<Ae){at++;continue}Me!==null&&de[it]>Me&&at++}return{n:me,mean:Ie,lower:Ae,upper:Me,target:Number.isFinite(Number(ue.target))?Number(ue.target):null,sigmaWithin:Be,sigmaOverall:Ue,cp:Je.index,cpk:Je.k,pp:Qe.index,ppk:Qe.k,outOfSpec:at,defectRate:me?at/me:null}}function Ee(de){const ue=de.length;if(ue<2)return null;const me=He(de);if(!me||!(me.sigma>0))return null;let Ae=0;for(let Me=0;Me<ue;Me++)Ae+=de[Me];return Ae/=ue,{centre:Ae,sigma:me.sigma,upper:Ae+3*me.sigma,lower:Ae-3*me.sigma}}function Ge(de,ue){if(!ue||!(ue.sigma>0))return[];const me=de.length,{centre:Ae,sigma:Me}=ue,Ie=Ue=>(de[Ue]-Ae)/Me,We=[];for(let Ue=0;Ue<me;Ue++){if(Math.abs(Ie(Ue))>3&&We.push({index:Ue,rule:1,description:"beyond three sigma"}),Ue>=2)for(const Te of[1,-1]){let Be=0;for(let Ke=Ue-2;Ke<=Ue;Ke++)Ie(Ke)*Te>2&&Be++;if(Be>=2){We.push({index:Ue,rule:2,description:"two of three past two sigma"});break}}if(Ue>=4)for(const Te of[1,-1]){let Be=0;for(let Ke=Ue-4;Ke<=Ue;Ke++)Ie(Ke)*Te>1&&Be++;if(Be>=4){We.push({index:Ue,rule:3,description:"four of five past one sigma"});break}}if(Ue>=7)for(const Te of[1,-1]){let Be=!0;for(let Ke=Ue-7;Ke<=Ue;Ke++)if(Ie(Ke)*Te<=0){Be=!1;break}if(Be){We.push({index:Ue,rule:4,description:"eight in a row on one side"});break}}}return We}function Ye(de,ue){if(!ue||!(ue.sigma>0))return[];const me=de.length,{centre:Ae,sigma:Me}=ue,Ie=Te=>(de[Te]-Ae)/Me,We=(Te,Be,Ke,Je)=>{for(const Qe of[1,-1]){let at=0;for(let it=Te;it<=Be;it++)Ie(it)*Qe>Ke&&at++;if(at>=Je)return!0}return!1},Ue=[];for(let Te=0;Te<me;Te++){if(Math.abs(Ie(Te))>3&&Ue.push({index:Te,rule:1,description:"beyond three sigma"}),Te>=8)for(const Be of[1,-1]){let Ke=!0;for(let Je=Te-8;Je<=Te;Je++)if(Ie(Je)*Be<=0){Ke=!1;break}if(Ke){Ue.push({index:Te,rule:2,description:"nine in a row on one side"});break}}if(Te>=5)for(const Be of[1,-1]){let Ke=!0;for(let Je=Te-4;Je<=Te;Je++)if((de[Je]-de[Je-1])*Be<=0){Ke=!1;break}if(Ke){Ue.push({index:Te,rule:3,description:Be>0?"six rising":"six falling"});break}}if(Te>=13){let Be=!0;for(let Ke=Te-12;Ke<=Te;Ke++){const Je=de[Ke]-de[Ke-1],Qe=de[Ke+1<=Te?Ke+1:Ke]-de[Ke];if(Ke+1>Te)break;if(Je===0||Qe===0||Je>0==Qe>0){Be=!1;break}}Be&&Ue.push({index:Te,rule:4,description:"fourteen alternating"})}if(Te>=2&&We(Te-2,Te,2,2)&&Ue.push({index:Te,rule:5,description:"two of three past two sigma"}),Te>=4&&We(Te-4,Te,1,4)&&Ue.push({index:Te,rule:6,description:"four of five past one sigma"}),Te>=14){let Be=!0;for(let Ke=Te-14;Ke<=Te;Ke++)if(Math.abs(Ie(Ke))>=1){Be=!1;break}Be&&Ue.push({index:Te,rule:7,description:"fifteen within one sigma"})}if(Te>=7){let Be=!0;for(let Ke=Te-7;Ke<=Te;Ke++)if(Math.abs(Ie(Ke))<=1){Be=!1;break}Be&&Ue.push({index:Te,rule:8,description:"eight beyond one sigma"})}}return Ue}const tt=Object.freeze(["westernElectric","nelson"]);function st(de,ue,me="westernElectric"){return String(me)==="nelson"?Ye(de,ue):Ge(de,ue)}function ft(de,ue,me){let Ae=0;for(let Me=0;Me<de.length;Me++)(de[Me]<ue||de[Me]>me)&&Ae++;return Ae}function mt(de,ue,me,Ae=20){const Me=de.length;if(!Me)return[];const Ie=de[0],We=de[Me-1];if(We===Ie)return[{from:Ie,to:We,count:Me}];const Ue=me-ue,Te=1.5*Ue;let Be=Ue>0?Math.max(Ie,ue-Te):Ie,Ke=Ue>0?Math.min(We,me+Te):We;Ke>Be||(Be=Ie,Ke=We);const Je=Ue>0?2*Ue/Math.cbrt(Me):(Ke-Be)/(Math.ceil(Math.log2(Me))+1),Qe=Je>0?Math.min(Ae,Math.max(1,Math.ceil((Ke-Be)/Je))):1,at=(Ke-Be)/Qe,it=[];for(let gt=0;gt<Qe;gt++)it.push({from:Be+gt*at,to:Be+(gt+1)*at,count:0});for(let gt=0;gt<Me;gt++){const wt=Math.min(Qe-1,Math.max(0,Math.floor((de[gt]-Be)/at)));it[wt].count++}return it[0].from=Ie,it[Qe-1].to=We,it}const St=.95;function jt(de){const ue=Number(de);return Number.isFinite(ue)&&ue>0&&ue<1?ue:St}function Pt(de,ue=St){const me=de.length;if(me<2)return null;let Ae=0;for(let Ke=0;Ke<me;Ke++)Ae+=de[Ke];const Me=Ae/me;let Ie=0;for(let Ke=0;Ke<me;Ke++){const Je=de[Ke]-Me;Ie+=Je*Je}const We=Math.sqrt(Ie/(me-1)),Ue=jt(ue),Be=K(1-(1-Ue)/2,me-1)*We/Math.sqrt(me);return{mean:Me,lower:Me-Be,upper:Me+Be,margin:Be,n:me,confidence:Ue}}function Tt(de,ue,me=St){const Ae=Number(de),Me=Number(ue);if(!(Me>0)||!(Ae>=0)||Ae>Me)return null;const Ie=jt(me),We=G(1-(1-Ie)/2),Ue=Ae/Me,Te=We*We,Be=1+Te/Me,Ke=(Ue+Te/(2*Me))/Be,Je=We/Be*Math.sqrt(Ue*(1-Ue)/Me+Te/(4*Me*Me));return{proportion:Ue,lower:Math.max(0,Ke-Je),upper:Math.min(1,Ke+Je),n:Me,confidence:Ie}}function Mt(de,ue=St){if(!de||!(de.n>2)||!Number.isFinite(de.stdError))return null;const me=jt(ue),Me=K(1-(1-me)/2,de.n-2)*de.stdError;return{slope:de.slope,lower:de.slope-Me,upper:de.slope+Me,margin:Me,confidence:me}}function $t(de,ue,me=St){const Ae=Number(de),Me=Number(ue);if(!Number.isFinite(Ae)||!(Me>1))return null;const Ie=jt(me),Ue=G(1-(1-Ie)/2)*Math.sqrt(1/(9*Me)+Ae*Ae/(2*(Me-1)));return{index:Ae,lower:Ae-Ue,upper:Ae+Ue,margin:Ue,n:Me,confidence:Ie}}function lt(de,ue){return!de||!(de.sd>0)||!Number.isFinite(ue)||!Number.isFinite(de.mean)?null:(ue-de.mean)/de.sd}function et(de){return Number.isFinite(de)?Math.min(1,Math.max(0,2*H(Math.abs(de)/2)-1)):0}function fe(de,ue){const me=new Map,Ae=B(de);let Me=0;for(let Ie=0;Ie<ue.length;Ie++){const We=Ae(ue[Ie]);if(We==null||We===""||typeof We=="number"&&Number.isNaN(We))continue;const Ue=We instanceof Date?We.getTime():typeof We=="object"?String(We):We;me.set(Ue,(me.get(Ue)||0)+1),Me++}return{map:me,total:Me}}function Pe(de,ue,me,Ae){if(!(ue>0)||!(Ae>0))return null;let Me=0;const Ie=new Set(de.keys());for(const We of me.keys())Ie.add(We);for(const We of Ie){const Ue=(de.get(We)||0)/ue,Te=(me.get(We)||0)/Ae;Me+=Math.abs(Ue-Te)}return Me/2}const oe=10;function pe(de,ue,me){if(me&&me.numeric){const Ue=c(de,ue),{n:Te,mean:Be}=A(Ue),Ke=Te>0?lt({mean:me.mean,sd:me.sd},Be):null;return{measure:"standardizedMeanDifference",magnitude:Ke,distance:Ke===null?0:et(Ke),direction:Ke===null?0:Math.sign(Ke),subsetN:Te,populationN:me.n||0,reliable:Te>=oe}}const{map:Me,total:Ie}=fe(de,ue),We=Pe(Me,Ie,me.map,me.total);return{measure:"categoricalTotalVariation",magnitude:We,distance:We===null?0:We,direction:0,subsetN:Ie,populationN:me.total||0,reliable:Ie>=oe}}function Oe(de,ue){if(de&&(de.kind==="float64"||de.kind==="int32"))return!0;const me=B(de);let Ae=0,Me=0;for(let Ie=0;Ie<ue.length&&Ae<200;Ie++){const We=me(ue[Ie]);if(We==null||We==="")continue;if(We instanceof Date)return!1;Ae++;const Ue=typeof We=="number"?We:Number(We);Number.isFinite(Ue)&&Me++}return Ae===0?!1:Me/Ae>=.9}function Ne(de,ue){if(Oe(de,ue)){const Me=c(de,ue),{n:Ie,mean:We,m2:Ue}=A(Me);return{numeric:!0,mean:We,sd:Ie>0?Math.sqrt(Ue/Ie):0,n:Ie}}const{map:me,total:Ae}=fe(de,ue);return{numeric:!1,map:me,total:Ae}}}),$e("packages/core/src/compute/total.js",function(e,W){"use strict";Object.defineProperty(e,"TOTAL_FNS",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"TOTAL_LABELS",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"totalLabel",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"aggregatesFor",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"aggregateAllowed",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"collectValues",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"total",{enumerable:!0,get:function(){return w}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=W("packages/core/src/compute/handle.js"),K=D.presenceReader,Q=D.valueComparator,G=D.valueReader,H=W("packages/core/src/compute/statistics.js"),_=H.STAT_FNS,z=H.STAT_LABELS;function v(A){return!!A&&(A.kind==="float64"||A.kind==="int32")}function S(A,P){const b=P.length;let O=0;if(v(A)){const j=A.values,F=K(A);if(!F){for(let C=0;C<b;C++){const M=j[P[C]];Number.isNaN(M)||(O+=M)}return O}for(let C=0;C<b;C++){const M=P[C];if(F(M)===1){const L=j[M];Number.isNaN(L)||(O+=L)}}return O}const x=G(A);for(let j=0;j<b;j++){const F=l(x(P[j]));F!==null&&(O+=F)}return O}S.kernel=!0;function g(A,P){const b=P.length;let O=0;if(v(A)){const j=A.values,F=K(A);if(!F){for(let C=0;C<b;C++)Number.isNaN(j[P[C]])||O++;return O}for(let C=0;C<b;C++){const M=P[C];F(M)===1&&!Number.isNaN(j[M])&&O++}return O}const x=G(A);for(let j=0;j<b;j++){const F=x(P[j]);F!=null&&!(typeof F=="number"&&Number.isNaN(F))&&O++}return O}g.kernel=!0;function u(A,P){return P.length}u.kernel=!0;function f(A,P){const b=g(A,P);return b===0?null:S(A,P)/b}f.kernel=!0;function a(A,P,b,O){const x=P.length;if(v(A)){const M=A.values,L=K(A);let E=null;if(!L){for(let I=0;I<x;I++){const R=M[P[I]];Number.isNaN(R)||(E===null||(b<0?R<E:R>E))&&(E=R)}return E}for(let I=0;I<x;I++){const R=P[I];if(L(R)===0)continue;const k=M[R];Number.isNaN(k)||(E===null||(b<0?k<E:k>E))&&(E=k)}return E}const j=G(A),F=Q(O);let C=null;for(let M=0;M<x;M++){const L=j(P[M]);L==null||typeof L=="number"&&Number.isNaN(L)||(C===null||(b<0?F(L,C)<0:F(L,C)>0))&&(C=L)}return C}function r(A,P,b){return a(A,P,-1,b&&b.locale)}r.kernel=!0;function t(A,P,b){return a(A,P,1,b&&b.locale)}t.kernel=!0;function n(A,P){return P.length===0?null:G(A)(P[0])}n.kernel=!0;function o(A,P){return P.length===0?null:G(A)(P[P.length-1])}o.kernel=!0;function l(A){if(typeof A=="number")return Number.isNaN(A)?null:A;if(A==null||A===""||typeof A=="boolean")return null;if(A instanceof Date)return A.getTime();const P=Number(A);return Number.isNaN(P)?null:P}const c={sum:S,min:r,max:t,avg:f,count:u,first:n,last:o,countValues:g,..._},i=Object.freeze({...z,sum:"Sum",avg:"Average",min:"Min",max:"Max",count:"Count",countValues:"Count of values",first:"First",last:"Last"});function m(A){return A?typeof A=="string"?i[A]||A:"Total":""}const d=Object.freeze(["sum","avg","min","max","count","countValues","first","last"]);function h(A){const P=A&&A.dataType&&A.dataType.totals&&A.dataType.totals.supported;if(Array.isArray(P))return P.slice();const b=d.filter(O=>O in c);for(const O of Object.keys(c))b.includes(O)||b.push(O);return b}function s(A,P){return typeof P!="string"?!0:h(A).includes(P)}function p(A,P){const b=G(A),O=[];for(let x=0;x<P.length;x++){const j=b(P[x]);j!=null&&O.push(j)}return O}function w(A,P,b,O){const x=P||[];if(typeof b=="string"){const j=c[b];return j?j(A,x,O):(B(`total:${b}`,`unknown total function "${b}"; register it in config.totalFns`),null)}return $(b)?b.kernel===!0?b(A,x,O):b(p(A,x),O||{}):null}}),$e("packages/core/src/compute/windowed.js",function(e,W){"use strict";Object.defineProperty(e,"Window",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"WINDOW_KINDS",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"openWindow",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return Q}});const $=W("packages/core/src/compute/sketch.js").Welford;class B{#e;#t;#n=[];#r;#o;constructor(H,_=0,z=Date.now){if(H!=="count"&&H!=="time"&&H!=="session")throw new RangeError(`unknown window kind: ${H}`);if((H==="count"||H==="time")&&!(_>0))throw new RangeError(`a ${H} window needs a positive span`);this.#e=H,this.#t=Math.floor(_),this.#r=z,this.#o=z()}get size(){return this.#n.length}push(H,_=this.#r()){Number.isFinite(H)&&(this.#n.push({t:_,v:H}),this.#i(_))}#i(H){if(this.#e==="count")for(;this.#n.length>this.#t;)this.#n.shift();else if(this.#e==="time"){const _=H-this.#t;for(;this.#n.length&&this.#n[0].t<_;)this.#n.shift()}}spec(){const H=this.#e==="session"?this.#r()-this.#o:this.#t;return{kind:this.#e,span:H,size:this.#n.length}}values(){return this.#n.map(H=>H.v)}aggregate(){const H=this.spec();if(!this.#n.length)return{over:H,count:0,sum:null,mean:null,min:null,max:null,variance:null,stddev:null};const _=new $;let z=0,v=1/0,S=-1/0;for(const{v:g}of this.#n)z+=g,g<v&&(v=g),g>S&&(S=g),_.add(g);return{over:H,count:this.#n.length,sum:z,mean:_.mean(),min:v,max:S,variance:_.variance(),stddev:_.stddev()}}reduce(H){const _=this.aggregate(),z={sum:_.sum,avg:_.mean,mean:_.mean,min:_.min,max:_.max,count:_.count,variance:_.variance,stddev:_.stddev};if(!(H in z))throw new RangeError(`unknown windowed aggregate: ${H}`);return{value:z[H],over:_.over}}}const D=Object.freeze(["count","time","session"]);function K(G,H=Date.now){const _=G.kind==="time"&&G.minutes!=null?G.minutes*6e4:G.span??0;return new B(G.kind,_,H)}const Q={Window:B,WINDOW_KINDS:D,openWindow:K}}),$e("packages/core/src/compute/rolling.js",function(e,W){"use strict";Object.defineProperty(e,"ROLLING_WINDOW_FIELDS",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"rollingWindow",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"cumulativeToDate",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"periodOverPeriod",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"QUANTILE_SPAN_CAP",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"rollingQuantile",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"seasonalDecompose",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"exponentialSmoothing",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return c}});const $=W("packages/core/src/compute/windowed.js").openWindow,D=W("packages/core/src/compute/sketch.js").KLL,K=Object.freeze({rollingSum:"sum",rollingAvg:"avg",rollingMin:"min",rollingMax:"max"});function Q(i,m,d,h){if(i.kind==="count"){const s=Math.max(1,Math.floor(i.span||0));return{coverage:Math.min(1,m/s),partial:m<s}}if(i.kind==="time"){const s=i.minutes!=null?i.minutes*6e4:i.span||0;if(!(s>0))return{coverage:1,partial:!1};const p=d-h;return{coverage:Math.min(1,p/s),partial:p<s}}return{coverage:null,partial:!1}}function G(i,m){const d=$(m),h=new Map,s=i.length?i[0].at:0;for(let p=0;p<i.length;p++){const{key:w,at:A,value:P}=i[p];Number.isFinite(P)&&d.push(P,A);const b=d.aggregate(),O=Q(m,b.count,A,s);w!=null&&h.set(String(w),{sum:b.sum,avg:b.mean,min:b.min,max:b.max,count:b.count,coverage:O.coverage,partial:O.partial})}return h}function H(i){const m=new Map;let d=0;for(const{key:h,value:s}of i)Number.isFinite(s)&&(d+=s),h!=null&&m.set(String(h),d);return m}function _(i,m=1){const d=new Map,h=Math.max(1,Math.floor(m));for(let s=0;s<i.length;s++){const{key:p,value:w}=i[s];if(p==null)continue;const A=s>=h?i[s-h].value:null,P=Number.isFinite(w)?w:null,b=Number.isFinite(A)?A:null;d.set(String(p),P!==null&&b!==null?P-b:null)}return d}const z=4096;function v(i){let m=i>>>0;return()=>{m+=1831565813;let d=m;return d=Math.imul(d^d>>>15,d|1),d^=d+Math.imul(d^d>>>7,d|61),((d^d>>>14)>>>0)/4294967296}}function S(i,m){const d=i.length;if(d===1)return i[0];const h=(d-1)*m,s=Math.floor(h),p=Math.ceil(h);return s===p?i[s]:i[s]+(h-s)*(i[p]-i[s])}function g(i,m,d={}){const h=Math.min(1,Math.max(0,d.q==null?.5:d.q)),s=Math.max(1,Math.floor(d.cap==null?z:d.cap)),p=v(d.seed==null?2654435769:d.seed),w=new Map,A=i.length?i[0].at:0;if(m.kind==="session"){const b=new D(200,p);let O=0;for(const{key:x,value:j}of i)Number.isFinite(j)&&(b.add(j),O++),x!=null&&w.set(String(x),{value:O?b.quantile(h):null,approx:O>0,count:O,coverage:null,partial:!1});return w}const P=$(m);for(const{key:b,at:O,value:x}of i){Number.isFinite(x)&&P.push(x,O);const j=P.values(),F=j.length;let C=null,M=!1;if(F)if(F<=s)C=S([...j].sort((E,I)=>E-I),h);else{const E=new D(200,p);for(const I of j)E.add(I);C=E.quantile(h),M=!0}const L=Q(m,F,O,A);b!=null&&w.set(String(b),{value:C,approx:M,count:F,coverage:L.coverage,partial:L.partial})}return w}function u(i,m){const d=i.length,h=new Array(d).fill(null),s=Math.floor(m/2),p=m%2===0;for(let w=0;w<d;w++){if(w-s<0||w+s>=d)continue;let A=0,P=!0;if(p)for(let b=-s;b<=s;b++){const O=i[w+b];if(!Number.isFinite(O)){P=!1;break}A+=b===-s||b===s?O*.5:O}else for(let b=-s;b<=s;b++){const O=i[w+b];if(!Number.isFinite(O)){P=!1;break}A+=O}P&&(h[w]=A/m)}return h}function f(i,m){const d=new Map,h=Math.floor(Number(m&&m.period));if(!(h>=2))return d;const s=m&&m.model==="multiplicative",p=i.length,w=i.map(M=>Number.isFinite(M.value)?M.value:null),A=u(w,h),P=new Array(p).fill(null);for(let M=0;M<p;M++){const L=A[M],E=w[M];L===null||E===null||(s?L!==0&&(P[M]=E/L):P[M]=E-L)}const b=new Array(h).fill(0),O=new Array(h).fill(0);for(let M=0;M<p;M++){if(P[M]===null)continue;const L=M%h;b[L]+=P[M],O[L]+=1}const x=s?1:0,j=b.map((M,L)=>O[L]?M/O[L]:x),F=j.reduce((M,L)=>M+L,0)/h,C=s?j.map(M=>F!==0?M/F:1):j.map(M=>M-F);for(let M=0;M<p;M++){const{key:L}=i[M];if(L==null)continue;const E=A[M],I=C[M%h],R=w[M];let k=null;E!==null&&R!==null&&(k=s?E*I!==0?R/(E*I):null:R-E-I),d.set(String(L),{trend:E,seasonal:R===null?null:I,residual:k,coverage:E===null?0:1,partial:E===null})}return d}function a(i,m,d,h=80){const s=(Math.sqrt(5)-1)/2;let p=m,w=d,A=w-s*(w-p),P=p+s*(w-p),b=i(A),O=i(P);for(let x=0;x<h;x++)b<O?(w=P,P=A,O=b,A=w-s*(w-p),b=i(A)):(p=A,A=P,b=O,P=p+s*(w-p),O=i(P));return(p+w)/2}const r=1e-4,t=1-1e-4;function n(i,m){const d=i.length,h=new Array(d).fill(null),s=new Array(d).fill(null);let p=null,w=0;for(let A=0;A<d;A++){const P=i[A];if(!Number.isFinite(P)){p!==null&&(s[A]=p,h[A]=p);continue}if(p===null){p=P,s[A]=P,h[A]=P;continue}s[A]=p,w+=(P-p)**2,p=m*P+(1-m)*p,h[A]=p}return{smoothed:h,fitted:s,sse:w}}function o(i,m,d){const h=i.length,s=new Array(h).fill(null),p=new Array(h).fill(null);let w=null,A=null,P=0;for(let b=0;b<h;b++){const O=i[b];if(!Number.isFinite(O)){w!==null&&(w+=A,s[b]=w);continue}if(w===null){w=O,s[b]=O;continue}if(A===null){A=O-w;const F=w+A;p[b]=F,P+=(O-F)**2;const C=w;w=m*O+(1-m)*(C+A),A=d*(w-C)+(1-d)*A,s[b]=w;continue}const x=w+A;p[b]=x,P+=(O-x)**2;const j=w;w=m*O+(1-m)*(j+A),A=d*(w-j)+(1-d)*A,s[b]=w}return{smoothed:s,fitted:p,sse:P}}function l(i,m={}){const d=new Map,h=m.method==="holt",s=i.map(x=>Number.isFinite(x.value)?x.value:null),p=s.filter(x=>x!==null).length,w=x=>Math.min(t,Math.max(r,x)),A=()=>{for(const{key:x}of i)x!=null&&d.set(String(x),{smoothed:null,fitted:null,alpha:null,beta:null,sse:null});return d};if(p<(h?2:1))return A();let P=Number.isFinite(m.alpha)?w(m.alpha):null,b=h&&Number.isFinite(m.beta)?w(m.beta):null;if(h){if(P===null||b===null){let x=P===null?.5:P,j=b===null?.5:b;for(let F=0;F<6;F++)P===null&&(x=a(C=>o(s,C,j).sse,r,t)),b===null&&(j=a(C=>o(s,x,C).sse,r,t));P=P===null?x:P,b=b===null?j:b}}else P===null&&(P=a(x=>n(s,x).sse,r,t));const O=h?o(s,P,b):n(s,P);for(let x=0;x<i.length;x++){const{key:j}=i[x];j!=null&&d.set(String(j),{smoothed:O.smoothed[x],fitted:O.fitted[x],alpha:P,beta:h?b:null,sse:O.sse})}return d}const c={ROLLING_WINDOW_FIELDS:K,QUANTILE_SPAN_CAP:z,rollingWindow:G,rollingQuantile:g,cumulativeToDate:H,periodOverPeriod:_,seasonalDecompose:f,exponentialSmoothing:l}}),$e("packages/core/src/compute/compare.js",function(e,W){"use strict";Object.defineProperty(e,"COMPARE_MEASURES",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"pooledStandardMeanDifference",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"numericSummary",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"bothNumeric",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"compareColumnAcross",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"compareDatasets",{enumerable:!0,get:function(){return u}});const Z=W("packages/core/src/compute/statistics.js"),$=Z.numbers,B=Z.moments,D=Z.frequencyMap,K=Z.categoricalDistance,Q=Z.normalTotalVariation,G=Z.isNumericColumn,H=Z.SUBSET_RELIABILITY_FLOOR,_=Object.freeze({numeric:"pooledStandardMeanDifference",categorical:"categoricalTotalVariation",common:"totalVariationDistance"});function z(f,a){if(!f||!a||!(f.n>0)||!(a.n>0)||!Number.isFinite(f.mean)||!Number.isFinite(a.mean))return null;const r=(f.n*f.sd*f.sd+a.n*a.sd*a.sd)/(f.n+a.n);return r>0?(f.mean-a.mean)/Math.sqrt(r):null}function v(f,a){const r=$(f,a),{n:t,mean:n,m2:o}=B(r),l=t>0?Math.sqrt(o/t):0;return{mean:n,sd:l,n:t}}function S(f,a,r,t){return G(f,a)&&G(r,t)}function g(f,a,r,t){if(S(f,a,r,t)){const c=v(f,a),i=v(r,t),m=z(c,i);return{measure:_.numeric,magnitude:m,distance:m===null?0:Q(m),direction:m===null?0:Math.sign(m),nA:c.n,nB:i.n,reliable:c.n>=H&&i.n>=H}}const n=D(f,a),o=D(r,t),l=K(n.map,n.total,o.map,o.total);return{measure:_.categorical,magnitude:l,distance:l===null?0:l,direction:0,nA:n.total,nB:o.total,reliable:n.total>=H&&o.total>=H}}function u(f,a,r={}){const t=new Set(f.columns),n=new Set(a.columns),o=f.columns.filter(d=>n.has(d)),l=Array.isArray(r.columns)&&r.columns.length?o.filter(d=>r.columns.includes(d)):o,c=f.indices(),i=a.indices(),m=[];for(const d of l){const h=f.handle(d),s=a.handle(d);if(!h||!s)continue;const p=g(h,c,s,i);m.push({column:d,name:f.name&&f.name(d)||a.name&&a.name(d)||d,measure:p.measure,magnitude:p.magnitude,distance:p.distance,direction:p.direction,nA:p.nA,nB:p.nB,reliable:p.reliable})}return m.sort((d,h)=>h.distance-d.distance||Math.abs(h.magnitude||0)-Math.abs(d.magnitude||0)),{ranked:m,nA:c.length,nB:i.length,unmatched:{onlyA:f.columns.filter(d=>!n.has(d)),onlyB:a.columns.filter(d=>!t.has(d))},measures:_}}}),$e("packages/core/src/compute/anomaly.js",function(e,W){"use strict";Object.defineProperty(e,"MAD_SCALE",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"DEFAULT_MODIFIED_Z_THRESHOLD",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"DEFAULT_IQR_K",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"DEFAULT_CHI_SQUARE_P",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"ANOMALY_METHODS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"robustSpread",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"modifiedZScores",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"iqrFences",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"chiSquareCdf",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"chiSquareQuantile",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"mahalanobis",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"DEFAULT_ROLLING_WINDOW",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"rollingAnomalies",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"anomalyCondition",{enumerable:!0,get:function(){return c}});const $=W("packages/core/src/compute/statistics.js").quantileSorted,D=W("packages/core/src/compute/special.js").logGamma,K=.6745,Q=3.5,G=1.5,H=.975,_=Object.freeze(["modifiedZScore","iqr","mahalanobis"]);function z(i){if(!i.length)return null;const d=Array.from(i,Number).sort((w,A)=>w-A),h=$(d,.5),s=d.map(w=>Math.abs(w-h)).sort((w,A)=>w-A),p=$(s,.5);return{median:h,mad:p}}function v(i,m={}){const d=Number.isFinite(m.threshold)?m.threshold:Q,h=i.length,s=new Array(h).fill(null),p=new Array(h).fill(!1),w=[];for(let b=0;b<h;b++){const O=Number(i[b]);Number.isFinite(O)&&w.push(O)}if(!w.length)return{median:null,mad:null,threshold:d,scores:s,flags:p,flagged:0};const A=z(w);if(A.mad===0)return{median:A.median,mad:0,threshold:d,scores:s,flags:p,flagged:0};let P=0;for(let b=0;b<h;b++){const O=Number(i[b]);if(!Number.isFinite(O))continue;const x=K*(O-A.median)/A.mad;s[b]=x,Math.abs(x)>d&&(p[b]=!0,P++)}return{median:A.median,mad:A.mad,threshold:d,scores:s,flags:p,flagged:P}}function S(i,m={}){const d=Number.isFinite(m.k)?m.k:G,h=[];for(let P=0;P<i.length;P++){const b=Number(i[P]);Number.isFinite(b)&&h.push(b)}if(!h.length)return null;const s=h.sort((P,b)=>P-b),p=$(s,.25),w=$(s,.75),A=w-p;return{q1:p,q3:w,iqr:A,lower:p-d*A,upper:w+d*A,k:d}}function g(i,m){if(m<=0)return 0;const d=D(i);if(m<i+1){let b=i,O=1/i,x=O;for(let j=0;j<1e3&&(b+=1,x*=m/b,O+=x,!(Math.abs(x)<Math.abs(O)*1e-15));j++);return O*Math.exp(-m+i*Math.log(m)-d)}const h=1e-300;let s=m+1-i,p=1/h,w=1/s,A=w;for(let b=1;b<1e3;b++){const O=-b*(b-i);s+=2,w=O*w+s,Math.abs(w)<h&&(w=h),p=s+O/p,Math.abs(p)<h&&(p=h),w=1/w;const x=w*p;if(A*=x,Math.abs(x-1)<1e-15)break}return 1-Math.exp(-m+i*Math.log(m)-d)*A}function u(i,m){return i<=0?0:g(m/2,i/2)}function f(i,m=H){if(!(m>0)||!(m<1))return NaN;let d=0,h=Math.max(1,i);for(;u(h,i)<m;)h*=2;for(let s=0;s<200;s++){const p=(d+h)/2;if(u(p,i)<m?d=p:h=p,h-d<1e-10)break}return(d+h)/2}function a(i){const m=i.length,d=i.map((h,s)=>{const p=h.slice();for(let w=0;w<m;w++)p.push(s===w?1:0);return p});for(let h=0;h<m;h++){let s=h;for(let w=h+1;w<m;w++)Math.abs(d[w][h])>Math.abs(d[s][h])&&(s=w);if(Math.abs(d[s][h])<1e-12)return null;if(s!==h){const w=d[s];d[s]=d[h],d[h]=w}const p=d[h][h];for(let w=0;w<2*m;w++)d[h][w]/=p;for(let w=0;w<m;w++){if(w===h)continue;const A=d[w][h];if(A!==0)for(let P=0;P<2*m;P++)d[w][P]-=A*d[h][P]}}return d.map(h=>h.slice(m))}function r(i,m){const d=i.length,h=new Array(m).fill(0);for(const w of i)for(let A=0;A<m;A++)h[A]+=w[A];for(let w=0;w<m;w++)h[w]/=d;const s=Array.from({length:m},()=>new Array(m).fill(0));for(const w of i)for(let A=0;A<m;A++){const P=w[A]-h[A];for(let b=A;b<m;b++)s[A][b]+=P*(w[b]-h[b])}const p=d>1?d-1:1;for(let w=0;w<m;w++)for(let A=w;A<m;A++)s[w][A]/=p,s[A][w]=s[w][A];return{mean:h,cov:s}}function t(i,m={}){const d=Number.isFinite(m.p)?m.p:H,h=Number.isFinite(m.ridge)?m.ridge:1e-6,s=i.length;if(!s)return null;const p=i[0].length;if(!p)return null;const w=new Array(s).fill(null),A=new Array(s).fill(null),P=new Array(s).fill(!1),b=[],O=[];for(let I=0;I<s;I++){const R=i[I];let k=R.length===p;const y=new Array(p);for(let T=0;k&&T<p;T++){const V=Number(R[T]);Number.isFinite(V)?y[T]=V:k=!1}k&&(b.push(I),O.push(y))}const x=p,j=f(x,d);if(O.length<=p)return{center:[],df:x,cutoff:j,singular:!0,used:O.length,distances:w,squared:A,flags:P,flagged:0};const{mean:F,cov:C}=r(O,p);let M=a(C),L=!1;if(!M){L=!0;let I=0;for(let y=0;y<p;y++)I+=C[y][y];const R=I/p*h||h,k=C.map((y,T)=>y.map((V,q)=>T===q?V+R:V));if(M=a(k),!M)return{center:F,df:x,cutoff:j,singular:!0,used:O.length,distances:w,squared:A,flags:P,flagged:0}}let E=0;for(let I=0;I<O.length;I++){const R=O[I],k=new Array(p);for(let V=0;V<p;V++)k[V]=R[V]-F[V];let y=0;for(let V=0;V<p;V++){let q=0;for(let Y=0;Y<p;Y++)q+=M[V][Y]*k[Y];y+=k[V]*q}y<0&&(y=0);const T=b[I];A[T]=y,w[T]=Math.sqrt(y),y>j&&(P[T]=!0,E++)}return{center:F,df:x,cutoff:j,singular:L,used:O.length,distances:w,squared:A,flags:P,flagged:E}}const n=20,o=Object.freeze(["rollingModifiedZScore","rollingIqr"]);function l(i,m={}){const d=m.method==="rollingIqr"?"rollingIqr":"rollingModifiedZScore",h=Number.isFinite(m.windowLen)&&m.windowLen>=1?Math.floor(m.windowLen):n,s=Number.isFinite(m.threshold)?m.threshold:Q,p=Number.isFinite(m.k)?m.k:G,w=Number.isFinite(m.minPeriods)&&m.minPeriods>=1?Math.floor(m.minPeriods):h,A=i.length,P=new Array(A).fill(null),b=new Array(A).fill(!1);let O=0;for(let x=0;x<A;x++){const j=Number(i[x]);if(!Number.isFinite(j))continue;const F=Math.max(0,x-h+1),C=[];for(let M=F;M<=x;M++){const L=Number(i[M]);Number.isFinite(L)&&C.push(L)}if(!(C.length<w))if(d==="rollingIqr"){const M=S(C,{k:p});if(!M)continue;(j<M.lower||j>M.upper)&&(b[x]=!0,O++)}else{const M=z(C);if(!M||M.mad===0)continue;const L=K*(j-M.median)/M.mad;P[x]=L,Math.abs(L)>s&&(b[x]=!0,O++)}}return{method:d,windowLen:h,minPeriods:w,threshold:s,k:p,scores:P,flags:b,flagged:O}}function c(i={}){const m=i||{},d=m.field;if(typeof d!="string"||!d)throw new TypeError("[lattice] anomalyCondition: a string `field` naming the numeric property to monitor is required");const h=m.method||"modifiedZScore";if(!(_.includes(h)||o.includes(h))||h==="mahalanobis")throw new RangeError(`[lattice] anomalyCondition: unknown or unsupported method '${h}'`);const p=typeof m.orderBy=="string"?m.orderBy:null,w=m.latest===!0,A=o.includes(h),P=b=>Number(b==null?NaN:b[d]);return b=>{const O=Array.isArray(b)?b.slice():[...b];p&&O.sort((M,L)=>{const E=M?.[p],I=L?.[p];return E===I?0:E==null?-1:I==null?1:E<I?-1:1});const x=O.map(P);let j,F;if(A)({flags:j,scores:F}=l(x,{method:h,windowLen:m.windowLen,threshold:m.threshold,k:m.k,minPeriods:m.minPeriods}));else if(h==="iqr"){const M=S(x,{k:m.k});j=x.map(L=>M?Number.isFinite(L)&&(L<M.lower||L>M.upper):!1),F=x.map(()=>null)}else({flags:j,scores:F}=v(x,{threshold:m.threshold}));if(w){const M=j.length-1;return M<0||!j[M]?!1:{method:h,field:d,flagged:[{row:O[M],score:F[M]}]}}const C=[];for(let M=0;M<j.length;M++)j[M]&&C.push({row:O[M],score:F[M]});return C.length?{method:h,field:d,flagged:C}:!1}}}),$e("packages/core/src/compute/forecast.js",function(e,W){"use strict";Object.defineProperty(e,"FORECAST_METHODS",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"forecast",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return i}});const Z=W("packages/core/src/compute/special.js"),$=Z.normalQuantile,B=Z.studentTQuantile,K=W("packages/core/src/internal/util.js").warnOnce,Q=Object.freeze(["movingAverage","ses","holt","holtWinters","linear"]),G=1e-4,H=1-1e-4;function _(m){const d=[];for(let h=0;h<m.length;h++){const s=m[h];if(s!==null&&typeof s=="object"){const p=Number.isFinite(s.at)?s.at:h,w=Number.isFinite(s.value)?s.value:null;d.push({at:p,value:w})}else d.push({at:h,value:Number.isFinite(s)?Number(s):null})}return d}function z(m){const d=m.filter(A=>A.value!==null),h=d[0],s=d[d.length-1],p=s.at-h.at,w=d.length>1&&p>0?p/(d.length-1):1;return{lastAt:s.at,step:w}}function v(m){return Math.min(H,Math.max(G,m))}function S(m,d=G,h=H,s=80){const p=(Math.sqrt(5)-1)/2;let w=d,A=h,P=A-p*(A-w),b=w+p*(A-w),O=m(P),x=m(b);for(let j=0;j<s;j++)O<x?(A=b,b=P,x=O,P=A-p*(A-w),O=m(P)):(w=P,P=b,O=x,b=w+p*(A-w),x=m(b));return(w+A)/2}function g(m,d){let h=null,s=0,p=0;for(let w=0;w<m.length;w++){const A=m[w];if(A!==null){if(h===null){h=A;continue}s+=(A-h)**2,p+=1,h=d*A+(1-d)*h}}return{level:h,sse:s,m:p}}function u(m,d,h){let s=null,p=null,w=0,A=0;for(let P=0;P<m.length;P++){const b=m[P];if(b===null){s!==null&&p!==null&&(s+=p);continue}if(s===null){s=b;continue}p===null&&(p=b-s);const O=s+p;w+=(b-O)**2,A+=1;const x=s;s=d*b+(1-d)*(x+p),p=h*(s-x)+(1-h)*p}return{level:s,trend:p,sse:w,m:A}}function f(m,d,h,s,p){const w=m.length;if(w<2*d)return null;const A=L=>{let E=0,I=0;for(let R=L;R<L+d&&R<w;R++)m[R]!==null&&(E+=m[R],I+=1);return I?E/I:null},P=A(0),b=A(d);if(P===null||b===null)return null;let O=P,x=(b-P)/d;const j=new Array(d).fill(0);for(let L=0;L<d;L++)j[L]=m[L]===null?0:m[L]-O;const F=j.reduce((L,E)=>L+E,0)/d;for(let L=0;L<d;L++)j[L]-=F;let C=0,M=0;for(let L=d;L<w;L++){const E=L%d,I=j[E],R=m[L];if(R===null){O+=x;continue}const k=O+x+I;C+=(R-k)**2,M+=1;const y=O;O=h*(R-I)+(1-h)*(O+x),x=s*(O-y)+(1-s)*x,j[E]=p*(R-O)+(1-p)*I}return{level:O,trend:x,season:j,phase:(w-1)%d,sse:C,count:M}}function a(m,d,h){let s=1;for(const w of d)s+=w*w;const p=Math.sqrt(m*s);return{se:p,margin:h*p}}function r(m,d={}){if(!m||typeof m.length!="number"||m.length===0)return null;const h=Q.includes(d.method)?d.method:"linear",s=Math.max(1,Math.floor(Number(d.horizon)||1)),p=Number.isFinite(d.confidence)&&d.confidence>0&&d.confidence<1?d.confidence:.95,w=1-(1-p)/2,A=_(m),P=A.map(C=>C.value),b=P.filter(C=>C!==null),O=b.length,{lastAt:x,step:j}=O?z(A):{lastAt:0,step:1},F=C=>x+C*j;return h==="linear"?t(A,O,s,p,w,F):h==="movingAverage"?n(b,O,s,p,w,d,F):h==="ses"?o(P,O,s,p,w,d,F):h==="holt"?l(P,O,s,p,w,d,F):c(P,O,s,p,w,d,F)}function t(m,d,h,s,p,w){if(d<2)return null;let A=0,P=0;for(const R of m)R.value!==null&&(A+=R.at,P+=R.value);A/=d,P/=d;let b=0,O=0,x=0;for(const R of m){if(R.value===null)continue;const k=R.at-A,y=R.value-P;b+=k*k,O+=k*y,x+=y*y}if(b===0)return null;const j=O/b,F=P-j*A,C=x===0?1:Math.max(0,Math.min(1,O*O/(b*x))),M=Math.max(0,x-j*O),L=d>2?Math.sqrt(M/(d-2)):null,E=d>2?B(p,d-2):null,I=[];for(let R=1;R<=h;R++){const k=w(R),y=F+j*k;let T=null,V=null,q=null,Y=null,J=null;if(L!==null){const ee=1/d+(k-A)**2/b,ne=L*Math.sqrt(1+ee),ie=L*Math.sqrt(ee);J=ne,T=y-E*ne,V=y+E*ne,q=y-E*ie,Y=y+E*ie}I.push({step:R,at:k,mean:y,lower:T,upper:V,lowerMean:q,upperMean:Y,se:J})}return{method:"linear",horizon:h,confidence:s,n:d,sigma:L,r2:C,params:{slope:j,intercept:F},points:I}}function n(m,d,h,s,p,w,A){if(d<1)return null;const P=Math.max(1,Math.min(d,Math.floor(Number(w.windowLen)||d))),b=m.slice(d-P);let O=0;for(const L of b)O+=L;const x=O/P;let j=null,F=null;if(P>1){let L=0;for(const I of b)L+=(I-x)**2;j=Math.sqrt(L/(P-1))*Math.sqrt(1+1/P),F=B(p,P-1)}const C=j===null?null:F*j,M=[];for(let L=1;L<=h;L++)M.push({step:L,at:A(L),mean:x,lower:C===null?null:x-C,upper:C===null?null:x+C,se:j});return{method:"movingAverage",horizon:h,confidence:s,n:d,sigma:j===null?null:j,params:{windowLen:P},points:M}}function o(m,d,h,s,p,w,A){if(d<1)return null;let P=Number.isFinite(w.alpha)?v(w.alpha):null;P===null&&(P=S(F=>g(m,F).sse));const b=g(m,P),O=$(p),x=b.m>0?b.sse/b.m:null,j=[];for(let F=1;F<=h;F++){const C=b.level;let M=null,L=null,E=null;if(x!==null){const I=[];for(let k=1;k<F;k++)I.push(P);const R=a(x,I,O);E=R.se,M=C-R.margin,L=C+R.margin}j.push({step:F,at:A(F),mean:C,lower:M,upper:L,se:E})}return{method:"ses",horizon:h,confidence:s,n:d,sigma:x===null?null:Math.sqrt(x),params:{alpha:P},points:j}}function l(m,d,h,s,p,w,A){if(d<2)return null;let P=Number.isFinite(w.alpha)?v(w.alpha):null,b=Number.isFinite(w.beta)?v(w.beta):null;if(P===null||b===null){let M=P===null?.5:P,L=b===null?.5:b;for(let E=0;E<6;E++)P===null&&(M=S(I=>u(m,I,L).sse)),b===null&&(L=S(I=>u(m,M,I).sse));P=P===null?M:P,b=b===null?L:b}const O=u(m,P,b),x=$(p),j=O.m>0?O.sse/O.m:null,F=P*b,C=[];for(let M=1;M<=h;M++){const L=O.level+M*O.trend;let E=null,I=null,R=null;if(j!==null){const k=[];for(let T=1;T<M;T++)k.push(P+T*F);const y=a(j,k,x);R=y.se,E=L-y.margin,I=L+y.margin}C.push({step:M,at:A(M),mean:L,lower:E,upper:I,se:R})}return{method:"holt",horizon:h,confidence:s,n:d,sigma:j===null?null:Math.sqrt(j),params:{alpha:P,beta:b},points:C}}function c(m,d,h,s,p,w,A){const P=Math.floor(Number(w.period));if(!(P>=2))return K("forecast.holtWinters.period","forecast: holtWinters needs a period (opts.period >= 2)"),null;if(d<2*P)return null;let b=Number.isFinite(w.alpha)?v(w.alpha):null,O=Number.isFinite(w.beta)?v(w.beta):null,x=Number.isFinite(w.gamma)?v(w.gamma):null;const j=(R,k,y)=>{const T=f(m,P,R,k,y);return T?T.sse:1/0};if(b===null||O===null||x===null){let R=b===null?.5:b,k=O===null?.5:O,y=x===null?.5:x;for(let T=0;T<8;T++)b===null&&(R=S(V=>j(V,k,y))),O===null&&(k=S(V=>j(R,V,y))),x===null&&(y=S(V=>j(R,k,V)));b=b===null?R:b,O=O===null?k:O,x=x===null?y:x}const F=f(m,P,b,O,x);if(!F)return null;const C=$(p),M=F.count>0?F.sse/F.count:null,L=b*O,E=x*(1-b),I=[];for(let R=1;R<=h;R++){const k=F.season[(F.phase+R)%P],y=F.level+R*F.trend+k;let T=null,V=null,q=null;if(M!==null){const Y=[];for(let ee=1;ee<R;ee++)Y.push(b+ee*L+(ee%P===0?E:0));const J=a(M,Y,C);q=J.se,T=y-J.margin,V=y+J.margin}I.push({step:R,at:A(R),mean:y,lower:T,upper:V,se:q})}return{method:"holtWinters",horizon:h,confidence:s,n:d,sigma:M===null?null:Math.sqrt(M),params:{alpha:b,beta:O,gamma:x,period:P},points:I}}const i={FORECAST_METHODS:Q,forecast:r}}),$e("packages/core/src/compute/hypothesis.js",function(e,W){"use strict";Object.defineProperty(e,"GROUP_TESTS",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"NORMALITY_ALPHA",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"HL_PAIR_LIMIT",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"welchTTest",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"mannWhitneyUTest",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"chiSquareTest",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"compareGroups",{enumerable:!0,get:function(){return C}});const $=W("packages/core/src/internal/util.js").warnOnce,D=W("packages/core/src/compute/handle.js").valueReader,K=W("packages/core/src/compute/statistics.js"),Q=K.numbers,G=K.moments,H=K.frequencyMap,_=K.categoricalDistance,z=K.isNumericColumn,v=K.jarqueBera,S=K.proportionInterval,g=K.SUBSET_RELIABILITY_FLOOR,f=W("packages/core/src/compute/compare.js").pooledStandardMeanDifference,a=W("packages/core/src/compute/special.js"),r=a.studentT,t=a.studentTQuantile,n=a.normalCdf,o=a.normalQuantile,l=a.chiSquareUpperTail,c=Object.freeze({WELCH:"welch",MANN_WHITNEY:"mannWhitney",CHI_SQUARE:"chiSquare"}),i=.05,m=2e6;function d(M){const L=Number(M);return Number.isFinite(L)&&L>0&&L<1?L:.95}function h(M){const{n:L,mean:E,m2:I}=G(M);return{mean:E,sd:L>0?Math.sqrt(I/L):0,n:L}}function s(M,L){const E=M.length;if(E<2)return 0;let I=0;for(let R=0;R<E;R++){const k=M[R]-L;I+=k*k}return I/(E-1)}function p(M,L){return{name:"pooledStandardMeanDifference",value:f(h(M),h(L))}}function w(M,L,E){const I=M.length,R=L.length;if(I<2||R<2)return null;const k=d(E),{mean:y}=G(M),{mean:T}=G(L),V=s(M,y),q=s(L,T),Y=V/I+q/R;if(!(Y>0))return null;const J=Math.sqrt(Y),ee=(y-T)/J,ne=V/I*(V/I)/(I-1),ie=q/R*(q/R)/(R-1),se=Y*Y/(ne+ie),we=Math.min(1,Math.max(0,2*(1-r(Math.abs(ee),se)))),he=y-T,te=t(1-(1-k)/2,se)*J;return{test:c.WELCH,statistic:ee,statisticName:"t",df:se,pValue:we,interval:{estimate:he,lower:he-te,upper:he+te,confidence:k,method:"welch-t (difference of means)"},effectSize:p(M,L),nA:I,nB:R,reliable:I>=g&&R>=g,method:"Welch's t-test (unequal variances; Welch–Satterthwaite df)"}}function A(M){const L=M.length;if(L===0)return Number.NaN;const E=L>>1;return L%2?M[E]:(M[E-1]+M[E])/2}function P(M,L,E){const I=M.length,R=L.length,k=I*R;if(k===0||k>m)return null;const y=new Float64Array(k);let T=0;for(let ne=0;ne<I;ne++)for(let ie=0;ie<R;ie++)y[T++]=M[ne]-L[ie];y.sort();const V=A(y),q=Math.sqrt(I*R*(I+R+1)/12),Y=o(1-(1-E)/2);let J=Math.round(k/2-Y*q);J>=0||(J=0);const ee=Math.floor((k-1)/2);return J>ee&&(J=ee),{estimate:V,lower:y[J],upper:y[k-1-J],confidence:E,method:"hodges-lehmann (normal approximation)"}}function b(M,L,E){const I=M.length,R=L.length;if(I<1||R<1)return null;const k=d(E),y=I+R,T=new Array(y);for(let we=0;we<I;we++)T[we]={v:M[we],g:0};for(let we=0;we<R;we++)T[I+we]={v:L[we],g:1};T.sort((we,he)=>we.v-he.v);let V=0,q=0,Y=0;for(;Y<y;){let we=Y;for(;we<y&&T[we].v===T[Y].v;)we++;const he=we-Y,te=(Y+1+we)/2;for(let ae=Y;ae<we;ae++)T[ae].g===0&&(V+=te);q+=he*he*he-he,Y=we}const J=V-I*(I+1)/2,ee=I*R/2,ne=I*R/12*(y+1-q/(y*(y-1)));let ie=1;if(ne>0){const we=Math.max(0,Math.abs(J-ee)-.5);ie=Math.min(1,2*n(-we/Math.sqrt(ne)))}const se=P(M,L,k);return{test:c.MANN_WHITNEY,statistic:J,statisticName:"U",df:null,pValue:ie,interval:se,effectSize:p(M,L),nA:I,nB:R,reliable:I>=g&&R>=g,method:"Mann-Whitney U (normal approximation, tie- and continuity-corrected)"}}function O(M,L,E,I,R){const k=S(M,L,R),y=S(E,I,R);if(!k||!y)return null;const T=k.proportion-y.proportion,V=T-Math.sqrt((k.proportion-k.lower)**2+(y.upper-y.proportion)**2),q=T+Math.sqrt((k.upper-k.proportion)**2+(y.proportion-y.lower)**2);return{lower:V,upper:q}}function x(M,L,E,I,R,k={}){if(!(L>0)||!(I>0))return null;const y=new Set([...M.keys(),...E.keys()]),T=y.size;if(T<2)return null;const V=L+I;let q=0;for(const ie of y){const se=M.get(ie)||0,we=E.get(ie)||0,he=se+we,te=L*he/V,ae=I*he/V;te>0&&(q+=(se-te)*(se-te)/te),ae>0&&(q+=(we-ae)*(we-ae)/ae)}const Y=T-1,J=l(q,Y);let ee=null;k.category!==void 0&&y.has(k.category)?ee=k.category:T===2&&([ee]=[...y]);let ne=null;if(ee!==null){const ie=O(M.get(ee)||0,L,E.get(ee)||0,I,d(R));ie&&(ne={estimate:(M.get(ee)||0)/L-(E.get(ee)||0)/I,lower:ie.lower,upper:ie.upper,confidence:d(R),method:"newcombe (difference in this category's share)",category:ee})}return{test:c.CHI_SQUARE,statistic:q,statisticName:"chiSquare",df:Y,pValue:J,interval:ne,effectSize:{name:"categoricalTotalVariation",value:_(M,L,E,I)},nA:L,nB:I,reliable:L>=g&&I>=g,method:"Pearson chi-square test of independence (2×k, no continuity correction)"}}function j(M){return M==null||M===""||typeof M=="number"&&Number.isNaN(M)?null:M instanceof Date?M.getTime():typeof M=="object"?String(M):M}function F(M,L,E){if(E===c.WELCH||E===c.MANN_WHITNEY)return{test:E,chosenBy:"override",reason:`caller override: ${E}`};const I=v(M),R=v(L),k=I===null?null:Math.exp(-I/2),y=R===null?null:Math.exp(-R/2);return k!==null&&k<i||y!==null&&y<i?{test:c.MANN_WHITNEY,chosenBy:"auto",reason:`column family: numeric, non-normal by Jarque-Bera (p < ${i})`}:{test:c.WELCH,chosenBy:"auto",reason:k!==null||y!==null?"column family: numeric, no departure from normality detected":"column family: numeric (too few rows to screen normality)"}}function C(M,L,E,I={}){if(!M||!L)return null;const R=d(I.confidence),k=D(L);let y;if(Array.isArray(I.groups)&&I.groups.length===2)y=[j(I.groups[0]),j(I.groups[1])];else{const{map:we}=H(L,E),he=[...we.entries()].sort((te,ae)=>ae[1]-te[1]).slice(0,2).map(te=>te[0]);if(he.length<2)return $("compareGroups:groups",'[lattice] compareGroups: the "by" column has fewer than two distinct values to group by.'),null;y=he}const[T,V]=y;if(T===null||V===null||T===V)return $("compareGroups:distinct","[lattice] compareGroups: the two groups must be two distinct, present values."),null;const q=[],Y=[];for(let we=0;we<E.length;we++){const he=j(k(E[we]));he===T?q.push(E[we]):he===V&&Y.push(E[we])}if(q.length===0||Y.length===0)return $("compareGroups:empty","[lattice] compareGroups: one of the two groups has no rows in the current set."),null;const J=I.test&&I.test!=="auto"?String(I.test):null,ee=z(M,q.concat(Y));let ne,ie,se;if(J===c.CHI_SQUARE||!J&&!ee){ie=J?"override":"auto",se=J?"caller override: chiSquare":"column family: categorical";const we=H(M,q),he=H(M,Y);ne=x(we.map,we.total,he.map,he.total,R,{category:I.category})}else{if((J===c.WELCH||J===c.MANN_WHITNEY)&&!ee)return $("compareGroups:numeric-override",`[lattice] compareGroups: ${J} needs a numeric column, but the column is not numeric.`),null;const we=Q(M,q),he=Q(M,Y),te=F(we,he,J);ie=te.chosenBy,se=te.reason,ne=te.test===c.MANN_WHITNEY?b(we,he,R):w(we,he,R)}return ne?{...ne,chosenBy:ie,reason:se,groups:[T,V]}:($("compareGroups:degenerate","[lattice] compareGroups: the chosen test had too little to work with (too few values, or no variation)."),null)}}),$e("packages/core/src/columns/detailcolumn.js",function(e,W){"use strict";Object.defineProperty(e,"DETAIL_COLUMN_ID",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"createDetailColumn",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return D}});const Z="__lattice_detail",$=36;function B(K){const Q=K.config&&K.config.detailColumnWidth||$;return{id:Z,field:null,title:"",type:"text",dataType:{base:"text"},nullable:!0,align:"center",generated:!0,control:!0,detailExpander:!0,value:{pure:!0},cell:{render:"detailExpander",align:"center"},edit:{enabled:!1},sort:{enabled:!1,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},pivot:{enabled:!1,index:0},total:null,lookup:null,layout:{width:Q,min:Q,max:Q,pin:K.config&&K.config.detailColumnPin||"start",hidden:!1,resizable:!1,movable:!1,lockPosition:!0},header:{},export:{csv:!1,excel:!1},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(G,H){return!!(H&&H.expanded)},formatValue(){return""}}}const D=B}),$e("packages/core/src/columns/treecolumn.js",function(e,W){"use strict";Object.defineProperty(e,"TREE_COLUMN_ID",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"createTreeColumn",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return Q}});const $=W("packages/core/src/internal/util.js").isFunction,B="__lattice_tree",D=260;function K(G){const H=G.tree||{},_=G.config&&G.config.treeColumnWidth||D,z=()=>(G.columns&&$(G.columns.visible)?G.columns.visible():[]).find(u=>!u.generated)||null,v=(g,u)=>{if(u&&u.group)return u.groupValue;if($(H.label))return H.label(g,u);if(typeof H.label=="string")return g==null?null:g[H.label];const f=z();return f&&$(f.getValue)?f.getValue(g,u):null},S=()=>{if(H.title)return H.title;const g=typeof H.label=="string"?G.columns&&$(G.columns.get)?G.columns.get(H.label):null:z();return g&&(g.title||g.id)||"Hierarchy"};return{id:B,get title(){return S()},field:null,type:"text",dataType:{base:"text"},nullable:!0,align:"start",generated:!0,value:{pure:!0},cell:{render:"group"},edit:{enabled:!1},sort:{enabled:!0,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},pivot:{enabled:!1,index:0},total:null,lookup:null,layout:{width:_,min:140,pin:G.config&&G.config.treeColumnPin||null,hidden:!1,resizable:!0,movable:!1,lockPosition:!0},header:{},export:{csv:!1,excel:!1},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(g,u){return v(g,u)},formatValue(g,u){if(u&&u.grandTotal)return G.config&&G.config.grandTotalLabel||"Total";if(g==null)return"";if(!H.label){const f=z();if(f&&$(f.formatValue))return f.formatValue(g,u)}return String(g)}}}const Q=K}),$e("packages/core/src/columns/pivotcolumns.js",function(e,W){"use strict";Object.defineProperty(e,"PIVOT_PREFIX",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"createPivotColumns",{enumerable:!0,get:function(){return K}});const $=W("packages/core/src/internal/util.js").warnOnce,B="__lattice_pivot",D=500;function K(_){const{pivot:z,valueColumns:v,config:S}=_,g=z&&z.paths||[],u=_.separator||S&&S.pivot&&S.pivot.separator||" | ",f=S&&S.pivot&&S.pivot.maxColumns||D;if(!g.length||!v.length)return{tree:[],leaves:[],error:null};const a=Q(S),r=g.length*v.length+(a?v.length:0);if(r>f){const o=`pivot would generate ${r} columns, above the limit of ${f}. Pivot on a lower-cardinality column, or raise pivot.maxColumns.`;return $(`pivot.maxColumns:${r}`,o),{tree:[],leaves:[],error:o}}const t=[],n=[];for(const o of g){const l=[];for(const c of v){const i=H(o,c,u);l.push(i),n.push(i)}l.length===1?(l[0].title=String(o),t.push(l[0])):t.push({id:`${B}:group:${o}`,title:String(o),columns:l,collapsible:!1,openByDefault:!0,showWhen:"always",marryChildren:!0,generated:!0})}if(a){const o=v.map(c=>G(c,S));n.push(...o);const l=S&&S.pivot&&S.pivot.totalsLabel||"Total";if(o.length===1)o[0].title=l,a==="before"?t.unshift(o[0]):t.push(o[0]);else{const c={id:`${B}:group:__totals`,title:l,columns:o,collapsible:!1,openByDefault:!0,showWhen:"always",marryChildren:!0,generated:!0};a==="before"?t.unshift(c):t.push(c)}}return{tree:t,leaves:n,error:null}}function Q(_){const z=_&&_.pivot&&_.pivot.groupTotals;return z==="before"||z==="after"?z:null}function G(_,z){return{id:`${B}:__total${z&&z.pivot&&z.pivot.separator||" | "}${_.id}`,field:null,title:_.title||_.id,type:_.type,dataType:_.dataType,nullable:!0,align:_.align,generated:!0,pivot:{enabled:!1,index:0,sourceId:_.id,total:!0},value:{pure:!0},cell:{align:_.align},edit:{enabled:!1},sort:{enabled:!1,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},total:_.total,lookup:null,layout:{width:_.layout&&_.layout.width||120,min:80,pin:null,hidden:!1,resizable:!0,movable:!1},header:{},export:{csv:!0,excel:!0},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(v,S){const g=S&&S.totals;return g&&Object.hasOwn(g,_.id)?g[_.id]:null},formatValue(v,S){return v==null?"":_.formatValue?_.formatValue(v,S):String(v)}}}function H(_,z,v){return{id:`${B}:${_}${v}${z.id}`,field:null,title:z.title||z.id,type:z.type,dataType:z.dataType,nullable:!0,align:z.align,generated:!0,pivot:{enabled:!1,index:0,path:_,sourceId:z.id},value:{pure:!0},cell:{align:z.align},edit:{enabled:!1},sort:{enabled:!1,direction:null},filter:{enabled:!1},group:{enabled:!1,index:0,explode:!1},total:z.total,lookup:null,layout:{width:z.layout&&z.layout.width||120,min:80,pin:null,hidden:!1,resizable:!0,movable:!1},header:{},export:{csv:!0,excel:!0},allowGroup:!1,allowPivot:!1,allowTotal:!1,def:{},getValue(){return null},formatValue(S,g){return S==null?"":z.formatValue?z.formatValue(S,g):String(S)}}}}),$e("packages/core/src/compute/group.js",function(e,W){"use strict";Object.defineProperty(e,"packKeys",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"groupByColumns",{enumerable:!0,get:function(){return S}});const Z=W("packages/core/src/compute/handle.js"),$=Z.dictSize,B=Z.identity,D=Z.presenceReader,K=Z.rowCount,Q=Z.valueReader,G="",H="\0",_=1<<20;function z(g,u,f,a){const r=g.length,t=g.map(m=>Q(m)),n=Array.isArray(a)&&a.some(Boolean),o=n?t.map((m,d)=>a[d]?h=>a[d](m(h)):m):t;if(!n&&r>0&&g.every(m=>m&&m.kind==="dictionary"&&m.dict)){const m=g.map(h=>$(h.dict)+1);let d=1;for(let h=0;h<r;h++)d*=m[h];if(d<=Number.MAX_SAFE_INTEGER){const h=g.map(A=>A.values),s=g.map(A=>D(A)),p=A=>{let P=0;for(let b=0;b<r;b++){const O=s[b],x=O&&O(A)===0?m[b]-1:h[b][A];P=P*m[b]+x}return P},w=new Float64Array(f);for(let A=0;A<f;A++)w[A]=p(u[A]);return{packed:w,strings:null,product:d,readers:o,keyOf:p}}}const c=m=>{let d="";for(let h=0;h<r;h++){const s=o[h](m);d+=(h===0?"":G)+(s==null?H:String(s))}return d},i=new Array(f);for(let m=0;m<f;m++)i[m]=c(u[m]);return{packed:null,strings:i,product:1/0,readers:o,keyOf:c}}function v(g,u,f,a){const r=new Uint32Array(a+1);for(let l=0;l<f;l++)r[u[l]+1]++;for(let l=0;l<a;l++)r[l+1]+=r[l];const t=new Uint32Array(f),n=r.slice(0,a);for(let l=0;l<f;l++)t[n[u[l]]++]=g[l];const o=new Array(a);for(let l=0;l<a;l++)o[l]=t.subarray(r[l],r[l+1]);return o}function S(g,u,f={}){const a=g||[],r=u||B(K(a[0],f)),t=r.length;if(a.length===0||t===0)return{keys:[],buckets:[]};const{packed:n,strings:o,product:l,readers:c}=z(a,r,t,f.project),i=new Uint32Array(t);let m=0,d=null;if(n&&l<=Math.max(1024,Math.min(_,t*4))){const w=l,A=new Int32Array(w).fill(-1);for(let P=0;P<t;P++)A[n[P]]=0;for(let P=0;P<w;P++)A[P]===0&&(A[P]=m++);for(let P=0;P<t;P++)i[P]=A[n[P]];d=new Float64Array(m);for(let P=0;P<w;P++)A[P]>=0&&(d[A[P]]=P)}else if(n){const w=new Map;for(let A=0;A<t;A++){const P=n[A];let b=w.get(P);b===void 0&&(b=m++,w.set(P,b)),i[A]=b}d=new Float64Array(m);for(const[A,P]of w)d[P]=A}else{const w=new Map;for(let A=0;A<t;A++){const P=o[A];let b=w.get(P);b===void 0&&(b=m++,w.set(P,b)),i[A]=b}}const h=v(r,i,t,m),s=new Array(m);for(let w=0;w<m;w++){const A=h[w][0],P=new Array(c.length);for(let b=0;b<c.length;b++)P[b]=c[b](A);s[w]=P}const p={keys:s,buckets:h};return d&&(p.packed=d),p}}),$e("packages/core/src/compute/pivot.js",function(e,W){"use strict";Object.defineProperty(e,"KEY_DELIMITER",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"pivotKey",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"joinPath",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"resolvePivotKeys",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"pivot",{enumerable:!0,get:function(){return t}});const $=W("packages/core/src/internal/util.js").warnOnce,D=W("packages/core/src/compute/handle.js").valueComparator,Q=W("packages/core/src/compute/group.js").packKeys,H=W("packages/core/src/compute/total.js").total,_="|",z="/",v=2e3;function S(l,c,i){return`${l}${_}${c}${_}${i}`}function g(l,c){let i="";for(let m=0;m<l.length;m++){const d=l[m];i+=(m===0?"":c)+(d==null?"":String(d))}return i}function u(l,c,i={}){const m=i.separator||z,d=c.length,{keyOf:h,readers:s}=Q(l,c,0),p=new Map,w=[],A=[];for(let C=0;C<d;C++){const M=c[C],L=h(M);if(p.has(L))continue;p.set(L,w.length),A.push(L);const E=new Array(s.length);for(let I=0;I<s.length;I++)E[I]=s[I](M);w.push(E)}const P=D(i.locale),b=w.map((C,M)=>M);b.sort((C,M)=>{const L=w[C],E=w[M];for(let I=0;I<L.length;I++){const R=f(L[I],E[I],P);if(R!==0)return R}return C-M});const O=new Array(b.length),x=new Array(b.length),j=new Map;for(let C=0;C<b.length;C++){const M=b[C];O[C]=w[M],x[C]=g(w[M],m),j.set(A[M],C)}return{keys:O,paths:x,idOf:C=>{const M=j.get(h(C));return M===void 0?-1:M}}}function f(l,c,i){const m=l==null,d=c==null;return m||d?m&&d?0:m?1:-1:i(l,c)}function a(l){const c=l.values||l.totals||[];if(c.length&&typeof c[0]=="object"&&c[0]!==null)return c.filter(h=>h&&h.handle);const i=typeof l.handle=="function"?l.handle:null;if(!i)return c.length&&$("pivot:handles","pivot was given total column ids but no handle(colId) resolver, so no cell values were reduced. Pass values: [{ colId, handle, fn }] or opts.handle."),[];const m=typeof l.totalOf=="function"?l.totalOf:null,d=[];for(const h of c){const s=i(h);s&&d.push({colId:h,handle:s,fn:m?m(h):"sum"})}return d}function r(l,c,i){if(Array.isArray(l)){const m=i||{};return{...m,pivotHandles:l,order:c||null,groups:m.groups||null}}return l||{}}function t(l,c,i){const m=r(l,c,i),d=m.separator||z,h=a(m),s=m.maxColumns===void 0?v:m.maxColumns,p=m.groups&&m.groups.buckets?m.groups:null,w=p?p.buckets:[m.order||new Uint32Array(0)],A=m.groupPaths||(p?p.keys.map(L=>g(L,d)):[""]),P=o(w),{keys:b,paths:O,idOf:x}=u(m.pivotHandles||[],P,m),j=O.length*Math.max(1,h.length),F=n(O,h,d);if(s&&j>s){const L=new Map;return{keys:b,paths:O,fields:F,groupPaths:A,columns:j,values:L,cells:L,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${j} columns, above pivot.maxColumns of ${s}. Narrow the pivot columns or raise the limit.`,columns:j,maxColumns:s}}}const C=new Map,M=O.length;for(let L=0;L<w.length;L++){const E=w[L],I=A[L]===void 0?"":A[L],R=E.length;if(R===0)continue;const k=new Int32Array(R),y=new Uint32Array(M+1);for(let q=0;q<R;q++){const Y=x(E[q]);k[q]=Y,Y>=0&&y[Y+1]++}for(let q=0;q<M;q++)y[q+1]+=y[q];const T=new Uint32Array(R),V=y.slice(0,M);for(let q=0;q<R;q++){const Y=k[q];Y>=0&&(T[V[Y]++]=E[q])}for(let q=0;q<M;q++){const Y=y[q],J=y[q+1];if(J===Y)continue;const ee=T.subarray(Y,J);for(let ne=0;ne<h.length;ne++){const ie=h[ne],se=H(ie.handle,ee,ie.fn,m.totalContext||{locale:m.locale});C.set(S(I,O[q],ie.colId),se)}}}return{keys:b,paths:O,fields:F,groupPaths:A,columns:j,values:C,cells:C,error:null}}function n(l,c,i){if(c.length===0)return l.slice();const m=[];for(const d of l)for(const h of c)m.push(`${d}${i}${h.colId}`);return m}function o(l){if(l.length===1)return l[0]||new Uint32Array(0);let c=0;for(const d of l)c+=d?d.length:0;const i=new Uint32Array(c);let m=0;for(const d of l)!d||d.length===0||(i.set(d,m),m+=d.length);return i}}),$e("packages/core/src/store/bitset.js",function(e,W){"use strict";Object.defineProperty(e,"Bitset",{enumerable:!0,get:function(){return $}});const Z=8;class ${static#e=new Uint8Array(256);static{for(let D=1;D<256;D++)$.#e[D]=$.#e[D>>1]+(D&1)}#t;#n;constructor(D=0){const K=Math.max(0,D|0);this.#n=K,this.#t=new Uint8Array(Math.ceil(K/Z))}get size(){return this.#n}get words(){return this.#t}get bytes(){return this.#t?this.#t.byteLength:0}get(D){return D<0||D>=this.#n?0:this.#t[D>>3]>>(D&7)&1}set(D){return D>=0&&D<this.#n&&(this.#t[D>>3]|=1<<(D&7)),this}clear(D){return D>=0&&D<this.#n&&(this.#t[D>>3]&=~(1<<(D&7))),this}assign(D,K){return K?this.set(D):this.clear(D)}fill(D=!1){return this.#t.fill(D?255:0),D&&this.#r(),this}grow(D){const K=Math.max(0,D|0);if(K<=this.#n)return this;const Q=Math.ceil(K/Z);if(Q>this.#t.length){const G=new Uint8Array(Q);G.set(this.#t),this.#t=G}return this.#n=K,this}count(){const D=this.#t,K=$.#e;let Q=0;for(let G=0;G<D.length;G++)Q+=K[D[G]];return Q}and(D){const K=D instanceof $?D.words:D,Q=this.#t,G=Math.min(Q.length,K.length);for(let H=0;H<G;H++)Q[H]&=K[H];for(let H=G;H<Q.length;H++)Q[H]=0;return this}or(D){const K=D instanceof $?D.words:D,Q=this.#t,G=Math.min(Q.length,K.length);for(let H=0;H<G;H++)Q[H]|=K[H];return this}not(){const D=this.#t;for(let K=0;K<D.length;K++)D[K]=~D[K]&255;return this.#r(),this}clone(){const D=new $(this.#n);return D.words.set(this.#t.subarray(0,D.words.length)),D}release(){this.#t=new Uint8Array(0),this.#n=0}#r(){const D=this.#n&7;if(D===0)return;const K=this.#n>>3;K<this.#t.length&&(this.#t[K]&=(1<<D)-1)}static from(D){const K=Array.isArray(D)?D:Array.from(D),Q=new $(K.length);for(let G=0;G<K.length;G++)K[G]&&Q.set(G);return Q}}}),$e("packages/core/src/store/dictionary.js",function(e,W){"use strict";Object.defineProperty(e,"Dictionary",{enumerable:!0,get:function(){return D}});const Z=W("packages/core/src/internal/util.js"),$=Z.collator,B=Z.defaultCompare;class D{#e;#t=new Map;#n=0;#r=null;#o=-1;#i="\0";constructor(Q=[]){this.#e=[];for(let G=0;G<Q.length;G++){const H=Q[G];this.#t.has(H)||(this.#t.set(H,this.#e.length),this.#e.push(H))}}get size(){return this.#e.length}get version(){return this.#n}get bytes(){let Q=this.#e.length*8;for(let G=0;G<this.#e.length;G++){const H=this.#e[G];typeof H=="string"&&(Q+=H.length*2),Q+=16}return Q}codeOf(Q){const G=this.#t.get(Q);if(G!==void 0)return G;const H=this.#e.length;return this.#e.push(Q),this.#t.set(Q,H),this.#n++,H}lookup(Q){const G=this.#t.get(Q);return G===void 0?-1:G}has(Q){return this.#t.has(Q)}valueOf(Q){return this.#e[Q]}values(){return this.#e}ranks(Q){const G=Q||"";if(this.#r&&this.#o===this.#n&&this.#i===G)return this.#r;const H=this.#e.length,_=new Array(H);for(let g=0;g<H;g++)_[g]=g;const z=$(Q).compare,v=this.#e;_.sort((g,u)=>this.#s(v[g],v[u],z));const S=new Uint32Array(H);for(let g=0;g<H;g++)S[_[g]]=g;return this.#r=S,this.#o=this.#n,this.#i=G,S}#s(Q,G,H){return typeof Q=="string"&&typeof G=="string"?H(Q,G):B(Q,G)}}}),$e("packages/core/src/store/multivalue.js",function(e,W){"use strict";Object.defineProperty(e,"MultiValue",{enumerable:!0,get:function(){return Z}});class Z{#e;#t;#n=0;#r=0;constructor(B={}){const D=Math.max(1,B.rows??16),K=Math.max(1,B.values??D);this.#e=new Int32Array(K),this.#t=new Uint32Array(D+1)}get values(){return this.#e}get offsets(){return this.#t}get rows(){return this.#n}get length(){return this.#r}get bytes(){return this.#e.byteLength+this.#t.byteLength}count(B){return B<0||B>=this.#n?0:this.#t[B+1]-this.#t[B]}at(B){return B<0||B>=this.#n?this.#e.subarray(0,0):this.#e.subarray(this.#t[B],this.#t[B+1])}has(B,D){if(B<0||B>=this.#n)return!1;const K=this.#e,Q=this.#t[B+1];for(let G=this.#t[B];G<Q;G++)if(K[G]===D)return!0;return!1}hasAny(B,D){for(let K=0;K<D.length;K++)if(this.has(B,D[K]))return!0;return!1}hasAll(B,D){for(let K=0;K<D.length;K++)if(!this.has(B,D[K]))return!1;return!0}hasNone(B,D){return!this.hasAny(B,D)}push(B){const D=this.#n,K=B.length;this.#o(D+1),this.#i(this.#r+K);const Q=this.#r;for(let G=0;G<K;G++)this.#e[Q+G]=B[G]|0;return this.#r+=K,this.#n=D+1,this.#t[D]=Q,this.#t[D+1]=this.#r,D}write(B,D){if(B===this.#n){this.push(D);return}if(B<0||B>this.#n)return;const K=this.#t[B],Q=this.#t[B+1],G=D.length;if(Q-K===G){for(let H=0;H<G;H++)this.#e[K+H]=D[H]|0;return}this.#s(B,D)}compact(B,D,K){const Q=this.#e,G=this.#t,H=this.#n,_=new Int32Array(Math.max(1,this.#r)),z=new Uint32Array(D+1);let v=0;for(let S=0;S<H;S++){if(B[S]===K)continue;const g=G[S],u=G[S+1];z[B[S]]=v;for(let f=g;f<u;f++)_[v++]=Q[f];z[B[S]+1]=v}this.#e=_,this.#t=z,this.#n=D,this.#r=v}release(){this.#e=new Int32Array(0),this.#t=new Uint32Array(1),this.#n=0,this.#r=0}#o(B){if(B+1<=this.#t.length)return;let D=this.#t.length-1;for(;D<B;)D=D*2||16;const K=new Uint32Array(D+1);K.set(this.#t),this.#t=K}#i(B){if(B<=this.#e.length)return;let D=this.#e.length;for(;D<B;)D=D*2||16;const K=new Int32Array(D);K.set(this.#e),this.#e=K}#s(B,D){const K=this.#e,Q=this.#t,G=this.#n,H=D.length-(Q[B+1]-Q[B]),_=new Int32Array(Math.max(1,this.#r+H)),z=new Uint32Array(Q.length);let v=0;for(let S=0;S<G;S++){if(z[S]=v,S===B)for(let g=0;g<D.length;g++)_[v++]=D[g]|0;else for(let g=Q[S];g<Q[S+1];g++)_[v++]=K[g];z[S+1]=v}this.#e=_,this.#t=z,this.#r=v}}}),$e("packages/core/src/compute/sort.js",function(e,W){"use strict";Object.defineProperty(e,"radixSortFloat64",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"radixSortInt32",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"rankSortDictionary",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"mergeSortComparator",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"rankSortStrings",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"collateStringRanks",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"sortColumn",{enumerable:!0,get:function(){return C}}),Object.defineProperty(e,"sortMulti",{enumerable:!0,get:function(){return M}});const Z=W("packages/core/src/compute/handle.js"),$=Z.bitReader,B=Z.dictRanks,D=Z.dictSize,K=Z.identity,Q=Z.isMissing,G=Z.presenceReader,H=Z.rowCount,_=Z.valueComparator,z=Z.valueReader,v=new Uint32Array(0),S=new ArrayBuffer(8),g=new Float64Array(S),u=new Uint32Array(S),f=(g[0]=-1,(u[1]&2147483648)!==0?1:0),a=f===1?0:1;function r(E,I){g[0]=E;let R=u[f],k=u[a];(R&2147483648)!==0?(R=~R>>>0,k=~k>>>0):R=(R^2147483648)>>>0,I[0]=k,I[1]=R}function t(E,I,R,k){if(k<2)return E;const y=new Uint32Array(256*8);for(let ie=0;ie<k;ie++){const se=I[ie],we=R[ie];y[se&255]++,y[256+(se>>>8&255)]++,y[512+(se>>>16&255)]++,y[768+(se>>>24&255)]++,y[1024+(we&255)]++,y[1280+(we>>>8&255)]++,y[1536+(we>>>16&255)]++,y[1792+(we>>>24&255)]++}let T=E,V=I,q=R,Y=new Uint32Array(k),J=new Uint32Array(k),ee=new Uint32Array(k);const ne=new Uint32Array(256);for(let ie=0;ie<8;ie++){const se=ie<<8,we=(ie&3)<<3,he=ie>=4;let te=!1;for(let be=0;be<256;be++)if(y[se+be]===k){te=!0;break}if(te)continue;let ae=0;for(let be=0;be<256;be++)ne[be]=ae,ae+=y[se+be];for(let be=0;be<k;be++){const je=V[be],xe=q[be],Ce=(he?xe:je)>>>we&255,ke=ne[Ce]++;Y[ke]=T[be],J[ke]=je,ee[ke]=xe}let ge=T;T=Y,Y=ge,ge=V,V=J,J=ge,ge=q,q=ee,ee=ge}return T}function n(E,I,R){if(R<2)return E;const k=new Uint32Array(256*4);for(let J=0;J<R;J++){const ee=I[J];k[ee&255]++,k[256+(ee>>>8&255)]++,k[512+(ee>>>16&255)]++,k[768+(ee>>>24&255)]++}let y=E,T=I,V=new Uint32Array(R),q=new Uint32Array(R);const Y=new Uint32Array(256);for(let J=0;J<4;J++){const ee=J<<8,ne=J<<3;let ie=!1;for(let he=0;he<256;he++)if(k[ee+he]===R){ie=!0;break}if(ie)continue;let se=0;for(let he=0;he<256;he++)Y[he]=se,se+=k[ee+he];for(let he=0;he<R;he++){const te=T[he],ae=Y[te>>>ne&255]++;V[ae]=y[he],q[ae]=te}let we=y;y=V,V=we,we=T,T=q,q=we}return y}function o(E,I,R,k){const y=new Uint32Array(k+1);for(let q=0;q<R;q++)y[I[q]]++;let T=0;for(let q=0;q<=k;q++){const Y=y[q];y[q]=T,T+=Y}const V=new Uint32Array(R);for(let q=0;q<R;q++)V[y[I[q]]++]=E[q];return V}function l(E,I,R,k){return R<2?E:k<=65536||k<=R*2?o(E,I,R,k):n(E,I,R)}function c(E,I){return E.length===I&&E.byteOffset===0?E:Uint32Array.prototype.slice.call(E,0,I)}function i(E,I,R=!1){const k=I||K(E.length),y=k.length;if(y<2)return Uint32Array.from(k);const T=new Uint32Array(y),V=new Uint32Array(y),q=new Uint32Array(y),Y=new Uint32Array(y),J=new Uint32Array(2);let ee=0,ne=0;for(let we=0;we<y;we++){const he=k[we],te=E[he];if(Number.isNaN(te)){Y[ne++]=he;continue}r(te,J),R?(V[ee]=~J[0]>>>0,q[ee]=~J[1]>>>0):(V[ee]=J[0],q[ee]=J[1]),T[ee++]=he}const ie=t(T.subarray(0,ee),V.subarray(0,ee),q.subarray(0,ee),ee);if(ne===0)return c(ie,ee);const se=new Uint32Array(y);return se.set(ie.subarray(0,ee),0),se.set(Y.subarray(0,ne),ee),se}function m(E,I,R=!1){const k=I||K(E.length),y=k.length;if(y<2)return Uint32Array.from(k);const T=Uint32Array.from(k),V=new Uint32Array(y);for(let q=0;q<y;q++){const Y=(E[T[q]]^2147483648)>>>0;V[q]=R?~Y>>>0:Y}return c(n(T,V,y),y)}function d(E,I,R={}){const k=I||K(H(E,R)),y=k.length;if(y<2)return Uint32Array.from(k);const T=B(E.dict,R.locale),V=E.values,q=G(E),Y=Math.max(D(E.dict),T.length),J=Y,ee=Uint32Array.from(k),ne=new Uint32Array(y),ie=!!R.descending;for(let se=0;se<y;se++){const we=ee[se];let he=q&&q(we)===0?J:T[V[we]];he===void 0&&(he=J),ne[se]=ie?J-he:he}return c(l(ee,ne,y,Y+1),y)}function h(E,I,R){const k=I.length;let y=Uint32Array.from(I);if(k<2)return y;let T=new Uint32Array(k);for(let V=1;V<k;V<<=1){for(let Y=0;Y<k;Y+=V<<1){const J=Math.min(Y+V,k),ee=Math.min(Y+(V<<1),k);let ne=Y,ie=J,se=Y;for(;ne<J&&ie<ee;)T[se++]=R(E[y[ne]],E[y[ie]])<=0?y[ne++]:y[ie++];for(;ne<J;)T[se++]=y[ne++];for(;ie<ee;)T[se++]=y[ie++]}const q=y;y=T,T=q}return y}function s(E,I,R){const k=$(E.values),y=I.length,T=new Uint32Array(y),V=R?1:0;let q=0;for(let Y=0;Y<y;Y++)k(I[Y])===V&&(T[q++]=I[Y]);for(let Y=0;Y<y;Y++)k(I[Y])!==V&&(T[q++]=I[Y]);return T}function p(E,I){const R=E.values,k=E.kind;if((k==="object"||k===void 0)&&(Array.isArray(R)||ArrayBuffer.isView(R))&&!E.presence)return R;const T=z(E),V=new Array(H(E)||0);for(let q=0;q<I.length;q++){const Y=I[q];V[Y]=T(Y)}return V}function w(E,I){for(let R=0;R<I.length;R++)if(typeof E[I[R]]!="string")return!1;return!0}function A(E,I,R,k,y){const T=E.length,V=Uint32Array.from(E);if(T<2||k<1)return V;const q=new Uint32Array(T),Y=k-1;for(let J=0;J<T;J++){const ee=R[I[J]];q[J]=y?Y-ee:ee}return c(l(V,q,T,k),T)}function P(E,I,R){const k=_(R),y=new Array(I);for(let V=0;V<I;V++)y[V]=V;y.sort((V,q)=>k(E[V],E[q])||V-q);const T=new Uint32Array(I);for(let V=0;V<I;V++)T[y[V]]=V;return T}function b(E,I,R){const k=I.length,y=new Map,T=[],V=new Uint32Array(k);for(let J=0;J<k;J++){const ee=E[I[J]];let ne=y.get(ee);ne===void 0&&(ne=T.length,y.set(ee,ne),T.push(ee)),V[J]=ne}const q=T.length,Y=P(T,q,R.locale);return A(I,V,Y,q,!!R.descending)}function O(E,I,R){const k=p(E,I);if(I.length>=2&&w(k,I)){const V=E.stringRank;return V&&V.version===E.version&&V.usable(I,k,R.locale)?V.sort(I,R):b(k,I,R)}const y=_(R.locale),T=R.descending?(V,q)=>y(q,V):y;return h(k,I,T)}function x(E,I,R){const k=p(E,I),y=R.compare,V=!!R.descending?(q,Y)=>-y(q,Y,void 0,void 0,!0):(q,Y)=>y(q,Y,void 0,void 0,!1);return h(k,I,V)}function j(E,I){const R=I.length,k=G(E),y=E.values,T=E.kind==="float64"&&!!y,V=E.kind==="object"||E.kind==="multi"||E.kind===void 0;if(!k&&!T&&!V)return{present:I,absent:v};const q=new Uint32Array(R),Y=new Uint32Array(R);let J=0,ee=0;if(k&&T)for(let ne=0;ne<R;ne++){const ie=I[ne];k(ie)===1&&!Number.isNaN(y[ie])?q[J++]=ie:Y[ee++]=ie}else if(T&&!k)for(let ne=0;ne<R;ne++){const ie=I[ne];Number.isNaN(y[ie])?Y[ee++]=ie:q[J++]=ie}else if(k&&!V)for(let ne=0;ne<R;ne++){const ie=I[ne];k(ie)===1?q[J++]=ie:Y[ee++]=ie}else{const ne=z(E);for(let ie=0;ie<R;ie++){const se=I[ie];Q(ne(se))?Y[ee++]=se:q[J++]=se}}return ee===0?{present:I,absent:v}:{present:q.subarray(0,J),absent:Y.subarray(0,ee)}}function F(E,I,R){if(I.length===0)return E;const k=new Uint32Array(E.length+I.length);return R?(k.set(I,0),k.set(E,I.length)):(k.set(E,0),k.set(I,E.length)),k}function C(E,I,R={}){const k=I||K(H(E,R));if(!E||k.length<2)return Uint32Array.from(k);const{present:y,absent:T}=j(E,k);if(y.length===0)return Uint32Array.from(k);const V=!!R.descending;let q;if(typeof R.compare=="function")q=x(E,y,R);else switch(E.kind){case"float64":q=i(E.values,y,V);break;case"int32":q=m(E.values,y,V);break;case"dictionary":q=d(E,y,R);break;case"bitset":q=s(E,y,V);break;default:q=O(E,y,R);break}return F(q,T,!!R.nullsFirst)}function M(E,I,R,k={}){const y=I||[],T=y.length&&(y[0].handle||L(E,y[0].col))||E&&E[0];let V=R||K(H(T,k));for(let q=y.length-1;q>=0;q--){const Y=y[q],J=Y.handle||L(E,Y.col)||E&&E[q];J&&(V=C(J,V,{descending:Y.descending!==void 0?!!Y.descending:Y.dir==="desc",nullsFirst:!!Y.nullsFirst,locale:Y.locale!==void 0?Y.locale:k.locale,compare:Y.compare}))}return V instanceof Uint32Array?V:Uint32Array.from(V)}function L(E,I){if(!(!E||I===void 0)){for(let R=0;R<E.length;R++)if(E[R]&&E[R].id===I)return E[R]}}}),$e("packages/core/src/store/stringrank.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_MAX_DISTINCT",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"StringRankIndex",{enumerable:!0,get:function(){return K}});const Z=W("packages/core/src/compute/sort.js"),$=Z.collateStringRanks,B=Z.rankSortStrings,D=1e5;class K{#e=[];#t=new Map;#n;#r=0;#o=0;#i=-1;#s;#l=!1;#a=null;#u=-1;#c="\0";constructor(G=D){this.#s=G>0?G:D,this.#n=new Uint32Array(0)}get version(){return this.#i}set version(G){this.#i=G}get generation(){return this.#o}get size(){return this.#e.length}get capped(){return this.#l}get length(){return this.#r}get bytes(){let G=this.#n.byteLength;const H=this.#e;for(let _=0;_<H.length;_++)G+=H[_].length*2+24;return G}#d(G,H){const _=this.#t.get(G);if(_!==void 0)return _;if(this.#l)return-1;if(H&&this.#e.length>=this.#s)return this.#l=!0,-1;const z=this.#e.length;return this.#e.push(G),this.#t.set(G,z),this.#o++,z}build(G,H){const _=H|0;this.#e=[],this.#t=new Map,this.#o=0,this.#l=!1,this.#a=null,this.#u=-1,this.#n=new Uint32Array(_);for(let z=0;z<_;z++){const v=G[z],S=typeof v=="string"?this.#d(v,!1):-1;this.#n[z]=S<0?0:S}this.#r=_}append(G,H,_){const z=(H|0)+(_|0);if(z>this.#n.length){const v=new Uint32Array(z);v.set(this.#n.subarray(0,this.#r)),this.#n=v}for(let v=H|0;v<z;v++){const S=G[v],g=typeof S=="string"?this.#d(S,!0):-1;this.#n[v]=g<0?0:g}this.#r=Math.max(this.#r,z)}ranks(G){const H=G||"";if(this.#a&&this.#u===this.#o&&this.#c===H)return this.#a;const _=$(this.#e,this.#e.length,G);return this.#a=_,this.#u=this.#o,this.#c=H,_}usable(G,H,_){if(this.#l||this.#e.length===0)return!1;const z=this.#n,v=this.#e,S=this.#r;for(let g=0;g<G.length;g++){const u=G[g];if(u>=S||v[z[u]]!==H[u])return!1}return!0}sort(G,H){const _=this.ranks(H.locale),z=this.#e.length,v=G.length,S=new Uint32Array(v),g=this.#n;for(let u=0;u<v;u++)S[u]=g[G[u]];return B(G,S,_,z,!!H.descending)}}}),$e("packages/core/src/store/columnstore.js",function(e,W){"use strict";Object.defineProperty(e,"REMOVED",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"toFloat",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"ColumnHandle",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"ColumnStore",{enumerable:!0,get:function(){return d}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.isFunction,D=Z.pathGetter,Q=W("packages/core/src/store/bitset.js").Bitset,H=W("packages/core/src/store/dictionary.js").Dictionary,z=W("packages/core/src/store/multivalue.js").MultiValue,S=W("packages/core/src/store/stringrank.js").StringRankIndex,g=4294967295,u=1024,f=5e3,a=.2,r=new Set(["float64","int32","bitset","dictionary","object","multi"]);function t(h){return h==null}function n(h){if(typeof h=="number")return h;if(h instanceof Date)return h.getTime();if(typeof h=="boolean")return h?1:0;const s=Number(h);return Number.isNaN(s)&&typeof h=="string"?Date.parse(h):s}function o(h){const s=n(h);return Number.isFinite(s)?s|0:0}function l(h){return t(h)?[]:Array.isArray(h)?h:[h]}function c(h,s){switch(h.kind){case"float64":case"int32":return h.buf[s];case"bitset":return h.bits.get(s)===1;case"dictionary":return h.dict.valueOf(h.buf[s]);case"multi":{const p=h.mv.at(s),w=new Array(p.length);for(let A=0;A<p.length;A++)w[A]=h.dict.valueOf(p[A]);return w}default:return h.buf[s]}}function i(h,s){switch(h.kind){case"float64":case"int32":return h.values[s];case"bitset":return(h.values[s>>3]&1<<(s&7))!==0;case"dictionary":return(h.table||[])[h.values[s]];case"multi":{const p=h.offsets[s],w=h.offsets[s+1],A=h.table||[],P=new Array(w-p);for(let b=p;b<w;b++)P[b-p]=A[h.values[b]];return P}default:return h.values[s]}}class m{#e;#t;#n;#r;#o;#i;#s;#l=!1;#a=null;#u=null;#c=null;#d=null;#f=null;#h;#p;#m=-1;#g=null;#y=0;#b=0;#A=null;#w=null;#S=!1;constructor(s,p){this.#e=s.id;const w=r.has(s.kind)?s.kind:"object";s.kind&&!r.has(s.kind)&&$(`store.kind.${s.id}`,`column "${s.id}" declares unknown storage kind "${s.kind}"; falling back to object`),this.#n=w,this.#t=w,this.#r=s.nullable!==!1,this.#s=s.dictionary??null,this.#i=p,this.#o=B(s.read)?s.read:D(s.field||s.id),this.#h=s.stringRankIndex!=="off",this.#p=typeof s.stringRankMaxDistinct=="number"?s.stringRankMaxDistinct:0,this.#A=new Map}get id(){return this.#e}get kind(){return this.#l?this.#t:"object"}get target(){return this.#n}get nullable(){return this.#r}get values(){return this.#S?null:this.#l?this.#t==="bitset"?this.#u.words:this.#t==="multi"?this.#c.values:this.#a:this.#E().values}get presence(){return this.#S||!this.#r?null:this.#l?this.#g:this.#E().presence}get dict(){return this.#S||!this.#l?null:this.#t==="dictionary"||this.#t==="multi"?this.#d:null}get stringRank(){if(this.#S||!this.#h||this.kind!=="object")return null;const s=this.values,p=this.#i.physical();if(!s||p===0)return null;if(this.#f===null){if(typeof s[0]!="string")return null;const w=new S(this.#v());return w.build(s,p),w.version=this.#b,this.#f=w,this.#m=this.#b,w.capped?null:w}return this.#f.length<p&&this.#f.append(s,this.#f.length,p-this.#f.length),this.#f.version=this.#b,this.#m=this.#b,this.#f.capped?null:this.#f}#v(){return this.#p}#C(){this.#f=null,this.#m=-1}get offsets(){return this.#S||!this.#l||this.#t!=="multi"?null:this.#c.offsets}get version(){return this.#b}get bytes(){let s=0;return this.#a&&(s+=this.#a.byteLength??this.#a.length*8),this.#u&&(s+=this.#u.bytes),this.#c&&(s+=this.#c.bytes),this.#g&&(s+=this.#g.bytes),this.#d&&(s+=this.#d.bytes),this.#A&&(s+=this.#A.size*24),s}get(s){if(!this.#S&&!(s<0||s>=this.#i.physical())){if(!this.#l)return this.#M(s);if(this.#r&&this.#g.get(s)===0)return null;switch(this.#t){case"float64":case"int32":return this.#a[s];case"bitset":return this.#u.get(s)===1;case"dictionary":return this.#d.valueOf(this.#a[s]);case"multi":{const p=this.#c.at(s),w=new Array(p.length);for(let A=0;A<p.length;A++)w[A]=this.#d.valueOf(p[A]);return w}default:return this.#a[s]}}}set(s,p){this.#S||(this.#l?this.#P(s,p):this.#A.set(s,p===void 0?null:p),this.#f&&this.#C(),this.#b++)}read(s){return this.#o(s)}appendColumn(s,p,w){if(this.#S||w<=0)return;if(!this.#l){this.#b++;return}const A=this.#o,P=this.#r,b=this.#g;let O=!1;switch(this.#t){case"float64":{const x=this.#a;for(let j=0;j<w;j++){const F=A(s[j]);if(typeof F=="number"){P&&b.set(p+j),x[p+j]=F;continue}const C=F==null;P?b.assign(p+j,!C):C&&(O=!0),x[p+j]=C?NaN:n(F)}break}case"int32":{const x=this.#a;for(let j=0;j<w;j++){const F=A(s[j]),C=F==null;P?b.assign(p+j,!C):C&&(O=!0),x[p+j]=C?0:o(F)}break}case"bitset":{const x=this.#u;for(let j=0;j<w;j++){const F=A(s[j]),C=F==null;P?b.assign(p+j,!C):C&&(O=!0),x.assign(p+j,!C&&!!F)}break}case"dictionary":{const x=this.#a,j=this.#d;for(let F=0;F<w;F++){const C=A(s[F]),M=C==null;P?b.assign(p+F,!M):M&&(O=!0),x[p+F]=M?0:j.codeOf(C)}break}case"multi":{const x=this.#c,j=this.#d;for(let F=0;F<w;F++){const C=A(s[F]),M=C==null;P?b.assign(p+F,!M):M&&(O=!0);const L=l(C),E=new Array(L.length);for(let I=0;I<L.length;I++)E[I]=j.codeOf(L[I]);x.write(p+F,E)}break}default:{const x=this.#a;for(let j=0;j<w;j++){const F=A(s[j]),C=F==null;P?b.assign(p+j,!C):C&&(O=!0),x[p+j]=C?null:F}break}}O&&$(`store.null.${this.#e}`,`column "${this.#e}" is declared non-nullable but received null; storing a filler value`),this.#f&&this.#t==="object"&&(this.#f.append(this.#a,p,w),this.#f.version=this.#b+1,this.#m=this.#b+1),this.#b++}appendPacked(s,p,w){if(this.#S||w<=0||!s)return;if(!this.#l){this.#b++;return}const A=this.#g,P=s.presence;if(A)if(P)for(let O=0;O<w;O++)A.assign(p+O,(P[O>>3]&1<<(O&7))!==0);else for(let O=0;O<w;O++)A.set(p+O);const b=s.kind===this.#t;if(b&&(this.#t==="float64"||this.#t==="int32")){this.#a.set(s.values,p),this.#b++;return}if(b&&this.#t==="bitset"){const O=s.values;for(let x=0;x<w;x++)this.#u.assign(p+x,(O[x>>3]&1<<(x&7))!==0);this.#b++;return}if(b&&this.#t==="dictionary"){const O=s.table||[],x=new Uint32Array(O.length);for(let M=0;M<O.length;M++)x[M]=this.#d.codeOf(O[M]);const j=s.values,F=this.#a,C=A;for(let M=0;M<w;M++){if(C&&(P&&(P[M>>3]&1<<(M&7))===0)){F[p+M]=0;continue}F[p+M]=x[j[M]]??0}this.#b++;return}if(b&&this.#t==="multi"){const O=s.table||[],x=new Uint32Array(O.length);for(let C=0;C<O.length;C++)x[C]=this.#d.codeOf(O[C]);const j=s.values,F=s.offsets;for(let C=0;C<w;C++){const M=F[C],L=F[C+1],E=new Array(L-M);for(let I=M;I<L;I++)E[I-M]=x[j[I]]??0;this.#c.write(p+C,E)}this.#b++;return}for(let O=0;O<w;O++){const x=P?(P[O>>3]&1<<(O&7))===0:s.kind==="object"?s.values[O]===null:!1;this.#P(p+O,x?null:i(s,O))}this.#b++}touch(){this.#b++}columnarise(s,p){if(this.#l||this.#S)return;const w=new Array(p);for(let A=0;A<p;A++)w[A]=this.#M(A);this.#t=this.#n,this.#l=!0,this.#O(s);for(let A=0;A<p;A++)this.#P(A,w[A]);this.#A.clear(),this.#w=null,this.#C(),this.#b++}grow(s){if(!(!this.#l||this.#S||s<=this.#y)){switch(this.#t){case"float64":case"int32":case"dictionary":{const p=new this.#a.constructor(s);p.set(this.#a),this.#a=p;break}case"bitset":this.#u.grow(s);break;case"multi":break;default:this.#a.length=s;break}this.#g&&this.#g.grow(s),this.#y=s,this.#b++}}convert(s){if(this.#S||!r.has(s)||(this.#n=s,!this.#l||s===this.#t))return!1;const p={kind:this.#t,buf:this.#a,bits:this.#u,mv:this.#c,dict:this.#d},w=this.#i.physical(),A=this.#g;this.#t=s,this.#O(this.#y);for(let P=0;P<w;P++){const b=A!==null&&A.get(P)===0;b&&s!=="multi"||this.#P(P,b?null:c(p,P))}return this.#C(),this.#b++,!0}compact(s,p,w){if(!this.#S){if(this.#C(),!this.#l){const A=this.#A;if(A.size){const P=new Map;for(const[b,O]of A)s[b]!==g&&P.set(s[b],O);this.#A=P}this.#w=null,this.#b++;return}switch(this.#t){case"float64":case"int32":case"dictionary":case"object":{const A=this.#a;for(let P=0;P<p;P++)s[P]!==g&&(A[s[P]]=A[P]);if(this.#t==="object")for(let P=w;P<p;P++)A[P]=void 0;break}case"bitset":{const A=this.#u;for(let P=0;P<p;P++)s[P]!==g&&A.assign(s[P],A.get(P)===1);for(let P=w;P<p;P++)A.clear(P);break}case"multi":this.#c.compact(s,w,g);break;default:break}if(this.#g){const A=this.#g;for(let P=0;P<p;P++)s[P]!==g&&A.assign(s[P],A.get(P)===1);for(let P=w;P<p;P++)A.clear(P)}this.#b++}}release(){this.#S||(this.#S=!0,this.#a=null,this.#u&&this.#u.release(),this.#u=null,this.#c&&this.#c.release(),this.#c=null,this.#g&&this.#g.release(),this.#g=null,this.#d=null,this.#f=null,this.#A=new Map,this.#w=null,this.#y=0,this.#b++)}#O(s){const p=Math.max(1,s);switch(this.#a=null,this.#u=null,this.#c=null,this.#t){case"float64":this.#a=new Float64Array(p);break;case"int32":this.#a=new Int32Array(p);break;case"bitset":this.#u=new Q(p);break;case"dictionary":this.#a=new Uint32Array(p),this.#d=this.#d??new H(this.#s??[]);break;case"multi":this.#c=new z({rows:p,values:p}),this.#d=this.#d??new H(this.#s??[]);break;default:this.#a=new Array(p);break}this.#t!=="dictionary"&&this.#t!=="multi"&&(this.#d=null),this.#r&&(this.#g?this.#g.grow(p):this.#g=new Q(p)),this.#y=p}#P(s,p){const w=t(p);switch(this.#r?this.#g.assign(s,!w):w&&$(`store.null.${this.#e}`,`column "${this.#e}" is declared non-nullable but received null; storing a filler value`),this.#t){case"float64":this.#a[s]=w?NaN:n(p);break;case"int32":this.#a[s]=w?0:o(p);break;case"bitset":this.#u.assign(s,!w&&!!p);break;case"dictionary":this.#a[s]=w?0:this.#d.codeOf(p);break;case"multi":{const A=l(p),P=new Array(A.length);for(let b=0;b<A.length;b++)P[b]=this.#d.codeOf(A[b]);this.#c.write(s,P);break}default:this.#a[s]=w?null:p;break}}#M(s){if(this.#A.has(s))return this.#A.get(s);const p=this.#o(this.#i.rowAt(s));return p===void 0?null:p}#E(){if(this.#w&&this.#w.version===this.#b)return this.#w;const s=this.#i.physical(),p=new Array(s),w=this.#r?new Q(s):null;for(let A=0;A<s;A++){const P=this.#M(A);p[A]=P,w&&!t(P)&&w.set(A)}return this.#w={version:this.#b,values:p,presence:w},this.#w}}class d{#e;#t=new Map;#n=[];#r=[];#o=0;#i=0;#s=0;#l=0;#a=new Q(0);#u=!1;#c=!0;#d;#f;#h;#p=!1;constructor(s,p={}){this.#e=Array.isArray(s)?s:[],this.#f=Math.max(1,p.initialCapacity??u),this.#c=p.retainSource!==!1,this.#d=this.#c?p.columnarBelow??f:0,this.#h=p.compactRatio??a;const w={rowAt:A=>this.#r[A],physical:()=>this.#o};for(const A of this.#e){if(!A||!A.id)continue;if(this.#t.has(A.id)){$(`store.dup.${A.id}`,`duplicate column id "${A.id}" in the store schema; ignoring the second`);continue}const P=new m(A,w);this.#t.set(A.id,P),this.#n.push(P)}this.#d<=0&&this.#y()}get count(){return this.#s}get physical(){return this.#o}get capacity(){return this.#u?this.#i:this.#r.length}get tombstones(){return this.#l}get columnar(){return this.#u}get destroyed(){return this.#p}get bytes(){let s=this.#a.bytes+this.#r.length*8;for(const p of this.#n)s+=p.bytes;return s}append(s){const p=this.#o;if(this.#p||!s)return{from:p,to:p};const w=s.length|0;if(w===0)return{from:p,to:p};if(this.#c)for(let P=0;P<w;P++)this.#r[p+P]=s[P];if(this.#o=p+w,this.#s+=w,this.#a.grow(this.#o),!this.#u){if(this.#o>=this.#d)this.#y();else for(const P of this.#n)P.touch();return{from:p,to:this.#o}}this.#m(this.#o);const A=this.#n;for(let P=0;P<A.length;P++)A[P].appendColumn(s,p,w);return{from:p,to:this.#o}}appendPacked(s,p){const w=this.#o;if(this.#p||!s)return{from:w,to:w};const A=s.count|0;if(A===0)return{from:w,to:w};if(this.#c&&p)for(let b=0;b<A;b++)this.#r[w+b]=p[b];this.#o=w+A,this.#s+=A,this.#a.grow(this.#o),this.#u||this.#y(),this.#m(this.#o);const P=new Map;for(const b of s.columns)P.set(b.id,b);for(const b of this.#n){const O=P.get(b.id);O?b.appendPacked(O,w,A):b.grow(this.#i)}return{from:w,to:this.#o}}source(s){if(this.#c)return this.#r[s];if(!(s<0||s>=this.#o))return this.#g(s)}setSource(s,p){this.#p||s<0||s>=this.#o||this.#c&&(this.#r[s]=p)}get(s,p){const w=this.#t.get(s);return w?w.get(p):void 0}set(s,p,w){if(this.#p||p<0||p>=this.#o)return;const A=this.#t.get(s);if(!A){$(`store.set.${s}`,`set() on unknown column "${s}"`);return}A.set(p,w)}remove(s){return this.#p||s<0||s>=this.#o||this.#a.get(s)===1?!1:(this.#a.set(s),this.#l++,this.#s--,!0)}live(s){return s<0||s>=this.#o?!1:this.#a.get(s)===0}compact(s={}){if(this.#p||this.#l===0||!s.force&&this.#l/this.#o<this.#h)return null;const p=this.#o,w=new Uint32Array(p);let A=0;for(let P=0;P<p;P++)w[P]=this.#a.get(P)===1?g:A++;for(const P of this.#n)P.compact(w,p,A);if(this.#c){const P=this.#r;for(let b=0;b<p;b++)w[b]!==g&&(P[w[b]]=P[b]);P.length=A}return this.#o=A,this.#s=A,this.#l=0,this.#a=new Q(Math.max(this.#i,A)),w}column(s){return this.#t.get(s)}columns(){return this.#n.slice()}liveIndices(){const s=new Uint32Array(this.#s);if(this.#l===0){for(let w=0;w<this.#o;w++)s[w]=w;return s}let p=0;for(let w=0;w<this.#o;w++)this.#a.get(w)===0&&(s[p++]=w);return s}convert(s,p){const w=this.#t.get(s);return w?w.convert(p):!1}destroy(){if(!this.#p){this.#p=!0;for(const s of this.#n)s.release();this.#t.clear(),this.#n.length=0,this.#r.length=0,this.#a.release(),this.#o=0,this.#s=0,this.#l=0,this.#i=0}}#m(s){if(s<=this.#i)return;let p=this.#i||this.#f;for(;p<s;)p*=2;for(const w of this.#n)w.grow(p);this.#a.grow(p),this.#i=p}#g(s){const p={};for(const w of this.#n)p[w.id]=w.get(s);return p}#y(){if(this.#u)return;let s=this.#f;for(;s<this.#o;)s*=2;this.#u=!0,this.#i=s,this.#a.grow(s);for(const p of this.#n)p.columnarise(s,this.#o)}}}),$e("packages/core/src/store/pool.js",function(e,W){"use strict";Object.defineProperty(e,"MaskPool",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"sharedPool",{enumerable:!0,get:function(){return K}});const Z=64,$=8;function B(G){let H=Z;for(;H<G;)H*=2;return H}class D{#e=new Map;#t=new WeakSet;#n;#r=0;#o={acquired:0,reused:0,released:0};constructor(H={}){this.#n=H.limit??$}get bytes(){return this.#r}mask(H){const _=new Uint8Array(this.#i(H),0,H);return _.fill(0),_}indices(H){return new Uint32Array(this.#i(H*4),0,H)}release(H){if(!H||!H.buffer)return!1;const _=H.buffer;if(!this.#t.has(_))return!1;this.#t.delete(_),this.#o.released++;const z=_.byteLength;let v=this.#e.get(z);return v||this.#e.set(z,v=[]),v.length>=this.#n||(v.push(_),this.#r+=z),!0}releaseAll(H){for(const _ of H)this.release(_)}clear(){this.#e.clear(),this.#r=0}stats(){return{...this.#o,retained:this.#r}}#i(H){const _=B(H),z=this.#e.get(_);this.#o.acquired++;let v;return z&&z.length?(v=z.pop(),this.#r-=_,this.#o.reused++):v=new ArrayBuffer(_),this.#t.add(v),v}}function K(){return Q??=new D,Q}let Q=null}),$e("packages/core/src/compute/sortspec.js",function(e,W){"use strict";Object.defineProperty(e,"collationDescriptor",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"isPortableSort",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"isPortableSortSet",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"describeSortEntry",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"describeSort",{enumerable:!0,get:function(){return K}});function Z(Q){return{locale:Q===void 0?void 0:String(Q),numeric:!0,sensitivity:"variant"}}function $(Q){return!!Q&&typeof Q.compare!="function"}function B(Q){if(!Q)return!0;for(let G=0;G<Q.length;G++)if(!$(Q[G]))return!1;return!0}function D(Q,G){const H=Q.col!==void 0?Q.col:Q.handle&&Q.handle.id,_=Q.locale!==void 0?Q.locale:G;return{col:H,descending:Q.descending!==void 0?!!Q.descending:Q.dir==="desc",nullsFirst:!!Q.nullsFirst,collation:Z(_)}}function K(Q,G){const H=Q||[],_=new Array(H.length);for(let z=0;z<H.length;z++)_[z]=D(H[z],G);return _}}),$e("packages/core/src/compute/facet.js",function(e,W){"use strict";Object.defineProperty(e,"STRATEGIES",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"GRANULARITIES",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"facetKind",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"orderedReader",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"toNumeric",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"cardinalityOf",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"pickGranularity",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"floorTo",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"advance",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"computeBounds",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"countInto",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"bucketOf",{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,"facet",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return A}});const Z=W("packages/core/src/compute/handle.js"),$=Z.presenceReader,B=Z.valueReader,D=Z.dictSize,K=Z.dictValue,Q=Object.freeze(["equal","quantile","log"]),G=Object.freeze(["hour","day","week","month","quarter","year"]),H=20,_=50,z=1e4;function v(P,b){if(!P)return"none";const O=b;if(O&&(O.multi===!0||typeof O.items=="function"))return"category";const x=b&&b.base;if(x==="date"||x==="datetime"||x==="time"||x==="dateString")return"date";switch(P.kind){case"bitset":return"boolean";case"float64":case"int32":return"numeric";case"dictionary":return"category";case"multi":return"category";default:return x==="number"?"numeric":x==="boolean"?"boolean":x==="text"?"category":"none"}}function S(P){const b=P.values,O=P.kind;if((O==="float64"||O==="int32")&&b)return j=>b[j];const x=B(P);return j=>g(x(j))}function g(P){if(typeof P=="number")return P;if(P instanceof Date)return P.getTime();if(P==null||P==="")return NaN;if(typeof P=="boolean")return P?1:0;if(typeof P=="string"){const b=Number(P);if(Number.isFinite(b))return b;const O=Date.parse(P);return Number.isFinite(O)?O:NaN}return NaN}function u(P,b,O,x=_){if(!P)return{cardinality:0,exact:!0};if(P.dict)return{cardinality:D(P.dict),exact:!0};if(P.kind==="bitset")return{cardinality:2,exact:!0};const j=B(P),F=b?b.length:O,C=new Set;for(let M=0;M<F;M++){const L=j(b?b[M]:M);if(L!=null&&(C.add(L),C.size>x))return{cardinality:C.size,exact:!1}}return{cardinality:C.size,exact:!0}}const f=36e5,a=864e5;function r(P,b=H){const O=Number.isFinite(P)&&P>0?P:0,x=Math.max(1,b)*2;return O/f<=x?"hour":O/a<=x?"day":O/(7*a)<=x?"week":O/(30*a)<=x?"month":O/(91*a)<=x?"quarter":"year"}function t(P,b){if(!Number.isFinite(P))return NaN;const O=new Date(P);switch(b){case"hour":return O.setMinutes(0,0,0),O.getTime();case"day":return O.setHours(0,0,0,0),O.getTime();case"week":{O.setHours(0,0,0,0);const x=(O.getDay()+6)%7;return O.setDate(O.getDate()-x),O.getTime()}case"month":return O.setDate(1),O.setHours(0,0,0,0),O.getTime();case"quarter":return O.setMonth(Math.floor(O.getMonth()/3)*3,1),O.setHours(0,0,0,0),O.getTime();default:return O.setMonth(0,1),O.setHours(0,0,0,0),O.getTime()}}function n(P,b){const O=new Date(P);switch(b){case"hour":O.setHours(O.getHours()+1);break;case"day":O.setDate(O.getDate()+1);break;case"week":O.setDate(O.getDate()+7);break;case"month":O.setMonth(O.getMonth()+1);break;case"quarter":O.setMonth(O.getMonth()+3);break;default:O.setFullYear(O.getFullYear()+1);break}return O.getTime()}function o(P,b,O){const x=S(P),j=$(P),F=b?b.length:O;let C=1/0,M=-1/0,L=0,E=0;for(let I=0;I<F;I++){const R=b?b[I]:I;if(j&&!j(R)){L++;continue}const k=x(R);if(!Number.isFinite(k)){L++;continue}k<C&&(C=k),k>M&&(M=k),E++}return{min:C,max:M,nulls:L,finite:E}}function l(P,b,O,x){const j=S(P),F=$(P),C=b?b.length:O,M=C>x?C/x:1,L=[];for(let I=0;I<C;I+=M){const R=b?b[Math.floor(I)]:Math.floor(I);if(F&&!F(R))continue;const k=j(R);Number.isFinite(k)&&L.push(k)}const E=Float64Array.from(L);return E.sort(),E}function c(P,b,O,x={}){const j=x.kind||v(P,x.type);return j==="none"||!P?{kind:"none",buckets:[],suppressed:"type"}:j==="boolean"?i(P,b,O):j==="category"?m(P,b,O,x):d(P,b,O,j,x)}function i(P,b,O){const x=$(P);let j=0;if(x){const C=b?b.length:O;for(let M=0;M<C;M++)x(b?b[M]:M)||j++}const F=[{value:!1,label:"false"},{value:!0,label:"true"}];return j>0&&F.push({null:!0,label:"Empty"}),{kind:"boolean",buckets:F}}function m(P,b,O,x){const j=x.cardinalityLimit??_,{cardinality:F}=u(P,b,O,j);if(F>j&&(x.aboveLimit||"suppress")==="suppress")return{kind:"category",buckets:[],suppressed:"cardinality",cardinality:F};const C=B(P),M=b?b.length:O,L=new Map;let E=0;for(let T=0;T<M;T++){const V=C(b?b[T]:T);if(V==null||V===""){E++;continue}if(Array.isArray(V)){if(!V.length){E++;continue}for(const q of V)L.set(q,(L.get(q)||0)+1);continue}L.set(V,(L.get(V)||0)+1)}let I=[...L.entries()];x.order==="alpha"?I.sort((T,V)=>String(T[0]).localeCompare(String(V[0]))):I.sort((T,V)=>V[1]-T[1]);let R=0,k=0;if(I.length>j){k=I.length-j;for(let T=j;T<I.length;T++)R+=I[T][1];I=I.slice(0,j)}const y=I.map(([T])=>({value:T,label:String(T)}));return R>0&&y.push({remainder:!0,label:`Other (${k} values)`}),E>0&&y.push({null:!0,label:"Empty"}),{kind:"category",buckets:y,cardinality:F}}function d(P,b,O,x,j){const{min:F,max:C,nulls:M,finite:L}=o(P,b,O);if(!L)return{kind:x,buckets:M?[{null:!0,label:"Empty"}]:[],empty:!0};const E=Math.max(1,Math.floor(j.buckets||H));let I=[];if(x==="date"){const k=G.includes(j.granularity)?j.granularity:r(C-F,E);let y=t(F,k);for(;y<=C&&I.length<4096;){const T=n(y,k);if(!(T>y))break;I.push({from:y,to:T}),y=T}return{kind:x,buckets:h(I,M),granularity:k}}const R=Q.includes(j.strategy)?j.strategy:"equal";if(R==="quantile"){const k=l(P,b,O,z);if(k.length){const y=[k[0]];for(let T=1;T<E;T++){const V=k[Math.min(k.length-1,Math.floor(T/E*k.length))];V>y[y.length-1]&&y.push(V)}y.push(C);for(let T=0;T<y.length-1;T++)I.push({from:y[T],to:y[T+1]})}}else if(R==="log"&&F>0){const k=Math.log10(F),T=(Math.log10(C)-k)/E||1;for(let V=0;V<E;V++)I.push({from:10**(k+V*T),to:10**(k+(V+1)*T)})}if(!I.length){const k=(C-F)/E||1;for(let y=0;y<E;y++)I.push({from:F+y*k,to:F+(y+1)*k})}return I[I.length-1].to=C,{kind:x,buckets:h(I,M),strategy:R,min:F,max:C}}function h(P,b){return b>0?[...P,{null:!0,label:"Empty"}]:P}function s(P,b,O,x,j){const F=x&&x.buckets||[],C=j&&j.length>=F.length?j.subarray(0,F.length):new Uint32Array(F.length);if(C.fill(0),!P||!F.length)return C;const M=F.length-1,L=!!F[M]&&F[M].null===!0,E=b?b.length:O;if(x.kind==="boolean"){const T=B(P);for(let V=0;V<E;V++){const q=T(b?b[V]:V);if(q==null){L&&C[M]++;continue}C[q?1:0]++}return C}if(x.kind==="category"){const T=new Map;for(let Y=0;Y<F.length;Y++)!F[Y].null&&!F[Y].remainder&&T.set(F[Y].value,Y);const V=F.findIndex(Y=>Y.remainder),q=B(P);for(let Y=0;Y<E;Y++){const J=q(b?b[Y]:Y);if(J==null||J===""){L&&C[M]++;continue}if(Array.isArray(J)){if(!J.length){L&&C[M]++;continue}for(const ne of J){const ie=T.get(ne);ie!==void 0?C[ie]++:V>=0&&C[V]++}continue}const ee=T.get(J);ee!==void 0?C[ee]++:V>=0&&C[V]++}return C}const I=L?F.length-1:F.length,R=new Float64Array(I+1);for(let T=0;T<I;T++)R[T]=F[T].from;R[I]=I?F[I-1].to:0;const k=S(P),y=$(P);for(let T=0;T<E;T++){const V=b?b[T]:T;if(y&&!y(V)){L&&C[M]++;continue}const q=k(V);if(!Number.isFinite(q)){L&&C[M]++;continue}const Y=p(R,I,q);Y>=0&&C[Y]++}return C}function p(P,b,O){if(!b||O<P[0])return-1;if(O>=P[b])return O===P[b]?b-1:-1;let x=0,j=b-1;for(;x<j;){const F=x+j+1>>>1;O>=P[F]?x=F:j=F-1}return x}function w(P,b,O,x={}){const j=x.bounds||c(P,x.boundsIndices??b,O,x);return{bounds:j,counts:s(P,b,O,j)}}const A=w}),$e("packages/core/src/compute/pivotmatrix.js",function(e,W){"use strict";Object.defineProperty(e,"GRAND_PATH",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"resolveAxis",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"pivotMatrix",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"cellKey",{enumerable:!0,get:function(){return r}}),Object.defineProperty(e,"marginKey",{enumerable:!0,get:function(){return t}});const $=W("packages/core/src/compute/handle.js").valueComparator,D=W("packages/core/src/compute/total.js").total,Q=W("packages/core/src/compute/group.js").packKeys,G=W("packages/core/src/compute/pivot.js"),H=G.joinPath,_=G.DEFAULT_PATH_SEPARATOR,z=G.DEFAULT_MAX_COLUMNS,v="";function S(n,o,l={}){const c=l.separator||_,i=n||[],m=o instanceof Uint32Array?o:Uint32Array.from(o||[]),d=m.length;if(i.length===0)return{tuples:[[]],paths:[v],buckets:[m]};const{keyOf:h,readers:s}=Q(i,m,0),p=new Map,w=[],A=[],P=[];for(let C=0;C<d;C++){const M=m[C],L=h(M);let E=p.get(L);if(E===void 0){E=w.length,p.set(L,E),A.push(L);const I=new Array(s.length);for(let R=0;R<s.length;R++)I[R]=s[R](M);w.push(I),P.push([])}P[E].push(M)}const b=$(l.locale),O=w.map((C,M)=>M);O.sort((C,M)=>{const L=w[C],E=w[M];for(let I=0;I<L.length;I++){const R=g(L[I],E[I],b);if(R!==0)return R}return C-M});const x=new Array(O.length),j=new Array(O.length),F=new Array(O.length);for(let C=0;C<O.length;C++){const M=O[C];x[C]=w[M],j[C]=H(w[M],c),F[C]=Uint32Array.from(P[M])}return{tuples:x,paths:j,buckets:F}}function g(n,o,l){const c=n==null,i=o==null;return c||i?c&&i?0:c?1:-1:l(n,o)}function u(n,o,l){const c=[];for(let i=0;i<n.length;i++)l.has(n[i])&&c.push(n[i]);return Uint32Array.from(c)}function f(n,o,l,c){return{value:o.length?D(n,o,l,c):null,leaves:o,count:o.length}}function a(n){const o=n&&n.opts||{},l=o.separator||_,c=o.totalContext||{locale:o.locale},i=(n.measures||[]).filter(j=>j&&j.handle),m=n.leaves instanceof Uint32Array?n.leaves:Uint32Array.from(n.leaves||[]),d=S(n.rowHandles||[],m,{...o,separator:l}),h=S(n.columnHandles||[],m,{...o,separator:l}),s=o.maxColumns===void 0?z:o.maxColumns,p=h.paths.length*Math.max(1,i.length),w=new Map;if(s&&p>s)return{rowAxis:d,columnAxis:h,measures:i.map(j=>({colId:j.colId,fn:j.fn})),body:w,rowMargin:w,columnMargin:w,grand:w,columns:p,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${p} columns, above pivot.maxColumns of ${s}. Narrow the pivot columns or raise the limit.`,columns:p,maxColumns:s}};const A=new Map,P=new Map,b=new Map,O=new Map,x=h.buckets.map(j=>new Set(j));for(let j=0;j<h.paths.length;j++){const F=h.buckets[j],C=h.paths[j];for(const M of i)b.set(t(C,M.colId),f(M.handle,F,M.fn,c))}for(let j=0;j<d.paths.length;j++){const F=d.buckets[j],C=d.paths[j];for(const M of i)P.set(t(C,M.colId),f(M.handle,F,M.fn,c));for(let M=0;M<h.paths.length;M++){const L=u(F,h.buckets[M],x[M]);if(L.length===0)continue;const E=h.paths[M];for(const I of i)A.set(r(C,E,I.colId),f(I.handle,L,I.fn,c))}}for(const j of i)O.set(j.colId,f(j.handle,m,j.fn,c));return{rowAxis:d,columnAxis:h,measures:i.map(j=>({colId:j.colId,fn:j.fn})),body:A,rowMargin:P,columnMargin:b,grand:O,columns:p,error:null}}function r(n,o,l){return`${n}\0${o}\0${l}`}function t(n,o){return`${n}\0${o}`}}),$e("packages/core/src/compute/reference.js",function(e,W){"use strict";Object.defineProperty(e,"referenceValue",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"referenceSort",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"referenceFilter",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"referencePasses",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"referenceGroup",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"referenceTotal",{enumerable:!0,get:function(){return a}});const $=W("packages/core/src/internal/util.js").getPath,B=W("packages/core/src/compute/handle.js"),D=B.isMissing,K=B.valueComparator,G=W("packages/core/src/compute/filter.js").testValue,H="",_="\0";function z(n,o){const l=o.includes(".")?$(n,o):n?.[o];return l===void 0?null:l}function v(n,o,l={}){const c=o||[];let i=n.map((m,d)=>d);if(c.length===0)return i;for(let m=c.length-1;m>=0;m--)i=S(n,i,c[m],l);return i}function S(n,o,l,c){const i=l.locale!==void 0?l.locale:c.locale,m=K(i),d=l.descending!==void 0?!!l.descending:l.dir==="desc",h=[],s=[];for(const A of o){const P=z(n[A],l.col);D(P)?s.push(A):h.push(A)}const p=new Map;for(let A=0;A<h.length;A++)p.set(h[A],A);const w=(A,P)=>{const b=z(n[A],l.col),O=z(n[P],l.col);let x;return typeof l.compare=="function"?(x=l.compare(b,O,n[A],n[P],d),d&&(x=-x)):x=d?m(O,b):m(b,O),x!==0?x:p.get(A)-p.get(P)};return h.sort(w),l.nullsFirst?s.concat(h):h.concat(s)}function g(n,o,l={}){const c=[];for(let i=0;i<n.length;i++)u(n[i],o,l,i)&&c.push(i);return c}function u(n,o,l,c){if(!o)return!0;if(Array.isArray(o.conditions)){const i=o.conditions.filter(d=>d!=null);if(i.length===0)return!0;if(o.op==="or")return i.some(d=>u(n,d,l,c));const m=i.every(d=>u(n,d,l,c));return o.op==="not"?!m:m}return o.col===void 0&&typeof l.custom=="function"?!!l.custom(o,n,c):G(z(n,o.col),o,l.locale)}function f(n,o,l,c){const i=l||n.map((s,p)=>p),m=new Map,d=[],h=[];for(const s of i){const p=o.map((P,b)=>{const O=z(n[s],P);return c&&c[b]?c[b](O):O}),w=p.map(P=>P==null?_:String(P)).join(H);let A=m.get(w);A===void 0&&(A=d.length,m.set(w,A),d.push(p),h.push([])),h[A].push(s)}return{keys:d,buckets:h}}function a(n,o,l={}){const c=K(l.locale),i=n.filter(d=>!D(d)),m=i.map(r).filter(d=>d!==null);switch(o){case"count":return n.length;case"countValues":return i.length;case"sum":return m.reduce((d,h)=>d+h,0);case"avg":return i.length===0?null:m.reduce((d,h)=>d+h,0)/i.length;case"min":return i.length===0?null:i.reduce((d,h)=>c(h,d)<0?h:d);case"max":return i.length===0?null:i.reduce((d,h)=>c(h,d)>0?h:d);case"first":return n.length===0?null:t(n[0]);case"last":return n.length===0?null:t(n[n.length-1]);default:return null}}function r(n){if(typeof n=="number")return Number.isNaN(n)?null:n;if(n==null||n===""||typeof n=="boolean")return null;if(n instanceof Date)return n.getTime();const o=Number(n);return Number.isNaN(o)?null:o}function t(n){return n===void 0?null:n}}),$e("packages/core/src/compute/index.js",function(e,W){"use strict";const Z=W("packages/core/src/compute/sort.js");Object.defineProperty(e,"sortColumn",{enumerable:!0,get:function(){return Z.sortColumn}}),Object.defineProperty(e,"sortMulti",{enumerable:!0,get:function(){return Z.sortMulti}}),Object.defineProperty(e,"radixSortFloat64",{enumerable:!0,get:function(){return Z.radixSortFloat64}}),Object.defineProperty(e,"radixSortInt32",{enumerable:!0,get:function(){return Z.radixSortInt32}}),Object.defineProperty(e,"rankSortDictionary",{enumerable:!0,get:function(){return Z.rankSortDictionary}}),Object.defineProperty(e,"mergeSortComparator",{enumerable:!0,get:function(){return Z.mergeSortComparator}}),Object.defineProperty(e,"collateStringRanks",{enumerable:!0,get:function(){return Z.collateStringRanks}}),Object.defineProperty(e,"rankSortStrings",{enumerable:!0,get:function(){return Z.rankSortStrings}});const $=W("packages/core/src/compute/sortspec.js");Object.defineProperty(e,"collationDescriptor",{enumerable:!0,get:function(){return $.collationDescriptor}}),Object.defineProperty(e,"isPortableSort",{enumerable:!0,get:function(){return $.isPortableSort}}),Object.defineProperty(e,"isPortableSortSet",{enumerable:!0,get:function(){return $.isPortableSortSet}}),Object.defineProperty(e,"describeSortEntry",{enumerable:!0,get:function(){return $.describeSortEntry}}),Object.defineProperty(e,"describeSort",{enumerable:!0,get:function(){return $.describeSort}});const B=W("packages/core/src/compute/filter.js");Object.defineProperty(e,"evaluateFilters",{enumerable:!0,get:function(){return B.evaluateFilters}}),Object.defineProperty(e,"evaluateCondition",{enumerable:!0,get:function(){return B.evaluateCondition}}),Object.defineProperty(e,"compact",{enumerable:!0,get:function(){return B.compact}}),Object.defineProperty(e,"testValue",{enumerable:!0,get:function(){return B.testValue}}),Object.defineProperty(e,"compilePredicate",{enumerable:!0,get:function(){return B.compilePredicate}}),Object.defineProperty(e,"releaseMask",{enumerable:!0,get:function(){return B.releaseMask}}),Object.defineProperty(e,"pruneColumn",{enumerable:!0,get:function(){return B.pruneColumn}}),Object.defineProperty(e,"mentionsColumn",{enumerable:!0,get:function(){return B.mentionsColumn}});const D=W("packages/core/src/compute/group.js");Object.defineProperty(e,"groupByColumns",{enumerable:!0,get:function(){return D.groupByColumns}}),Object.defineProperty(e,"packKeys",{enumerable:!0,get:function(){return D.packKeys}});const K=W("packages/core/src/compute/facet.js");Object.defineProperty(e,"facet",{enumerable:!0,get:function(){return K.facet}}),Object.defineProperty(e,"computeBounds",{enumerable:!0,get:function(){return K.computeBounds}}),Object.defineProperty(e,"countInto",{enumerable:!0,get:function(){return K.countInto}}),Object.defineProperty(e,"bucketOf",{enumerable:!0,get:function(){return K.bucketOf}}),Object.defineProperty(e,"facetKind",{enumerable:!0,get:function(){return K.facetKind}}),Object.defineProperty(e,"cardinalityOf",{enumerable:!0,get:function(){return K.cardinalityOf}}),Object.defineProperty(e,"pickGranularity",{enumerable:!0,get:function(){return K.pickGranularity}}),Object.defineProperty(e,"floorTo",{enumerable:!0,get:function(){return K.floorTo}}),Object.defineProperty(e,"advance",{enumerable:!0,get:function(){return K.advance}}),Object.defineProperty(e,"STRATEGIES",{enumerable:!0,get:function(){return K.STRATEGIES}}),Object.defineProperty(e,"GRANULARITIES",{enumerable:!0,get:function(){return K.GRANULARITIES}}),Object.defineProperty(e,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return K.DEFAULT_BUCKETS}}),Object.defineProperty(e,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return K.DEFAULT_CARDINALITY_LIMIT}}),Object.defineProperty(e,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return K.QUANTILE_SAMPLE}});const Q=W("packages/core/src/compute/total.js");Object.defineProperty(e,"TOTAL_FNS",{enumerable:!0,get:function(){return Q.TOTAL_FNS}}),Object.defineProperty(e,"TOTAL_LABELS",{enumerable:!0,get:function(){return Q.TOTAL_LABELS}}),Object.defineProperty(e,"totalLabel",{enumerable:!0,get:function(){return Q.totalLabel}}),Object.defineProperty(e,"total",{enumerable:!0,get:function(){return Q.total}}),Object.defineProperty(e,"collectValues",{enumerable:!0,get:function(){return Q.collectValues}});const G=W("packages/core/src/compute/pivot.js");Object.defineProperty(e,"pivot",{enumerable:!0,get:function(){return G.pivot}}),Object.defineProperty(e,"resolvePivotKeys",{enumerable:!0,get:function(){return G.resolvePivotKeys}}),Object.defineProperty(e,"pivotKey",{enumerable:!0,get:function(){return G.pivotKey}}),Object.defineProperty(e,"joinPath",{enumerable:!0,get:function(){return G.joinPath}}),Object.defineProperty(e,"KEY_DELIMITER",{enumerable:!0,get:function(){return G.KEY_DELIMITER}}),Object.defineProperty(e,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return G.DEFAULT_PATH_SEPARATOR}}),Object.defineProperty(e,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return G.DEFAULT_MAX_COLUMNS}});const H=W("packages/core/src/compute/pivotmatrix.js");Object.defineProperty(e,"pivotMatrix",{enumerable:!0,get:function(){return H.pivotMatrix}}),Object.defineProperty(e,"resolveAxis",{enumerable:!0,get:function(){return H.resolveAxis}}),Object.defineProperty(e,"cellKey",{enumerable:!0,get:function(){return H.cellKey}}),Object.defineProperty(e,"marginKey",{enumerable:!0,get:function(){return H.marginKey}}),Object.defineProperty(e,"GRAND_PATH",{enumerable:!0,get:function(){return H.GRAND_PATH}});const _=W("packages/core/src/compute/reference.js");Object.defineProperty(e,"referenceSort",{enumerable:!0,get:function(){return _.referenceSort}}),Object.defineProperty(e,"referenceFilter",{enumerable:!0,get:function(){return _.referenceFilter}}),Object.defineProperty(e,"referenceGroup",{enumerable:!0,get:function(){return _.referenceGroup}}),Object.defineProperty(e,"referenceTotal",{enumerable:!0,get:function(){return _.referenceTotal}}),Object.defineProperty(e,"referencePasses",{enumerable:!0,get:function(){return _.referencePasses}}),Object.defineProperty(e,"referenceValue",{enumerable:!0,get:function(){return _.referenceValue}});const z=W("packages/core/src/compute/handle.js");Object.defineProperty(e,"identity",{enumerable:!0,get:function(){return z.identity}}),Object.defineProperty(e,"rowCount",{enumerable:!0,get:function(){return z.rowCount}}),Object.defineProperty(e,"presenceReader",{enumerable:!0,get:function(){return z.presenceReader}}),Object.defineProperty(e,"bitReader",{enumerable:!0,get:function(){return z.bitReader}}),Object.defineProperty(e,"valueReader",{enumerable:!0,get:function(){return z.valueReader}}),Object.defineProperty(e,"valueComparator",{enumerable:!0,get:function(){return z.valueComparator}}),Object.defineProperty(e,"numericTotalOrder",{enumerable:!0,get:function(){return z.numericTotalOrder}}),Object.defineProperty(e,"dictRanks",{enumerable:!0,get:function(){return z.dictRanks}}),Object.defineProperty(e,"dictSize",{enumerable:!0,get:function(){return z.dictSize}}),Object.defineProperty(e,"dictValue",{enumerable:!0,get:function(){return z.dictValue}}),Object.defineProperty(e,"multiValue",{enumerable:!0,get:function(){return z.multiValue}}),Object.defineProperty(e,"isMissing",{enumerable:!0,get:function(){return z.isMissing}});const v=W("packages/core/src/compute/sketch.js");Object.defineProperty(e,"Welford",{enumerable:!0,get:function(){return v.Welford}}),Object.defineProperty(e,"Reservoir",{enumerable:!0,get:function(){return v.Reservoir}}),Object.defineProperty(e,"HyperLogLog",{enumerable:!0,get:function(){return v.HyperLogLog}}),Object.defineProperty(e,"SpaceSaving",{enumerable:!0,get:function(){return v.SpaceSaving}}),Object.defineProperty(e,"KLL",{enumerable:!0,get:function(){return v.KLL}}),Object.defineProperty(e,"hash32",{enumerable:!0,get:function(){return v.hash32}}),Object.defineProperty(e,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return v.SKETCH_BOUNDS}});const S=W("packages/core/src/compute/windowed.js");Object.defineProperty(e,"Window",{enumerable:!0,get:function(){return S.Window}}),Object.defineProperty(e,"WINDOW_KINDS",{enumerable:!0,get:function(){return S.WINDOW_KINDS}}),Object.defineProperty(e,"openWindow",{enumerable:!0,get:function(){return S.openWindow}});const g=W("packages/core/src/compute/statistics.js");Object.defineProperty(e,"MAINTENANCE",{enumerable:!0,get:function(){return g.MAINTENANCE}}),Object.defineProperty(e,"APPROXIMATE",{enumerable:!0,get:function(){return g.APPROXIMATE}}),Object.defineProperty(e,"maintenanceOf",{enumerable:!0,get:function(){return g.maintenanceOf}});const u=W("packages/core/src/compute/anomaly.js");Object.defineProperty(e,"ANOMALY_METHODS",{enumerable:!0,get:function(){return u.ANOMALY_METHODS}}),Object.defineProperty(e,"modifiedZScores",{enumerable:!0,get:function(){return u.modifiedZScores}}),Object.defineProperty(e,"iqrFences",{enumerable:!0,get:function(){return u.iqrFences}}),Object.defineProperty(e,"mahalanobis",{enumerable:!0,get:function(){return u.mahalanobis}}),Object.defineProperty(e,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return u.ROLLING_ANOMALY_METHODS}}),Object.defineProperty(e,"rollingAnomalies",{enumerable:!0,get:function(){return u.rollingAnomalies}}),Object.defineProperty(e,"anomalyCondition",{enumerable:!0,get:function(){return u.anomalyCondition}});const f=W("packages/core/src/compute/forecast.js");Object.defineProperty(e,"FORECAST_METHODS",{enumerable:!0,get:function(){return f.FORECAST_METHODS}}),Object.defineProperty(e,"forecast",{enumerable:!0,get:function(){return f.forecast}})}),$e("packages/core/src/source/rows.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_ROW_HEIGHT",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"KEY_SEP",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"createRowFactory",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"RowFactory",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"pinnedRow",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"lazyRowView",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"groupPathElement",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"groupKey",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"groupPrefixKeys",{enumerable:!0,get:function(){return u}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.isFunction,D=32,K="\0";function Q(f){return new G(f)}class G{#e;#t;constructor(a){this.#e=B(a&&a.rowKey)?a.rowKey:null;const r=a&&a.config?a.config.rowHeight:void 0;this.#t=typeof r=="number"||B(r)?r:D}get keyed(){return this.#e!==null}keyOf(a,r){if(this.#e){const t=this.#e(a);if(t!=null)return String(t)}else $("source.rowKey.missing","no config.rowKey; falling back to index identity.","Row changes, streaming dedupe, selection persistence and remote reload are disabled.");return`#${r}`}heightOf(a){return B(this.#t)?Number(this.#t(a))||D:this.#t}leaf(a,r,t=0,n=null){const o={key:this.keyOf(a,r),data:a,level:t,parent:n,group:!1,expanded:!1,leafCount:1,height:0,index:null,selected:!1,physical:r};return o.height=this.heightOf(o),o}group(a){const r={key:g(a.keyPath||a.path),data:null,level:a.level,parent:a.parent||null,children:[],group:!0,expanded:a.expanded!==!1,leafCount:a.leafCount||0,height:0,index:null,selected:!1,physical:null,groupColumn:a.column,groupValue:a.value,groupPath:a.path,hasChildren:a.hasChildren!==!1};return a.totals&&(r.totals=a.totals),r.height=this.heightOf(r),r}footer(a){const r={key:`${a.key}${K}footer`,data:null,level:a.level,parent:a,group:!0,footer:!0,expanded:!1,leafCount:a.leafCount||0,height:0,index:null,selected:!1,physical:null,groupColumn:a.groupColumn,groupValue:a.groupValue,groupPath:a.groupPath,hasChildren:!1,totals:a.totals};return r.height=this.heightOf(r),r}detail(a,r){return{key:`${a.key}${K}detail`,data:a.data,level:a.level+1,parent:a,group:!1,detail:!0,expanded:!1,leafCount:0,height:r,index:null,selected:!1,physical:null,hasChildren:!1,masterKey:a.key}}grandTotal(a,r){const t={key:`${K}grandTotal`,data:null,level:0,parent:null,group:!0,grandTotal:!0,expanded:!1,leafCount:r,height:0,index:null,selected:!1,physical:null,groupPath:[],hasChildren:!1,totals:a};return t.height=this.heightOf(t),t}skeleton(a,r=0,t=!1){const n={key:`${K}pending${K}${a}`,data:null,level:r,parent:null,group:!1,expanded:!1,leafCount:1,height:0,index:a,selected:!1,physical:null,pending:!0};return t&&(n.loadError=!0),n.height=this.heightOf(n),n}}function H(f,a,r,t){return{key:`${K}pinned${K}${r}${K}${a}`,data:f,level:0,parent:null,group:!1,expanded:!1,leafCount:0,height:t,index:null,selected:!1,physical:null,hasChildren:!1,pinned:r}}function _(f,a){return new Proxy([],{get(r,t,n){if(t==="length")return f();if(typeof t=="string"){const o=Number(t);if(Number.isInteger(o)&&o>=0)return a(o)}return Reflect.get(r,t,n)},has(r,t){if(typeof t=="string"){const n=Number(t);if(Number.isInteger(n)&&n>=0)return n<f()}return Reflect.has(r,t)}})}function z(f){return f==null?"":String(f)}const v="";function S(f){if(f==null)return v;const a=String(f);return a.startsWith(v)?v+a:a}function g(f){const a=f||[];let r="g";for(let t=0;t<a.length;t++)r+=K+S(a[t]);return r}function u(f){const a=new Array(f.length),r=[];for(let t=0;t<f.length;t++)r.push(f[t]),a[t]=g(r);return a}}),$e("packages/core/src/source/handles.js",function(e,W){"use strict";Object.defineProperty(e,"HandleProvider",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"createHandleProvider",{enumerable:!0,get:function(){return K}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce;class D{#e;#t;#n;#r=new Map;#o=0;constructor(G,H,_){this.#e=G,this.#t=H,this.#n=$(_)?_:()=>!1}get store(){const G=this.#e.store;return G&&$(G.column)?G:null}invalidate(){this.#o++}handle(G){const H=this.store;if(H){const S=H.column(G);if(S)return S}const _=this.#r.get(G);if(_&&_.builtAt===this.#o)return _.handle;const z=this.#i(G);if(!z)return;if(H&&this.#n()){B(`source.dropped.${G}`,`column "${G}" cannot be served under ingest.dropSourceRows: it is an impure computed column (a shadow or a positional/rank column) that is never stored, so it can only be read from the caller's row objects — which dropSourceRows has released. Do not sort, filter, group or total on such a column with dropSourceRows enabled.`);return}const v=this.#s(z);return this.#r.set(G,{handle:v,builtAt:this.#o}),v}#i(G){const H=this.#e.columns;return H&&$(H.get)?H.get(G):void 0}#s(G){const H=this.#t()||[],_=H.length,z=new Array(_),v=$(G.getValue)?g=>G.getValue(g):g=>g?.[G.field||G.id];for(let g=0;g<_;g++)z[g]=H[g]===void 0?void 0:v(H[g]);const S=this.#o;return{id:G.id,kind:"object",nullable:!1,values:z,presence:null,dict:null,offsets:null,get(g){return z[g]},version:S}}}function K(Q,G,H){return new D(Q,G,H)}}),$e("packages/core/src/compute/incremental.js",function(e,W){"use strict";Object.defineProperty(e,"INCREMENTAL_FNS",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"INCREMENTAL_KINDS",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"MAGNITUDE_LIMIT",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"isIncremental",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"RunningTotal",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return _}});const $=W("packages/core/src/store/columnstore.js").toFloat,B=Object.freeze(["sum","avg","countValues","min","max"]),D=Object.freeze(["float64"]),K=1e15;function Q(z,v){return typeof z!="string"||!B.includes(z)?!1:!!v&&D.includes(v.kind)}function G(z){if(z==null)return null;const v=$(z);return Number.isNaN(v)?null:v}class H{#e;#t=0;#n=0;#r=0;#o=1/0;#i=-1/0;#s=!1;#l=!1;constructor(v){this.#e=v}get valid(){return this.#s&&!this.#l}get fn(){return this.#e}seed(v){this.#a();for(let S=0;S<v.length;S++){const g=G(v[S]);g!==null&&this.#u(g)}this.#s=!0}seedColumn(v,S,g){this.#a();for(let u=0;u<g.length;u++){const f=g[u];if(S&&S(f)===0)continue;const a=v[f];Number.isNaN(a)||this.#u(a)}this.#s=!0}#a(){this.#t=0,this.#n=0,this.#r=0,this.#o=1/0,this.#i=-1/0,this.#l=!1}#u(v){if(!Number.isFinite(v)){this.#l=!0;return}const S=this.#t+v;this.#n+=Math.abs(this.#t)>=Math.abs(v)?this.#t-S+v:v-S+this.#t,this.#t=S,this.#r++,v<this.#o&&(this.#o=v),v>this.#i&&(this.#i=v)}#c(v){const S=this.#t-v;this.#n+=Math.abs(this.#t)>=Math.abs(v)?this.#t-S-v:-v-S+this.#t,this.#t=S,this.#r--}update(v,S){if(!this.#s)return!1;const g=G(v),u=G(S);return g===null&&u===null?!0:g!==null&&!Number.isFinite(g)||u!==null&&!Number.isFinite(u)?!1:this.#e==="min"||this.#e==="max"?g===null||u===null?!1:this.#e==="min"?u<this.#o?(this.#o=u,!0):g>this.#o:u>this.#i?(this.#i=u,!0):g<this.#i:Math.abs(this.#t)>K?!1:(g!==null&&this.#c(g),u!==null&&this.#u(u),!0)}value(){switch(this.#e){case"countValues":return this.#r;case"avg":return this.#r?(this.#t+this.#n)/this.#r:null;case"min":return this.#r?this.#o:null;case"max":return this.#r?this.#i:null;default:return this.#t+this.#n}}invalidate(){this.#s=!1}}const _=H}),$e("packages/core/src/source/filterwire.js",function(e,W){"use strict";Object.defineProperty(e,"HOST_FILTER_WARN_ID",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"WHERE_PAGE_RELATIVE_WARN_ID",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"warnWherePageRelative",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"warnHostFilterNotApplied",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"WHERE_NOT_APPLIED_WARN_ID",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"warnWhereNotApplied",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"WHERE_OVER_THRESHOLD_WARN_ID",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"warnWhereOverThreshold",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"RELATIVE_TOKENS",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"parseRelativeToken",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"resolveRelativeRange",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"relativeTokenOf",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"relativeTokenHelp",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"isResolvableRelative",{enumerable:!0,get:function(){return i}}),Object.defineProperty(e,"resolveRelativeCondition",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"isGroup",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"forEachCondition",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"mapConditions",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"normaliseFilterSet",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"buildFilterSet",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"wireFilters",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"querySignature",{enumerable:!0,get:function(){return b}});const $=W("packages/core/src/internal/util.js").warnOnce,B="source.remote.hostFilter",D="source.where.pageRelative";function K(j,F){!Array.isArray(j)||!j.length||$(D,`filters.where (${j.join(", ")}) runs over the rows the ${F} source fetched,`,"not the whole dataset: match counts and totals are page-relative.","Give the predicate a { condition } twin so the engine can narrow the fetch itself.")}function Q(j){const F=(j||{}).config;!F||!F.hostFilter||$(B,"config.hostFilter is not sent to a server-delegated source (paged/remote) and is not applied:","filtering only the fetched window would give wrong counts and totals.","Express the filter as a FilterSet condition, or send it through config.context.")}const G="source.where.notApplied";function H(j,F){$(`${G}:${j}`,`filters.where("${j}") is registered but the ${F} source holds only its fetched window`,"and cannot run the predicate over it: the predicate is not applied there, and rows it would","exclude stay on screen.","Give it a { condition } twin so the engine can narrow the fetch itself — that is the","supported route for a paged or remote source.")}const _="source.where.overThreshold";function z(j,F,C,M){!Array.isArray(j)||!j.length||$(`${_}:${F}`,`filters.where (${j.join(", ")}) is not applied to the ${F} pushdown source:`,C===null?"the adapter reports no row total, so the size of the matching set is unknown.":`its matching set is ${C.toLocaleString()} rows, at or past the whereRowLimit of ${M.toLocaleString()}.`,"Running the predicate needs every matching row fetched and held here, which is the whole","download a pushdown source exists to avoid, so it is refused and the rows the predicate","would exclude stay on screen.","Give the predicate a { condition } twin so the engine narrows the fetch itself — that is the","route that works at any size — or raise `whereRowLimit` on the source config if you want the","download.")}const v=new Map;function S(j){let F=v.get(j);return F||(F=new Intl.DateTimeFormat("en-US",{timeZone:j,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),v.set(j,F)),F}function g(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}}function u(j,F){const C=S(F).formatToParts(new Date(j)),M={y:1970,m:1,d:1,h:0,mi:0,s:0};for(const L of C)L.type==="year"?M.y=+L.value:L.type==="month"?M.m=+L.value:L.type==="day"?M.d=+L.value:L.type==="hour"?M.h=+L.value%24:L.type==="minute"?M.mi=+L.value:L.type==="second"&&(M.s=+L.value);return M}function f(j,F){const C=u(j,F);return Date.UTC(C.y,C.m-1,C.d,C.h,C.mi,C.s)-Math.floor(j/1e3)*1e3}function a(j,F,C,M){const L=Date.UTC(j,F-1,C),E=L-f(L,M);return L-f(E,M)}function r(j,F,C){const M=new Date(Date.UTC(j.y,j.m-1,j.d+F));return a(M.getUTCFullYear(),M.getUTCMonth()+1,M.getUTCDate(),C)}const t=Object.freeze(["today","yesterday","lastNDays","thisWeek","thisMonth","thisQuarter","thisYear","quarterToDate","yearToDate"]);function n(j,F){if(typeof j!="string")return null;const C=j.trim().toLowerCase().replace(/[\s_-]+/g,""),M=/^last(\d*|n)days?$/.exec(C);if(M){const L=M[1]==="n"?"":M[1],E=Number(L||F);return!Number.isFinite(E)||E<=0?null:{kind:"lastNDays",n:Math.floor(E)}}switch(C){case"today":return{kind:"today",n:0};case"yesterday":return{kind:"yesterday",n:0};case"thisweek":return{kind:"thisWeek",n:0};case"thismonth":return{kind:"thisMonth",n:0};case"thisquarter":return{kind:"thisQuarter",n:0};case"thisyear":return{kind:"thisYear",n:0};case"quartertodate":case"qtd":return{kind:"quarterToDate",n:0};case"yeartodate":case"ytd":return{kind:"yearToDate",n:0};default:return null}}function o(j,F={}){const C=n(j,F.n);if(!C)return null;const M=F.tz||g(),L=F.now instanceof Date?F.now.getTime():typeof F.now=="number"?F.now:Date.now(),E=u(L,M),I=a(E.y,E.m,E.d,M),R=r(E,1,M);let k=I,y=R;switch(C.kind){case"today":break;case"yesterday":k=r(E,-1,M),y=I;break;case"lastNDays":y=F.includeToday?R:I,k=r(E,F.includeToday?-(C.n-1):-C.n,M);break;case"thisWeek":{const T=Number.isFinite(F.weekStartsOn)?Number(F.weekStartsOn):1,q=(new Date(Date.UTC(E.y,E.m-1,E.d)).getUTCDay()-T+7)%7;k=r(E,-q,M),y=r(E,-q+7,M);break}case"thisMonth":k=a(E.y,E.m,1,M),y=a(E.m===12?E.y+1:E.y,E.m===12?1:E.m+1,1,M);break;case"thisQuarter":case"quarterToDate":{const T=Math.floor((E.m-1)/3)*3+1;k=a(E.y,T,1,M),y=C.kind==="quarterToDate"?R:T===10?a(E.y+1,1,1,M):a(E.y,T+3,1,M);break}case"thisYear":case"yearToDate":k=a(E.y,1,1,M),y=C.kind==="yearToDate"?R:a(E.y+1,1,1,M);break;default:return null}return{from:new Date(k).toISOString(),to:new Date(y).toISOString(),bounds:"[)",tz:M,relative:C.kind==="lastNDays"?`last${C.n}Days`:C.kind,n:C.n}}function l(j){if(!j||typeof j!="object")return null;const F=j.value;if(F&&typeof F=="object"&&!Array.isArray(F)&&"relative"in F)return{token:String(F.relative),n:typeof F.n=="number"?F.n:void 0};if(j.op==="relative"&&typeof j.value=="string")return{token:j.value,n:void 0};const C=j.meta;return C&&typeof C.relative=="string"&&j.value===void 0?{token:C.relative,n:typeof C.n=="number"?C.n:void 0}:null}function c(){return`Known tokens: ${t.filter(F=>F!=="lastNDays").join(", ")}. "lastNDays" needs a count: pass "last7Days", or the value object { relative: 'lastNDays', n: 7 }.`}function i(j){const F=l(j);return F?n(F.token,F.n)!==null:!1}function m(j,F={}){const C=l(j);if(!C)return j;const M=o(C.token,{...F,n:C.n});return M?{...j,type:j.type||"date",op:"between",value:[M.from,M.to],bounds:j.bounds||M.bounds,meta:{...j.meta||{},relative:M.relative,tz:M.tz}}:($(`source.relative.${C.token}`,`unknown relative date token "${C.token}"; sending the condition unresolved.`,c()),j)}function d(j){return!!j&&typeof j=="object"&&Array.isArray(j.conditions)}function h(j,F){if(j){if(d(j)){for(const C of j.conditions)h(C,F);return}F(j)}}function s(j,F){if(!j)return null;if(!d(j))return F(j);const C=j;let M=!1;const L=[];for(const E of C.conditions){const I=s(E,F);I!==E&&(M=!0),I&&L.push(I)}return!M&&L.length===C.conditions.length?j:L.length?{...C,conditions:L}:null}function p(j){if(!j)return null;if(!d(j))return j;const F=j,C=[];for(const M of F.conditions){const L=p(M);L&&C.push(L)}return C.length?{op:F.op,conditions:C}:null}function w(j){const F=p(j);return F?d(F)&&F.op==="and"?F:{op:"and",conditions:[F]}:null}function A(j){const F=(j||[]).filter(Boolean);return F.length?{op:"and",conditions:F}:null}function P(j,F={}){const C=s(j,M=>m(M,F));return w(C)}function b(j){const F=O(j.filters??null);return JSON.stringify([F,j.sort??null,j.quick??"",j.groupBy??null,j.pivotBy??null,x(j.context)])}function O(j){if(!j)return null;if(d(j)){const M=j;return{op:M.op,conditions:M.conditions.map(O)}}const F=j,C=F.meta&&typeof F.meta.relative=="string"?F.meta.relative:l(F)?.token;return{col:F.col,op:F.op,bounds:F.bounds??null,caseSensitive:F.caseSensitive??!1,value:C?`rel:${C}`:F.value??null}}function x(j){if(j==null)return null;try{return JSON.parse(JSON.stringify(j))}catch{return $("source.context.unserialisable","config.context is not JSON-serialisable; cache keys ignore it."),"[unserialisable]"}}}),$e("packages/core/src/source/tree.js",function(e,W){"use strict";Object.defineProperty(e,"SYNTHETIC",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"buildFromPath",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"buildFromParentKey",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"assignLevels",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"resolveTree",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"buildTree",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"indexTree",{enumerable:!0,get:function(){return g}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D="",K="\0tree:";function Q(u,f){return{physical:u,key:f,level:0,children:[],value:void 0}}function G(u,f){const a=[],r=new Map;for(let t=0;t<u.length;t++){const n=u[t],o=f.pathOf(n),l=Array.isArray(o)?o.map(i=>String(i)):[];if(!l.length){const i=Q(n,f.keyOf(n));a.push(i);continue}let c=null;for(let i=0;i<l.length;i++){const m=l.slice(0,i+1).join(D),d=i===l.length-1;let h=r.get(m);h&&d&&h.physical===-1&&(h.physical=n,h.key=f.keyOf(n)),h||(h=Q(d?n:-1,d?f.keyOf(n):K+m),h.level=i,h.value=l[i],r.set(m,h),c?c.children.push(h):a.push(h)),c=h}}return{roots:a,nodes:r}}function H(u,f){const a=new Map,r=[];for(let l=0;l<u.length;l++){const c=u[l],i=f.keyOf(c),m=Q(c,i);a.set(i,m);const d=f.parentOf(c);d!=null&&d!==""&&r.push({node:m,parent:String(d)})}let t=null;const n=new Map;for(const{node:l,parent:c}of r){const i=a.get(c);if(i){n.set(l.key,i);continue}f.orphans&&f.orphans!=="root"&&(t||(t=Q(-1,`${K}orphans`),t.value=f.orphans),n.set(l.key,t))}const o=[];for(const l of a.values()){const c=n.get(l.key);c?c.children.push(l):o.push(l)}return t&&t.children.length&&o.push(t),{roots:_(o,a,f.orphans,t),nodes:a}}function _(u,f,a,r){const t=new Set,n=[...u];for(;n.length;){const m=n.pop();if(!t.has(m.key)){t.add(m.key);for(const d of m.children)n.push(d)}}const o=[];for(const m of f.values())t.has(m.key)||o.push(m);if(!o.length)return u;const l=!!a&&a!=="root";B("tree.cycle",`tree.parentKey produced ${o.length} row(s) inside a parent cycle; `+(l?`they are shown under "${a}".`:"they are shown at the root."));for(const m of o)m.children=m.children.filter(d=>t.has(d.key));if(!l)return[...u,...o];let c=r;const i=[...u];return c||(c=Q(-1,`${K}orphans`),c.value=a,i.push(c)),c.children.push(...o),i}function z(u){let f=0;const a=(r,t)=>{for(const n of r)n.level=t,t>f&&(f=t),n.children.length&&a(n.children,t+1)};return a(u,0),f}function v(u,f){if(!u||typeof u!="object")return null;const a=u.path,r=u.parentKey,t=$(u.hasChildren)?n=>!!u.hasChildren(f.dataAt(n)):null;if($(a))return{mode:"path",pathOf:n=>a(f.dataAt(n)),keyOf:f.keyOf,declaresChildren:t};if(r!=null){const n=$(r)?r:o=>o?.[r];return{mode:"parentKey",parentOf:o=>n(f.dataAt(o)),keyOf:f.keyOf,orphans:u.orphans||"root",declaresChildren:t}}return B("tree.shape","tree is configured with neither `path` nor `parentKey`; rows stay flat."),null}function S(u,f){const a=f.mode==="path"?G(u,f):H(u,f),r=z(a.roots);return{...a,depth:r}}function g(u,f){const a=new Map,r=t=>{for(let n=0;n<t.length;n++){const o=t[n];if(o.physical>=0){const l=f?f(o.physical):!1,c=l&&o.children.length===0;a.set(o.physical,{level:o.level,posinset:n+1,setsize:t.length,hasChildren:o.children.length>0||l,lazy:c})}o.children.length&&r(o.children)}};return r(u),a}}),$e("packages/core/src/source/memory.js",function(e,W){"use strict";Object.defineProperty(e,"STAGES",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"PIPELINE_SETTLE_REASONS",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"isPipelineSettle",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"createMemorySource",{enumerable:!0,get:function(){return E}}),Object.defineProperty(e,"quickMatcher",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"MemorySource",{enumerable:!0,get:function(){return R}});const Z=W("packages/core/src/internal/util.js"),$=Z.Lru,B=Z.warnOnce,D=Z.fail,K=Z.isFunction,Q=Z.defaultCompare,G=Z.mergeRow,H=W("packages/core/src/source/rows.js"),_=H.createRowFactory,z=H.groupKey,v=H.groupPathElement,S=H.groupPrefixKeys,g=H.lazyRowView,f=W("packages/core/src/source/handles.js").createHandleProvider,a=W("packages/core/src/compute/incremental.js"),r=a.RunningTotal,t=a.isIncremental,o=W("packages/core/src/compute/handle.js").presenceReader,l=W("packages/core/src/source/filterwire.js"),c=l.querySignature,i=l.mapConditions,m=l.resolveRelativeCondition,d=W("packages/core/src/source/tree.js"),h=d.buildTree,s=d.resolveTree,p=d.indexTree,w=Object.freeze(["filter","sort","group","total","pivot","flatten"]),A=Object.freeze(["pipeline:sort","pipeline:sort:error"]);function P(k){const y=k&&typeof k=="object"?k.reason:null;return typeof y=="string"&&A.includes(y)}const b=Object.freeze([]);function O(k,y){if(!k)return null;const T=y==="grand"?k.grandTotal:k.groupTotal;return T??k.total}function x(k){return!!k&&!k.running}function j(k){if(k)return k.value&&K(k.value.compare)?k.value.compare:K(k.compare)?k.compare:void 0}function F(k){const y=k&&k.dataType;return!y||!K(y.items)?null:{items:y.items,type:k.itemType&&k.itemType.name||"text"}}function C(k){return!!k&&(typeof k=="object"||typeof k=="function")&&K(k.then)}const M=new Uint32Array(0),L=4096;function E(k,y){return new R(k,y)}function I(k,y){if(y==="regex")try{const T=new RegExp(k,"iu");return V=>T.test(V)}catch{return T=>T.includes(k)}if(y==="fuzzy"){const T=[...k].filter(V=>V!==" ");return T.length?V=>{let q=0;for(let Y=0;Y<V.length&&q<T.length;Y++)V[Y]===T[q]&&q++;return q===T.length}:()=>!0}if(y==="words"){const T=k.split(/\s+/).filter(Boolean);return T.length?V=>T.every(q=>V.includes(q)):()=>!0}return T=>T.includes(k)}class R{mode="memory";#e;#t;#n;#r=!1;#o=null;#i;#s;#l=new Map;#a=!1;#u=0;#c=0;#d=new Map;#f=new Map;#h;#p=null;#m=R.#g();static#g(){return{slots:[],groupHeadings:b,unnumbered:b,pivot:null,inlineLeaves:null,matchCount:0,grand:null,grandLeaves:0,groupLeaves:null}}#y=new Map;#b=null;#A=new Map;#w=-1;#S=[];#v=new Map;#C=-1;#O=[];#P=null;#M=null;#E=null;#T=null;#N=null;#x=null;#B=null;#_=null;#z=Symbol("unset");#D=new Map;#q=null;get#$(){return this.#m.slots}set#$(y){this.#m.slots=y}get#W(){return this.#m.inlineLeaves}set#W(y){this.#m.inlineLeaves=y}get#V(){return this.#m.groupHeadings}set#V(y){this.#m.groupHeadings=y}get#U(){return this.#m.unnumbered}set#U(y){this.#m.unnumbered=y}get#he(){return this.#m.pivot}set#he(y){this.#m.pivot=y}constructor(y,T){this.#t=y||{mode:"memory"},this.#e=T||{};const V=this.#e.config||{};this.#n=this.#t.rows||V.rows||[],this.#i=_(this.#e),this.#s=f(this.#e,()=>this.#n,()=>this.#r),this.#h=new $(Number(V.rowCacheSize)||L);for(const q of w)this.#l.set(q,{key:null,result:null,id:0,computed:!1})}count(){this.#I();const y=this.#ie();return y?y.length:this.#$.length}#ie(){const y=Number(this.#H("pageSize",0))||0;if(y<=0)return null;const T=this.#$.length,V=Math.max(1,Math.ceil(T/y)),Y=Math.min(Math.max(0,Number(this.#H("page",0))||0),V-1)*y;return{offset:Y,length:Math.max(0,Math.min(y,T-Y))}}pageInfo(){this.#I();const y=Number(this.#H("pageSize",0))||0,T=this.#$.length;if(y<=0)return{page:0,pageSize:0,total:T,pageCount:1};const V=Math.max(1,Math.ceil(T/y));return{page:Math.min(Math.max(0,Number(this.#H("page",0))||0),V-1),pageSize:y,total:T,pageCount:V}}totalCount(){return this.#de().length}matchCount(){return this.#I(),this.#m.matchCount}at(y){this.#I();const T=this.#ie();if(T)return y<0||y>=T.length?void 0:this.#Le(T.offset+y,y);if(!(y<0||y>=this.#$.length))return this.#Le(y,y)}byKey(y){this.#I(),this.#p||this.#Te();const T=this.#p.get(y);if(T!==void 0)return this.#Ae(T);for(let V=0;V<this.#$.length;V++){const q=this.#$[V];if(typeof q!="number"&&q&&q.key===y)return this.#Le(V)}}loaded(y){return y>=0&&y<this.count()}hint(y,T){}display(){return this.#I(),this.#q||(this.#q=this.#Mt()),this.#q}invalidateQuickText(){this.#D.clear(),this.invalidate("filter")}invalidate(y){const T=w.indexOf(y);T<0&&D(`unknown pipeline stage "${y}"; expected one of ${w.join(", ")}`);for(let V=T;V<w.length;V++){const q=this.#l.get(w[V]);q.key=null,q.computed=!1}this.#q=null}apply(y){const T=[],V={added:[],updated:[],removed:[],rejected:T};if(!y)return V;let q=!1;const Y=new Set;if(y.remove&&y.remove.length)for(const J of y.remove){const ee=this.#me(J);if(ee===void 0){T.push({operation:"remove",id:this.#we(J),reason:"unknown-id"});continue}V.removed.push(this.#i.keyOf(this.#r?this.#ue(ee):this.#n[ee],ee)),this.#r||(this.#n[ee]=void 0),this.#h.delete(ee),this.#D.delete(ee),q=!0}if(y.update&&y.update.length){const J=this.#A.size||this.#Ke()?this.#Xe():null,ee=this.#v.size?this.#kt():null,ne=ee&&ee.length?this.#Xe():null;for(const ie of y.update){const se=this.#me(ie);if(se===void 0){T.push({operation:"update",id:this.#Ee(ie),reason:"unknown-id"});continue}const we=this.#r?this.#o&&this.#o.has(se)?this.#o.get(se):this.#ue(se):this.#n[se],he=G(we,ie);for(const te of this.#te(we,he))Y.add(te);if(this.#r||(this.#n[se]=he),J&&this.#Tt(J,se,we,he),ne&&this.#lt(ee,ne,se,we,he),this.#p){const te=this.#i.keyOf(we,se),ae=this.#i.keyOf(he,se);te!==ae&&(this.#p.delete(te),this.#p.set(ae,se))}this.#h.delete(se),this.#D.delete(se),V.updated.push(this.#Ae(se))}}if(y.add&&y.add.length&&this.#r){typeof y.at=="number"&&y.at<this.#Me()&&(this.#h.clear(),this.#D.clear()),this.#p=null;for(const J of y.add){const ee=this.#se(this.#Ee(J));ee!==void 0&&V.added.push(this.#Ae(ee))}q=!0}else if(y.add&&y.add.length){const J=typeof y.at=="number"?y.at:this.#n.length,ee=this.#n.length;let ne=y.add===this.#n?y.add.slice():y.add;if(this.#i.keyed){const ie=[];for(const se of ne){const we=this.#Ee(se);if(this.#me(we)!==void 0){T.push({operation:"add",id:we,reason:"duplicate-id"});continue}ie.push(se)}ie.length!==ne.length&&(ne=ie)}if(!ne.length)return V;if(J>=ee)for(let ie=0;ie<ne.length;ie++)this.#n.push(ne[ie]);else this.#n.splice(J,0,...ne),this.#h.clear(),this.#D.clear();for(let ie=0;ie<ne.length;ie++)V.added.push(this.#Ae(J>=ee?ee+ie:J+ie));q=!0}return this.#u++,q&&(this.#p=null,this.#nt()),this.#s.invalidate(),this.#q=null,q||this.#Z(Y)?(this.#c++,this.invalidate("filter")):this.invalidate("total"),this.#Qe("rows:changed",{companion:!0,added:V.added.length,updated:V.updated.length,removed:V.removed.length}),this.#o=null,V}groupHeadingsAt(y){this.#I();const T=this.#V;if(!T.length||!Number.isInteger(y)||y<0)return b;let V=0,q=T.length-1,Y=-1;for(;V<=q;){const ee=V+q>>1;T[ee].at<=y?(Y=ee,V=ee+1):q=ee-1}if(Y<0)return b;const J=[];for(let ee=T[Y].row;ee;ee=ee.parent)J.push(ee);return J.reverse(),J}unnumberedRowCount(y){this.#I();const T=this.#U;if(!T.length||!Number.isInteger(y)||y<0)return 0;let V=0,q=T.length-1,Y=-1;for(;V<=q;){const J=V+q>>1;T[J].at<=y?(Y=J,V=J+1):q=J-1}return Y+1}moveRow(y,T){if(this.#r)return B("source.moveRow.dropped","rows.move() is not supported under ingest.dropSourceRows: the source objects have been released and the store cannot reorder its columns in place. Enable retainSource (leave dropSourceRows off) to reorder rows."),!1;const V=this.#n;if(!Number.isInteger(y)||!Number.isInteger(T)||y<0||y>=V.length)return!1;const q=Math.max(0,Math.min(V.length-1,T));if(q===y)return!1;const[Y]=V.splice(y,1);return V.splice(q,0,Y),this.#u++,this.#c++,this.#p=null,this.#h.clear(),this.#D.clear(),this.#nt(),this.#s.invalidate(),this.#q=null,this.invalidate("filter"),this.#Qe("rows:changed",{companion:!0,added:0,updated:0,removed:0,moved:1}),!0}reload(y){this.#ye(),this.#u++,this.#c++,this.#p=null,this.#D.clear(),this.#h.clear(),this.#nt(),this.#s.invalidate(),this.invalidate("filter"),this.#Qe("model:changed",{reason:"reload"})}destroy(){this.#ye(),this.#h.clear(),this.#D.clear(),this.#p=null,this.#$=[],this.#W=null,this.#q=null,this.#nt();for(const y of w)this.#l.set(y,{key:null,result:null,id:0,computed:!1})}#ye(){for(const{controller:y}of this.#y.values())try{y.abort()}catch{}this.#y.clear()}setRows(y){this.#n=y||[],this.#r=!1,this.#u++,this.#c++,this.#p=null,this.#D.clear(),this.#h.clear(),this.#nt(),this.#s.invalidate(),this.invalidate("filter")}notePriorRows(y){this.#o=y||null}releaseSource(){this.#r=!0,this.#n=[],this.#p=null,this.#h.clear(),this.#D.clear(),this.#s.invalidate()}data(){if(!this.#r)return this.#n;const y=this.#e.store;if(!y||!K(y.source))return this.#n;const T=y.physical||0,V=new Array(T);for(let q=0;q<T;q++)V[q]=y.live&&!y.live(q)?void 0:y.source(q);return V}#$e(){const y=this.#H("detail",null);return!y||!K(y.isOpen)||y.inline===!1?null:y}#be(){const y=(this.#e.config||{}).tree;return this.#z!==y&&(this.#z=y,this.#_=s(y,{dataAt:T=>this.#ue(T),keyOf:T=>this.#i.keyOf(this.#ue(T),T)})),this.#_}#pe(){return(this.#e.config||{}).grandTotalRow==="bottom"}grandTotalRow(){if(!this.#pe())return null;this.#I();const y=this.#m.grand;return y?this.#i.grandTotal(y,this.#et(this.#m.grandLeaves)):null}pivot(){return this.#I(),this.#he}pivotMatrix(){this.#I();const y=this.#m.groupLeaves,T=(this.#e.compute||{}).pivotMatrix;if(!K(T))return null;const V=this.#H("groupBy",[]),q=this.#H("pivotBy",[]);if(!V.length&&!q.length)return B("pivotView.no-dimension","pivotView is on but the grid has no pivot dimension, so there is no matrix to draw. Put a column on the pivot (its `pivot` setting, or `pivotBy` in the query) for the columns across the top, and group by a column for the rows down the side."),null;const Y=this.#Xe().map(ee=>({colId:ee.id,handle:this.#s.handle(ee.id),fn:O(ee,"group")})).filter(ee=>ee.handle&&ee.fn),J=this.#e.config||{};return T({rowHandles:V.map(ee=>this.#s.handle(ee)).filter(Boolean),columnHandles:q.map(ee=>this.#s.handle(ee)).filter(Boolean),measures:Y,leaves:y||new Uint32Array(0),opts:{locale:J.locale,separator:(J.pivot||{}).separator,maxColumns:(J.pivot||{}).maxColumns}})}keysForLeaves(y){const T=[];if(!y)return T;for(let V=0;V<y.length;V++){const q=this.#Ae(y[V]);q&&q.key!=null&&T.push(String(q.key))}return T}leavesOf(y){this.#I();const T=this.#l.get("group"),V=T&&T.result;if(!V||!V.nodes)return[];const q=V.nodes.get(y);if(!q)return[];const Y=[],J=ee=>{const ne=ee.row&&ee.row.children;if(ne&&ne.length){for(const ie of ne){const se=V.nodes.get(ie.key);se&&J(se)}return}if(ee.leaves)for(let ie=0;ie<ee.leaves.length;ie++)Y.push(this.#Ae(ee.leaves[ie]))};return J(q),Y}#we(y){return typeof y=="string"?y:this.#Ee(y)}#Ee(y){try{return this.#i.keyOf(y,-1)}catch{return"(unkeyed)"}}#me(y){if(typeof y=="string")return this.#se(y);if(this.#i.keyed){const V=this.#i.keyOf(y,-1),q=this.#se(V);if(q!==void 0)return q}if(this.#r)return;const T=this.#n.indexOf(y);return T>=0?T:void 0}#se(y){return this.#p||this.#Te(),this.#p.get(y)}#Te(){this.#p=new Map;const y=this.#Me(),T=this.#e.store,V=T&&K(T.live)?q=>T.live(q):null;for(let q=0;q<y;q++){if(V&&!V(q))continue;const Y=this.#ue(q);Y!==void 0&&this.#p.set(this.#i.keyOf(Y,q),q)}}#te(y,T){const V=[];for(const q of this.#K())this.#ze(q)&&this.#ne(q,y,T,new Set)&&V.push(q);return V}#ne(y,T,V,q){if(q.has(y))return!1;q.add(y);const Y=this.#ze(y);if(!Y)return!1;const J=Y.value&&Y.value.deps;return Array.isArray(J)&&J.length?J.some(ee=>this.#ne(String(ee),T,V,q)):K(Y.getValue)?!Object.is(Y.getValue(T),Y.getValue(V)):!1}#K(){const y=new Set;for(const V of this.#H("sort",[]))y.add(V.col);for(const V of this.#H("groupBy",[]))y.add(V);const T=V=>{if(V){if(Array.isArray(V.conditions)){V.conditions.forEach(T);return}V.col&&y.add(V.col)}};return T(this.#H("filters",null)),[...y]}#Z(y){if(!y.size)return!1;if(this.#H("quick",""))return!0;for(const T of this.#K())if(y.has(T))return!0;return!1}#I(){if(!this.#a){this.#a=!0;try{this.#Ne()}finally{this.#a=!1}}}pipelineRunning(){return this.#a}#Ne(){const y=this.#J("filter",()=>this.#G(),()=>this.#Oe()),T=this.#ee(y),V=this.#J("group",()=>this.#ge(),()=>this.#Ge(T)),q=this.#J("total",()=>this.#ve(),()=>this.#He(V));this.#J("pivot",()=>this.#k(),()=>this.#At(V)),this.#J("flatten",()=>this.#Se(),()=>this.#Ve(V)),this.#Ue(V,q)}#ee(y){const T=this.#l.get("sort"),V=this.#le();if(T.computed&&T.key===V&&!this.#y.has("sort"))return T.result;const q=this.#y.get("sort");return q&&q.key===V?T.result:T.result&&this.#Pe(y)?(this.#Ce(y,V),T.result):this.#J("sort",()=>V,()=>this.#Re(y))}#ae(){if(this.#b===null){const y=this.#e.pipelineWorker,T=K(y)?y():null;this.#b=T||!1}return this.#b||null}#ce(){const y=this.#H("sort",[]);if(!Array.isArray(y)||!y.length)return null;const T=(this.#e.config||{}).locale,V=[],q=[];for(const Y of y){const J=this.#ze(Y.col);if(J&&J.running)continue;if(J&&J.value&&K(J.value.compare))return null;const ee=this.#s.handle(Y.col);if(!ee)return null;V.push({col:Y.col,descending:Y.dir==="desc",nullsFirst:!!Y.nullsFirst,locale:T}),q.push(ee)}return V.length?{entries:V,handles:q,locale:T}:null}#Pe(y){if(this.#fe())return!1;const T=this.#ae();if(!T)return!1;const V=Number(T.threshold);return Number.isFinite(V)&&y.length<V?!1:!!this.#ce()}#Ce(y,T){const V=this.#ae(),q=V&&this.#ce();if(!q){this.#J("sort",()=>T,()=>this.#Re(y));return}const Y=new AbortController;this.#y.set("sort",{key:T,controller:Y});const J=q.entries.length===1?V.sortColumn(q.handles[0],y,{descending:q.entries[0].descending,nullsFirst:q.entries[0].nullsFirst,locale:q.locale,signal:Y.signal,key:"sort"}):V.sortMulti(q.handles,q.entries.map((ee,ne)=>({...ee,handle:q.handles[ne]})),y,{signal:Y.signal,key:"sort"});if(!C(J)){this.#y.delete("sort"),this.#J("sort",()=>T,()=>J);return}J.then(ee=>this.#Y(T,ee),ee=>this.#F("sort",T,ee))}#Y(y,T){const V=this.#y.get("sort");if(!(!V||V.key!==y)){if(this.#le()!==y){this.#y.delete("sort");return}this.#y.delete("sort"),this.#J("sort",()=>y,()=>T),this.#q=null,this.#I(),this.#Qe("model:changed",{reason:A[0]})}}#F(y,T,V){const q=this.#y.get(y);if(!(!q||q.key!==T)&&(this.#y.delete(y),!(V&&V.name==="AbortError")&&y==="sort"&&this.#le()===T)){const Y=this.#J("filter",()=>this.#G(),()=>this.#Oe());this.#J("sort",()=>T,()=>this.#Re(Y)),this.#q=null,this.#I(),B("source.pipeline.sort","off-thread sort failed; recomputed on the main thread.",V),this.#Qe("model:changed",{reason:A[1]})}}#Ue(y,T){const V=y&&y.leaves?y.leaves.length:this.#m.slots.length;this.#m.matchCount=V,this.#m.grand=T&&T.grand||null,this.#m.grandLeaves=y&&y.leaves?y.leaves.length:0,this.#m.groupLeaves=y&&y.leaves?y.leaves:null}#J(y,T,V){const q=this.#l.get(y),Y=T();return q.computed&&q.key===Y||(q.result=V(),q.key=Y,q.computed=!0,q.id++,y==="flatten"&&(this.#q=null)),q.result}#R(y){return this.#l.get(y).id}#G(){const y=(this.#e.config||{}).hostFilter,T=y&&K(y.active)&&y.active()?1:0,V=this.#H("where",null),q=V?V.version:0,Y=this.#gt("filter.sig",`${this.#ct()}`,()=>c({filters:this.#H("filters",null),quick:this.#H("quick",""),quickMode:this.#H("quickMode","contains")}));return`${this.#c}|${Y}|${T}|${q}`}#le(){const y=this.#fe();return`${this.#R("filter")}|${JSON.stringify(this.#H("sort",[]))}`+(y?`|manual:${y.version}`:"")}#fe(){const y=this.#H("rowOrder",null);return y&&Array.isArray(y.keys)?y:null}#oe(y,T){this.#p||this.#Te();const V=this.#p,q=this.#Me(),Y=T.keys.length,J=new Float64Array(q);for(let ee=0;ee<q;ee++)J[ee]=Y+ee;for(let ee=0;ee<Y;ee++){const ne=V.get(T.keys[ee]);ne!==void 0&&(J[ne]=ee)}return Uint32Array.from(y).sort((ee,ne)=>J[ee]-J[ne])}orderedKeys(){this.#p||this.#Te();const y=this.#p,T=new Map;for(const[ee,ne]of y)T.set(ne,ee);const V=Uint32Array.from([...T.keys()]).sort(),q=this.#fe(),Y=q?this.#oe(V,q):this.#Re(V),J=new Array(Y.length);for(let ee=0;ee<Y.length;ee++)J[ee]=T.get(Y[ee]);return J}#ge(){const y=this.#H("pivotBy",[]).length>0?"p":"u";return`${this.#R("sort")}|${JSON.stringify(this.#H("groupBy",[]))}|${y}`}#ve(){const y=this.#qe()?"f":"a",T=(this.#e.config||{}).totalOnlyChangedColumns?"n":"w";return`${this.#R("group")}|${JSON.stringify(this.#H("totals",[]))}|${y}${T}|${this.#u}`}#k(){return`${this.#R("group")}|${JSON.stringify(this.#H("pivotBy",[]))}`}#Se(){const T=this.#We()||!this.#pe()?this.#R("total"):"x",V=`${this.#ct()}`,q=this.#gt("flatten.keys",V,()=>{const J=this.#H("expanded",null);return J?[...J].sort().join(""):"*"}),Y=this.#gt("flatten.detail",V,()=>{const J=this.#H("detail",null);return J&&K(J.signature)?J.signature():""});return`${T}|${this.#R("pivot")}|${q}|${Y}`}#We(){const y=this.#H("groupBy",[]);return Array.isArray(y)&&y.length>0}stageState(){const y=[];for(const[T,V]of this.#l){const q=V.result;y.push({stage:T,materialised:!!V.computed,bytes:q&&typeof q.byteLength=="number"?q.byteLength:null,rows:q&&typeof q.length=="number"?q.length:null,rebuilds:V.id})}return y}facetIndices(y){return this.#Oe(y||null)}facetRows(y){const T=this.facetIndices(y),V=[];for(let q=0;q<T.length;q++){const Y=this.#Ae(T[q]);Y&&V.push(Y)}return V}invalidateRows(){this.#h.clear(),this.#D.clear(),this.#q=null}invalidateHandles(){this.#s.invalidate()}rows(){return this.#n}unfilteredIndices(){return this.#de()}filteredIndices(){const y=this.#l.get("filter");if(y&&y.computed&&y.key===this.#G())return y.result||this.#de();this.#I();const T=this.#l.get("filter");return(T&&T.computed?T.result:null)||this.#de()}unfilteredRows(){const y=this.#de(),T=[];for(let V=0;V<y.length;V++){const q=this.#Ae(y[V]);q&&T.push(q)}return T}#Oe(y=null){const T=this.#de(),V=this.#H("filters",null),q=y?this.#ot("pruneColumn")(V,y):V,Y=this.#it(q),J=String(this.#H("quick","")||"").trim().toLowerCase(),ee=J?I(J,String(this.#H("quickMode","contains")||"contains")):null,ne=(this.#e.config||{}).hostFilter,ie=!!(ne&&K(ne.active)&&ne.active()),se=this.#H("where",null),we=!!(se&&se.active);if(!Y&&!J&&!ie&&!we)return T;let he=null;Y&&(he=this.#ot("evaluateFilters")(Y,{handle:be=>this.#s.handle(be),count:this.#Me(),pool:this.#e.pool,locale:(this.#e.config||{}).locale,itemwise:be=>F(this.#ze(be))}));const te=new Uint32Array(T.length);let ae=0;for(let ge=0;ge<T.length;ge++){const be=T[ge];if(!(he&&!he[be])&&!(ee&&!this.#ut(be,ee))){if(ie||we){const je=this.#Ae(be);if(ie&&!ne.passes(je)||we&&!se.passes(je.data,je.key))continue}te[ae++]=be}}if(he){const ge=(this.#e.compute||{}).releaseMask;K(ge)&&ge({pool:this.#e.pool},he)}return te.subarray(0,ae)}handleFor(y){return this.#s.handle(y)}#Re(y){const T=this.#fe();if(T)return this.#oe(y,T);const V=this.#H("sort",[]).filter(J=>{const ee=this.#ze(J.col);return!ee||!ee.running?!0:(B(`source.sort.running.${J.col}`,`sort ignores "${J.col}": a running total is a function of the sort order, so it cannot also decide it. Sort by the column it runs over instead.`),!1)});if(!V.length)return y;const q=(this.#e.config||{}).locale;if(V.length===1){const J=V[0],ee=this.#s.handle(J.col);if(!ee)return B(`source.sort.${J.col}`,`sort ignores unknown column "${J.col}".`),y;const ne=this.#ze(J.col);return this.#ot("sortColumn")(ee,y,{descending:J.dir==="desc",nullsFirst:J.nullsFirst,locale:q,compare:j(ne)})}const Y=[];for(const J of V){const ee=this.#s.handle(J.col);if(!ee){B(`source.sort.${J.col}`,`sort ignores unknown column "${J.col}".`);continue}Y.push({handle:ee,descending:J.dir==="desc",nullsFirst:J.nullsFirst,locale:q,compare:j(this.#ze(J.col))})}return Y.length?this.#ot("sortMulti")(Y.map(J=>J.handle),Y,y):y}#Ge(y){const T=this.#H("groupBy",[]),V=this.#be();if(V&&!T.length){const ge=h(y,V);return this.#x=p(ge.roots,V.declaresChildren),{roots:null,leaves:y,nodes:new Map,tree:ge}}if(this.#x=null,V&&T.length&&B("tree.grouped","grouping is active on a grid configured with `tree`; the grouping wins and the hierarchy is not shown."),!T.length)return{roots:null,leaves:y,nodes:new Map};const q=(this.#e.config||{}).timeZone,Y=[],J=[];let ee=!1;for(const ge of T){const be=this.#s.handle(ge);if(!be){B(`source.group.${ge}`,`grouping ignores unknown column "${ge}".`);continue}Y.push(be);const je=this.#ze(ge),xe=je&&je.dataType;if(xe&&K(xe.groupProjector)){const Ce=je.typeOptions&&je.typeOptions.timeZone||q||void 0,ke=xe.groupProjector(je,Ce);J.push(ke||null),ke&&(ee=!0)}else J.push(null)}if(!Y.length)return{roots:null,leaves:y,nodes:new Map};const{keys:ne,buckets:ie}=this.#ot("groupByColumns")(Y,y,{locale:(this.#e.config||{}).locale,project:ee?J:void 0}),se=this.#H("pivotBy",[]).length>0,we=[],he=new Map;for(let ge=0;ge<ie.length;ge++){const be=ne[ge];let je=null;const xe=[];for(let Ce=0;Ce<be.length;Ce++){xe.push(v(be[Ce]));const ke=z(xe),ye=Ce===be.length-1;let ve=he.get(ke);if(!ve){const Se=this.#i.group({path:[...xe],column:T[Ce],value:be[Ce],level:Ce,parent:je,expanded:se&&ye?!1:this.#pt(ke,{key:ke,column:T[Ce],value:be[Ce],level:Ce,path:[...xe]}),hasChildren:!(se&&ye)});ve={row:Se,leaves:null},he.set(ke,ve),je?je.children.push(Se):we.push(Se)}ve.row.leafCount+=ie[ge].length,Ce===be.length-1&&(ve.leaves=ie[ge]),je=ve.row}}const te=this.#H("sort",[])||[],ae=(ge,be)=>{if(!ge||ge.length<2){if(ge)for(const ke of ge)ae(ke.children,be+1);return}const je=T[be],xe=te.find(ke=>ke.col===je),Ce=xe&&xe.dir==="desc"?-1:1;ge.sort((ke,ye)=>Ce*Q(ke.groupValue,ye.groupValue));for(const ke of ge)ae(ke.children,be+1)};return ae(we,0),{roots:we,leaves:y,nodes:he,keys:ne,buckets:ie}}#Ze(y,T){const V=new Map,q=new Map,Y=J=>{const ee=J.physical>=0?[J.physical]:[];for(const ne of J.children)ee.push(...Y(ne));if(J.children.length){const ne=this.#rt(T,Uint32Array.from(ee),null);J.physical>=0?V.set(J.physical,ne):q.set(J.key,ne)}return ee};for(const J of y.roots)Y(J);return{byPhysical:V,byKey:q}}#He(y){const T=this.#Xe();if(!T.length)return this.#M=null,this.#E=null,{grand:null};const V={id:this.#R("group"),columns:T.map(te=>te.id).join("")},q=this.#M&&this.#M.id===V.id&&this.#M.columns===V.columns,Y=this.#Ke()&&q?this.#P:null,J=Y?T.filter(te=>Y.has(te.id)):T,ee=q?this.#E:null,ne=this.#qe()?null:this.#tt(),ie=this.#ke(T),se=te=>{const ae=y.nodes.get(te.key);let ge=ae&&ae.leaves?ae.leaves:null;if(te.children&&te.children.length){const xe=te.children.map(se);let Ce=0;for(const ve of xe)Ce+=ve.length;const ke=new Uint32Array(Ce);let ye=0;for(const ve of xe)ke.set(ve,ye),ye+=ve.length;ge=ke}ge=ge||new Uint32Array(0);const be=ne?ne.get(te.key)||M:ge,je=this.#at(te,Y?J:T,be,ie);return te.totals=Y?{...te.totals,...je}:je,ge};if(y.roots&&J.length)for(const te of y.roots)se(te);if(this.#B=y.tree?this.#Ze(y.tree,T):null,this.#M=V,this.#P=this.#Ke()?new Set:null,!(this.#e.config||{}).grandTotalRow)return this.#S.length=0,this.#E=null,{grand:null};const he=ne?this.#Ye():y.leaves;return this.#E=this.#_e(T,he,Y,ee),{grand:this.#E}}#_e(y,T,V,q){const Y={},J=this.#R("group");J!==this.#w&&(this.#Ot(),this.#w=J);const ee=this.#S;this.#S=[];for(const ne of y){if(!x(ne))continue;const ie=this.#s.handle(ne.id);if(!ie)continue;const se=O(ne,"grand");if(!t(se,ie)){if(V&&!V.has(ne.id)&&q&&ne.id in q){Y[ne.id]=q[ne.id];continue}Y[ne.id]=this.#rt([ne],T,null,"grand")[ne.id];continue}let we=this.#A.get(ne.id);if((!we||we.fn!==se)&&(we=new r(se),this.#A.set(ne.id,we)),we.valid){let he=!0;for(const te of ee)if(te.colId===ne.id&&!we.update(te.before,te.after)){he=!1;break}if(he){Y[ne.id]=we.value();continue}we.invalidate()}we.seedColumn(ie.values,o(ie),T),Y[ne.id]=we.valid?we.value():this.#rt([ne],T,null,"grand")[ne.id]}return Y}#ke(y){const T=this.#R("group");T!==this.#C&&(this.#v.clear(),this.#C=T);const V=new Map;for(const Y of y){if(!x(Y))continue;const J=this.#s.handle(Y.id),ee=O(Y,"group");t(ee,J)&&V.set(Y.id,{fn:ee})}if(!V.size)return this.#O.length=0,V;const q=this.#O;this.#O=[];for(const Y of q){const{beforeKeys:J,afterKeys:ee,colDeltas:ne}=Y,ie=J.length?new Set(J):null,se=ee.length?new Set(ee):null;for(const{colId:we,before:he,after:te}of ne)if(V.has(we)){for(const ae of J)se&&se.has(ae)||this.#xe(ae,we,he,null);for(const ae of ee)ie&&ie.has(ae)||this.#xe(ae,we,null,te);for(const ae of J)se&&!se.has(ae)||this.#xe(ae,we,he,te)}}return V}#xe(y,T,V,q){const Y=this.#v.get(y),J=Y&&Y.get(T);!J||!J.valid||J.update(V,q)||J.invalidate()}#at(y,T,V,q){if(!q||!q.size)return this.#rt(T,V,y);const Y={};let J=null,ee=this.#v.get(y.key);for(const ne of T){const ie=q.get(ne.id);if(!ie){(J||(J=[])).push(ne);continue}const se=this.#s.handle(ne.id);if(!se)continue;ee||(ee=new Map,this.#v.set(y.key,ee));let we=ee.get(ne.id);if((!we||we.fn!==ie.fn)&&(we=new r(ie.fn),ee.set(ne.id,we)),we.valid||we.seedColumn(se.values,o(se),V),we.valid){Y[ne.id]=we.value();continue}(J||(J=[])).push(ne)}return J&&Object.assign(Y,this.#rt(J,V,y)),Y}#Tt(y,T,V,q){const Y=!this.#qe()||this.#St(T);for(const J of y){const ee=J.getValue;if(!K(ee))continue;const ne=ee(V),ie=ee(q);Object.is(ne,ie)||(this.#P&&this.#P.add(J.id),Y&&this.#A.has(J.id)&&this.#S.push({colId:J.id,before:ne,after:ie}))}}#kt(){const y=this.#H("groupBy",[]),T=[];for(const V of y){const q=this.#ze(V);q&&T.push(q)}return T}#re(y,T){const V=new Array(y.length);for(let q=0;q<y.length;q++){const Y=y[q].getValue;V[q]=v(K(Y)?Y(T):void 0)}return V}#lt(y,T,V,q,Y){if(this.#qe()&&!this.#St(V))return;const J=S(this.#re(y,q)),ee=S(this.#re(y,Y)),ne=J.length!==ee.length||J.some((se,we)=>se!==ee[we]),ie=[];for(const se of T){const we=se.getValue;if(!K(we))continue;const he=we(q),te=we(Y);!ne&&Object.is(he,te)||ie.push({colId:se.id,before:he,after:te})}!ie.length&&!ne||this.#O.push({beforeKeys:J,afterKeys:ee,colDeltas:ie})}#St(y){const T=this.#l.get("filter"),V=T&&T.computed?T.result:null;if(!V)return!0;let q=0,Y=V.length-1;for(;q<=Y;){const J=q+Y>>1,ee=V[J];if(ee===y)return!0;ee<y?q=J+1:Y=J-1}return!1}#qe(){return(this.#e.config||{}).totalFilteredOnly!==!1}#et(y){return this.#qe()?y:this.#Ye().length}#Ye(){return(!this.#T||this.#T.version!==this.#c)&&(this.#T={version:this.#c,indices:this.#de()}),this.#T.indices}#tt(){const y=this.#H("groupBy",[]),T=`${this.#c}|${JSON.stringify(y)}`;if(this.#N&&this.#N.key===T)return this.#N.map;const V=new Map,q=[];for(const Y of y){const J=this.#s.handle(Y);J&&q.push(J)}if(q.length){const Y=this.#Ye(),{keys:J,buckets:ee}=this.#ot("groupByColumns")(q,Y,{locale:(this.#e.config||{}).locale}),ne=new Map;for(let ie=0;ie<ee.length;ie++){const se=J[ie],we=[];for(let he=0;he<se.length;he++){we.push(v(se[he]));const te=z(we);let ae=ne.get(te);ae||(ae=[],ne.set(te,ae));for(let ge=0;ge<ee[ie].length;ge++)ae.push(ee[ie][ge])}}for(const[ie,se]of ne)V.set(ie,Uint32Array.from(se))}return this.#N={key:T,map:V},V}#Ke(){return!!(this.#e.config||{}).totalOnlyChangedColumns}#nt(){this.#Ot(),this.#j(),this.#P=null,this.#M=null,this.#E=null}#Ot(){this.#A.clear(),this.#S.length=0,this.#w=-1}#j(){this.#v.clear(),this.#O.length=0,this.#C=-1}#At(y){const T=this.#H("pivotBy",[]);if(!T.length)return this.#he=null,null;const V=(this.#e.compute||{}).pivot;if(!K(V))return B("source.pivot.kernel","pivot requested but ctx.compute.pivot is not available; showing unpivoted rows."),this.#he=null,null;const q=T.map(J=>this.#s.handle(J)).filter(Boolean),Y=this.#Xe();return this.#he=V(q,y.leaves,{groups:y.keys&&y.buckets?{keys:y.keys,buckets:y.buckets}:null,totals:Y.map(J=>J.id),handle:J=>this.#s.handle(J),totalOf:J=>O(Y.find(ee=>ee.id===J),"group"),separator:((this.#e.config||{}).pivot||{}).separator,maxColumns:((this.#e.config||{}).pivot||{}).maxColumns})||null,this.#he}#Ve(y){const T=this.#l.get("total").result,V=!!(this.#e.config||{}).groupFooter,q=this.#$e();if(y.tree)return this.#jt(y,T,q);if(!y.roots&&!q){if(T&&T.grand&&!this.#pe()){const se=this.#i.grandTotal(T.grand,this.#et(y.leaves.length));if(this.#W===y.leaves&&Array.isArray(this.#$))this.#$[this.#$.length-1]=se;else{const we=Array.from(y.leaves);we.push(se),this.#$=we,this.#W=y.leaves}this.#U=[{at:this.#$.length-1}]}else this.#W=null,this.#$=y.leaves,this.#U=b;return this.#V=b,this.#$}const Y=[],J=[],ee=[],ne=se=>{if(Y.push(se),!q)return;const we=this.#Ae(se);!we||!q.isOpen(we.key)||(we.master=!0,we.expanded=!0,ee.push({at:Y.length}),Y.push(this.#i.detail(we,q.heightOf(we))))};if(!y.roots){for(let se=0;se<y.leaves.length;se++)ne(y.leaves[se]);return T&&T.grand&&!this.#pe()&&(ee.push({at:Y.length}),Y.push(this.#i.grandTotal(T.grand,this.#et(y.leaves.length)))),this.#W=null,this.#V=b,this.#U=ee.length?ee:b,this.#$=Y,Y}const ie=(se,we,he)=>{if(se.expanded=se.hasChildren===!1?!1:this.#pt(se.key,{key:se.key,column:se.groupColumn,value:se.groupValue,level:se.level,path:se.groupPath}),se.posinset=we+1,se.setsize=he,J.push({at:Y.length,row:se}),ee.push({at:Y.length}),Y.push(se),!!se.expanded){if(se.children&&se.children.length)for(let te=0;te<se.children.length;te++)ie(se.children[te],te,se.children.length);else{const te=y.nodes.get(se.key),ae=te&&te.leaves?te.leaves:null;if(ae)for(let ge=0;ge<ae.length;ge++)ne(ae[ge])}V&&se.totals&&(ee.push({at:Y.length}),Y.push(this.#i.footer(se)))}};for(let se=0;se<y.roots.length;se++)ie(y.roots[se],se,y.roots.length);return T&&T.grand&&!this.#pe()&&(ee.push({at:Y.length}),Y.push(this.#i.grandTotal(T.grand,this.#et(y.leaves.length)))),this.#V=J,this.#U=ee,this.#$=Y,Y}#de(){const y=this.#e.store;if(y&&K(y.liveIndices))return y.liveIndices();const T=new Uint32Array(this.#n.length);let V=0;for(let q=0;q<this.#n.length;q++)this.#n[q]!==void 0&&(T[V++]=q);return T.subarray(0,V)}#Me(){const y=this.#e.store;return y&&typeof y.physical=="number"?y.physical:this.#n.length}#ue(y){const T=this.#e.store;return T&&K(T.source)?T.source(y):this.#n[y]}#Le(y,T=y){const V=this.#$[y];if(typeof V!="number")return V.index=T,V;const q=this.#Ae(V);return q.index=T,q}#Ae(y){let T=this.#h.get(y);T||(T=this.#i.leaf(this.#ue(y),y),this.#h.set(y,T));const V=this.#x?this.#x.get(y):null;if(V){T.level=V.level,T.posinset=V.posinset,T.setsize=V.setsize,T.hasChildren=V.hasChildren,T.expanded=V.hasChildren&&!V.lazy&&this.#pt(T.key);const q=this.#B?this.#B.byPhysical.get(y):void 0;q?T.totals=q:T.totals&&(T.totals=null)}else T.hasChildren&&(T.level=0,T.hasChildren=!1,T.expanded=!1,T.posinset=void 0,T.setsize=void 0);return T}#jt(y,T,V){const q=[],Y=[],J=ne=>{if(ne.leafCount!==void 0)return ne.leafCount;let ie=ne.physical>=0?1:0;for(const se of ne.children)ie+=J(se);return ne.leafCount=ie,ie},ee=ne=>{const ie=this.#pt(ne.key);if(ne.physical>=0){if(q.push(ne.physical),V&&V.isOpen(this.#Ae(ne.physical).key)){const se=this.#Ae(ne.physical);Y.push({at:q.length}),q.push(this.#i.detail(se,V.heightOf(se)))}}else q.push(this.#i.group({path:[ne.key],column:null,value:ne.value,level:ne.level,parent:null,expanded:ie,hasChildren:ne.children.length>0,leafCount:J(ne),totals:this.#B?this.#B.byKey.get(ne.key):void 0}));if(ie)for(const se of ne.children)ee(se)};for(const ne of y.tree.roots)ee(ne);return T&&T.grand&&!this.#pe()&&(Y.push({at:q.length}),q.push(this.#i.grandTotal(T.grand,this.#et(y.leaves.length)))),this.#W=null,this.#V=b,this.#U=Y.length?Y:b,this.#$=q,q}#Mt(){return g(()=>this.count(),y=>this.at(y))}#ut(y,T){let V=this.#D.get(y);if(V===void 0){const q=this.#ue(y),Y=this.#st(),J=[],ee=this.#e.columnHidden;for(const ne of Y){if(ne.quickFilter===!1||K(ee)&&ee(ne.id))continue;const ie=ne.value&&K(ne.value.quickFilterText)?ne.value.quickFilterText({value:void 0,data:q,row:null,column:ne,colId:ne.id,grid:null,context:this.#H("context",null)}):null,se=ie??(K(ne.formatValue)?ne.formatValue(K(ne.getValue)?ne.getValue(q):void 0):"");se!=null&&se!==""&&J.push(String(se))}V=J.join(" ").toLowerCase(),this.#D.set(y,V)}return T(V)}#Xe(){const y=this.#H("totals",[]),T=y&&y.length?new Set(y):null;return this.#st().filter(V=>T?T.has(V.id):!!(V.total||V.groupTotal||V.grandTotal))}#rt(y,T,V,q="group"){const Y={},J=(this.#e.compute||{}).total;for(const ee of y){if(!x(ee))continue;const ne=this.#s.handle(ee.id);if(!ne)continue;const ie=O(ee,q);if(ie)if(K(ie)){const se=new Array(T.length);for(let we=0;we<T.length;we++)se[we]=ne.get(T[we]);Y[ee.id]=ie(se,{row:V,column:ee,grid:this.#e.grid||null,context:this.#H("context",null),valueAt:(we,he)=>{const te=this.#s.handle(we);return te&&he>=0&&he<T.length?te.get(T[he]):null}})}else K(J)&&(Y[ee.id]=J(ne,T,ie))}return Y}#it(y){if(!y)return y;const T=this.#e.config||{},V={tz:T.timeZone,weekStartsOn:T.weekStartsOn};return i(y,q=>{const Y=m(q,V),J=this.#ze(Y&&Y.col),ee=J&&J.type==="datetime";if(Y&&Y.type)return Y.type==="datetime"&&!Y.timeZone&&J?{...Y,timeZone:T.timeZone||void 0}:Y;if(ee)return{...Y,type:"datetime",timeZone:T.timeZone||void 0};const ne=J&&(J.dataType?.base||J.type);return ne?{...Y,type:ne}:Y})}#pt(y,T){const V=this.#H("expanded",null);return V?K(V.has)?V.has(y,T):Array.prototype.includes.call(V,y):!0}#H(y,T){if(y==="context"||!K(this.#e.stateVersion))return this.#Nt(y,T);const V=this.#mt(y),q=this.#d.get(y);if(q&&q.version===V)return q.value;const Y=this.#Nt(y,T);return this.#d.set(y,{version:V,value:Y}),Y}#Nt(y,T){const V=this.#e.state;if(V&&K(V[y])){const q=V[y]();return q??T}return T}#ct(){const y=this.#e.stateVersion;return K(y)?y():0}#Dt(){const y=this.#e.columnsVersion,T=this.#e.permissionsVersion;return`${K(y)?y():0}|${K(T)?T():0}`}#mt(y){return y==="totals"?this.#Dt():`${this.#ct()}`}#gt(y,T,V){if(!K(this.#e.stateVersion))return V();const q=this.#f.get(y);if(q&&q.version===T)return q.key;const Y=V();return this.#f.set(y,{version:T,key:Y}),Y}#ot(y){const T=(this.#e.compute||{})[y];return K(T)||D(`ctx.compute.${y} is required by the memory source pipeline`),T}#st(){const y=this.#e.columns;return y&&K(y.all)?y.all():[]}#ze(y){const T=this.#e.columns;return T&&K(T.get)?T.get(y):void 0}#Qe(y,T){const V=this.#e.emit;K(V)&&V(y,T)}}}),$e("packages/core/src/source/abort.js",function(e,W){"use strict";Object.defineProperty(e,"SupersededError",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"RequestToken",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"AbortScope",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"createAbortScope",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"isAbortError",{enumerable:!0,get:function(){return K}});class Z extends Error{constructor(G,H="superseded"){super(`[lattice] request ${G?`"${G}" `:""}${H}`),this.name="SupersededError",this.superseded=!0,this.key=G}}class ${#e;constructor(G,H,_,z){this.#e=G,this.key=H,this.controller=_,this.signal=_.signal,this.seq=z}get current(){return!this.signal.aborted&&this.#e.tokenFor(this.key)===this}settle(){this.#e.settle(this)}abort(G){this.signal.aborted||this.controller.abort(new Z(this.key,G)),this.#e.settle(this)}}class B{#e=new Map;#t=0;begin(G="",H="superseded"){const _=this.#e.get(G);_&&!_.signal.aborted&&_.controller.abort(new Z(G,H));const z=new $(this,G,new AbortController,++this.#t);return this.#e.set(G,z),z}tokenFor(G){return this.#e.get(G)}pending(G=""){const H=this.#e.get(G);return!!H&&!H.signal.aborted}get size(){return this.#e.size}settle(G){this.#e.get(G.key)===G&&this.#e.delete(G.key)}abort(G="",H="superseded"){const _=this.#e.get(G);_&&_.abort(H)}abortAll(G="superseded"){for(const H of[...this.#e.values()])H.abort(G);this.#e.clear()}}function D(){return new B}function K(Q){if(!Q||typeof Q!="object")return!1;const G=Q;return G.superseded===!0||G.name==="AbortError"||G.name==="SupersededError"}}),$e("packages/core/src/source/blockcache.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_PAGE_SIZE",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"DEFAULT_MAX_CACHED_PAGES",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"BlockCache",{enumerable:!0,get:function(){return D}});const Z=100,$=32;class B{constructor(Q){this.id=Q,this.rows=null,this.state="pending",this.token=null,this.error=null}}class D{#e=new Map;#t;#n;#r=0;#o=-1;constructor(Q={}){this.#t=Math.max(1,Math.floor(Number(Q.pageSize)||Z)),this.#n=Math.max(1,Math.floor(Number(Q.maxCachedPages)||$))}get pageSize(){return this.#t}get maxBlocks(){return this.#n}get size(){return this.#e.size}blockOf(Q){return Math.floor(Q/this.#t)}rangeOf(Q){return{start:Q*this.#t,end:(Q+1)*this.#t}}has(Q){return this.#e.has(Q)}pending(Q){const G=this.#e.get(Q);return!!G&&G.state==="pending"}loaded(Q){const G=this.#e.get(Q);return!!G&&G.state==="loaded"}begin(Q,G){let H=this.#e.get(Q);return H||(H=new B(Q)),H.state="pending",H.token=G,H.error=null,this.#i(Q,H),H}fill(Q,G){const H=this.#e.get(Q)||new B(Q);H.rows=G,H.state="loaded",H.token=null,this.#i(Q,H)}failed(Q,G){const H=this.#e.get(Q)||new B(Q);H.state="error",H.error=G,H.token=null,this.#i(Q,H)}delete(Q){return this.#e.delete(Q)}rowAt(Q){const G=this.blockOf(Q),H=this.#e.get(G);if(!(!H||H.state!=="loaded"||!H.rows))return this.#i(G,H),H.rows[Q-G*this.#t]}rowLoaded(Q){const G=this.blockOf(Q),H=this.#e.get(G);return!!H&&H.state==="loaded"&&!!H.rows&&Q-G*this.#t<H.rows.length}erroredAt(Q){const G=this.#e.get(this.blockOf(Q));return!!G&&G.state==="error"}loadedExtent(){let Q=0;for(const G of this.#e.values()){if(G.state!=="loaded"||!G.rows)continue;const H=G.id*this.#t+G.rows.length;H>Q&&(Q=H)}return Q}fillOf(Q){const G=this.#e.get(Q);return G&&G.state==="loaded"&&G.rows?G.rows.length:null}protect(Q,G){this.#r=this.blockOf(Math.max(0,Q)),this.#o=this.blockOf(Math.max(0,G))}evict(){const Q=[];if(this.#e.size<=this.#n)return Q;for(const[G,H]of this.#e){if(this.#e.size-Q.length<=this.#n)break;G>=this.#r&&G<=this.#o||H.state!=="pending"&&Q.push(G)}for(const G of Q)this.#e.delete(G);return Q}ids(){return[...this.#e.keys()]}clear(){this.#e.clear()}#i(Q,G){this.#e.delete(Q),this.#e.set(Q,G)}}}),$e("packages/core/src/source/pagewindow.js",function(e,W){"use strict";Object.defineProperty(e,"pageWindow",{enumerable:!0,get:function(){return Z}});function Z($,B,D,K){const Q=Math.floor(Number($)||0);if(Q<=0)return null;const G=Math.max(0,Math.floor(Number(B)||0)),H=Math.max(0,Math.floor(Number(D)||0));if(K){const _=Math.max(1,Math.ceil(H/Q)),z=Math.min(G,_-1),v=z*Q;return{page:z,pageSize:Q,offset:v,length:Math.max(0,Math.min(Q,H-v)),pageCount:_,total:H}}return{page:G,pageSize:Q,offset:G*Q,length:Q,pageCount:Math.max(G+2,Math.ceil(H/Q)),total:null}}}),$e("packages/core/src/source/paged.js",function(e,W){"use strict";Object.defineProperty(e,"HINT_SETTLE_MS",{enumerable:!0,get:function(){return l}}),Object.defineProperty(e,"createPagedSource",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"PagedSource",{enumerable:!0,get:function(){return i}});const Z=W("packages/core/src/internal/util.js"),$=Z.Lru,B=Z.isFunction,D=Z.warnOnce,K=Z.settleDebounce,Q=W("packages/core/src/source/abort.js"),G=Q.createAbortScope,H=Q.isAbortError,_=W("packages/core/src/source/blockcache.js"),z=_.BlockCache,v=_.DEFAULT_PAGE_SIZE,S=_.DEFAULT_MAX_CACHED_PAGES,u=W("packages/core/src/source/rows.js").createRowFactory,f=W("packages/core/src/source/filterwire.js"),a=f.wireFilters,r=f.querySignature,t=f.warnHostFilterNotApplied,o=W("packages/core/src/source/pagewindow.js").pageWindow,l=120;function c(m,d){return new i(m,d)}class i{mode="paged";#e;#t;#n;#r=G();#o;#i;#s=new Map;#l=null;#a=null;#u=!1;#c=0;#d="";#f={start:0,end:0};#h;#p=!1;#m=0;#g="";constructor(d,h){this.#e=d||{mode:"paged"},this.#t=h||{},this.#n=new z({pageSize:this.#e.pageSize||v,maxCachedPages:this.#e.maxCachedPages||S}),this.#o=u(this.#t),this.#i=new $(this.#n.pageSize*4),this.#h=K((s,p)=>this.#w(s,p),l),this.#d=this.#P(),B(this.#e.fetch)||D("source.paged.fetch",'source.mode "paged" requires a fetch function; the grid will stay empty.'),t(this.#t)}count(){const d=this.#b();return d?d.length:this.#y()}#y(){if(this.#C(),this.#l!==null)return this.#l;const d=Math.max(this.#c,this.#n.loadedExtent());return this.#u?d:d+this.#n.pageSize}matchCount(){return this.#y()}totalCount(){return this.#y()}pageInfo(){const d=this.#b();if(!d){const h=this.#y();return{page:0,pageSize:0,total:this.exact()?h:null,pageCount:1,counting:!1}}return{page:d.page,pageSize:d.pageSize,total:d.total,pageCount:d.pageCount,counting:d.total===null&&this.#r.size>0&&this.#c===0&&this.#n.loadedExtent()===0}}#b(){const d=this.#y(),h=o(this.#E("pageSize",0),this.#E("page",0),d,this.exact());if(!h)return this.#g="",null;const s=`${this.#m}:${h.offset}:${h.length}`;if(s!==this.#g&&!this.#p&&(this.#g=s,h.length>0)){const p=h.offset+h.length-1;this.#f={start:h.offset,end:p},this.#w(h.offset,p)}return h}at(d){const h=this.#b();if(h){if(d<0||d>=h.length)return;const s=this.#A(h.offset+d);return s&&(s.index=d),s}return this.#A(d)}#A(d){if(d<0||d>=this.#y())return;const h=this.#i.get(d);if(h&&(h.data!==null||!this.#n.rowLoaded(d)))return h;const s=this.#n.rowAt(d);if(s===void 0){const w=this.#o.skeleton(d,0,this.#n.erroredAt(d));return this.#i.set(d,w),w}const p=this.#o.leaf(s,d);return p.index=d,this.#i.set(d,p),this.#s.set(p.key,d),p}byKey(d){const h=this.#s.get(d);return h===void 0?void 0:this.#A(h)}loaded(d){const h=this.#b();return h?d>=0&&d<h.length&&this.#n.rowLoaded(h.offset+d):this.#n.rowLoaded(d)}loadedCount(){this.#C();let d=0;for(const h of this.#n.ids()){if(!this.#n.loaded(h))continue;const s=this.#n.fillOf(h);typeof s=="number"&&(d+=s)}return d}residentRows(){this.#C();const d=this.#b(),h=d?d.offset:0,s=d?d.offset+d.length:1/0,p=[],w=this.#n.ids().sort((A,P)=>A-P);for(const A of w){if(!this.#n.loaded(A))continue;const{start:P}=this.#n.rangeOf(A),b=this.#n.fillOf(A)||0;for(let O=P;O<P+b;O++){if(O<h||O>=s)continue;const x=this.#i.peek(O);if(x&&x.data!==null&&x.data!==void 0){p.push(x);continue}const j=this.#n.rowAt(O);if(j===void 0)continue;const F=this.#o.leaf(j,O);F.index=O,this.#i.set(O,F),this.#s.set(F.key,O),p.push(F)}}return p}hint(d,h){if(this.#p)return;const s=this.#C();let p=Math.max(0,Math.floor(d)),w=Math.max(p,Math.floor(h));const A=this.#b();if(A){if(A.length===0)return;p=A.offset,w=A.offset+A.length-1}this.#f={start:p,end:w},this.#n.protect(p,w);for(const P of this.#n.evict())this.#v(P);this.#h(p,w),s&&this.#h.flush()}#w(d,h){if(this.#p)return;this.#n.protect(d,h);const s=this.#n.blockOf(d),p=this.#n.blockOf(h);for(let w=s;w<=p&&!(this.#l!==null&&w*this.#n.pageSize>=this.#l);w++)this.#n.has(w)||this.#S(w)}apply(d){const h={added:[],updated:[],removed:[]};if(!d)return h;if(d.update)for(const s of d.update){const p=this.#o.keyOf(s,-1),w=this.#s.get(p);if(w===void 0)continue;const A=this.#o.leaf(s,w);A.index=w,this.#i.set(w,A),h.updated.push(A)}return(d.add&&d.add.length||d.remove&&d.remove.length)&&this.reload(),h}reload(d){this.#O("reload"),this.#h.cancel(),this.hint(this.#f.start,this.#f.end)}destroy(){this.#p=!0,this.#h.cancel(),this.#r.abortAll("destroyed"),this.#n.clear(),this.#i.clear(),this.#s.clear()}exact(){return this.#l!==null||this.#u}pending(){return this.#r.size}async#S(d){if(!B(this.#e.fetch))return;const h=this.#r.begin(`block:${d}`);this.#n.begin(d,h);const{start:s,end:p}=this.#n.rangeOf(d),w=this.#d;try{const A=await this.#e.fetch({range:{start:s,end:p},sort:this.#E("sort",[]),filters:a(this.#E("filters",null),this.#M()),quick:this.#E("quick","")||void 0,context:this.#E("context",null),signal:h.signal});if(!h.current||w!==this.#d||this.#p)return;h.settle();const P=A&&A.rows||[];this.#n.fill(d,P);for(let O=0;O<P.length;O++)this.#i.delete(s+O);const b=A&&typeof A.total=="number"?A.total:A&&typeof A.count=="number"?A.count:null;b!==null?(this.#l=b,this.#u=!0):P.length<this.#n.pageSize?(this.#u=!0,this.#l=s+P.length):this.#c=Math.max(this.#c,s+P.length),this.#T("model:changed",{reason:"page",block:d,from:s,to:s+P.length}),this.#T("rows:changed",{companion:!0,reason:"page",block:d,from:s,to:s+P.length}),this.#l!==null&&this.#l!==this.#a&&(this.#a=this.#l,this.#T("source:total",{total:this.#l,groupPath:[]}))}catch(A){if(h.settle(),H(A))return;this.#n.failed(d,A);for(let P=s;P<p;P++)this.#i.delete(P);this.#T("model:changed",{reason:"page-error",block:d,range:{start:s,end:p}}),this.#T("source:error",{error:A,block:d,range:{start:s,end:p}})}}#v(d){const{start:h,end:s}=this.#n.rangeOf(d);for(let p=h;p<s;p++){const w=this.#i.peek(p);w&&this.#s.delete(w.key),this.#i.delete(p)}}#C(){const d=this.#P();return d===this.#d?!1:(this.#d=d,this.#O("query"),!0)}#O(d){this.#r.abortAll(d),this.#n.clear(),this.#i.clear(),this.#s.clear(),this.#l=null,this.#a=null,this.#u=!1,this.#c=0,this.#m++,this.#T("model:changed",{reason:d})}#P(){return r({filters:this.#E("filters",null),sort:this.#E("sort",[]),quick:this.#E("quick",""),context:this.#E("context",null)})}#M(){const d=this.#t.config||{};return{tz:d.timeZone,weekStartsOn:d.weekStartsOn}}#E(d,h){const s=this.#t.state;if(s&&B(s[d])){const p=s[d]();return p??h}return h}#T(d,h){const s=this.#t.emit;B(s)&&s(d,h)}}}),$e("packages/core/src/source/aggregates.js",function(e,W){"use strict";Object.defineProperty(e,"STAT_PUSHDOWN",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"pushableAggregates",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"fillAggregateSql",{enumerable:!0,get:function(){return B}}),Object.defineProperty(e,"resolveAggregatesConfig",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"routeAggregate",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"resolveAggregatePlan",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"groupKeysPushable",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"pushdownDocRows",{enumerable:!0,get:function(){return _}});const Z=Object.freeze({sum:{pushable:!0,class:"identical",sql:"sum(%c)"},avg:{pushable:!0,class:"identical",sql:"avg(%c)"},min:{pushable:!0,class:"identical",sql:"min(%c)"},max:{pushable:!0,class:"identical",sql:"max(%c)"},count:{pushable:!0,class:"identical",sql:"count(*)"},countValues:{pushable:!0,class:"identical",sql:"count(%c)",blankAware:!0},range:{pushable:!0,class:"identical",sql:"(max(%c) - min(%c))"},variance:{pushable:!0,class:"identical",sql:"var_samp(%c)"},varianceP:{pushable:!0,class:"identical",sql:"var_pop(%c)"},stddev:{pushable:!0,class:"identical",sql:"stddev_samp(%c)"},stddevP:{pushable:!0,class:"identical",sql:"stddev_pop(%c)"},sumSquares:{pushable:!0,class:"identical",sql:"sum(%c * %c)"},median:{pushable:!0,class:"identical",sql:"median(%c)"},p25:{pushable:!0,class:"identical",sql:"quantile_cont(%c, 0.25)"},p75:{pushable:!0,class:"identical",sql:"quantile_cont(%c, 0.75)"},p90:{pushable:!0,class:"identical",sql:"quantile_cont(%c, 0.9)"},p95:{pushable:!0,class:"identical",sql:"quantile_cont(%c, 0.95)"},p99:{pushable:!0,class:"identical",sql:"quantile_cont(%c, 0.99)"},iqr:{pushable:!0,class:"identical",sql:"(quantile_cont(%c, 0.75) - quantile_cont(%c, 0.25))"},mad:{pushable:!0,class:"identical",sql:"mad(%c)"},distinct:{pushable:!0,class:"identical",sql:"count(DISTINCT %c)",blankAware:!0},skewness:{pushable:!0,class:"identical",sql:"skewness(%c)"},kurtosis:{pushable:!0,class:"identical",sql:"kurtosis(%c)"},geomean:{pushable:!0,class:"identical",sql:"exp(avg(ln(%c)))"},harmean:{pushable:!0,class:"identical",sql:"(count(%c) / sum(1.0 / %c))"},entropy:{pushable:!0,class:"identical",sql:"entropy(%c)",blankAware:!0},correlation:{pushable:!0,class:"identical",sql:"corr(%w, %c)",twoColumn:!0},hhi:{pushable:!0,class:"identical",blankAware:!0,sql:"CASE WHEN count(%c)=0 THEN NULL ELSE list_sum(list_transform(map_values(histogram(%c)), lambda v: (v::DOUBLE/count(%c))*(v::DOUBLE/count(%c)))) END"},evenness:{pushable:!0,class:"identical",blankAware:!0,sql:"CASE WHEN count(%c)=0 THEN NULL WHEN count(DISTINCT %c)<2 THEN 1.0 ELSE entropy(%c)/log2(count(DISTINCT %c)) END"},top3Share:{pushable:!0,class:"identical",blankAware:!0,sql:"CASE WHEN count(%c)=0 THEN NULL ELSE list_sum(list_slice(list_sort(map_values(histogram(%c)),'DESC'),1,3))::DOUBLE/count(%c) END"},top10Share:{pushable:!0,class:"identical",blankAware:!0,sql:"CASE WHEN count(%c)=0 THEN NULL ELSE list_sum(list_slice(list_sort(map_values(histogram(%c)),'DESC'),1,10))::DOUBLE/count(%c) END"},gini:{pushable:!0,class:"identical",sql:"CASE WHEN list_min(list(%c) FILTER (WHERE isfinite(%c)))<0 THEN NULL WHEN len(list(%c) FILTER (WHERE isfinite(%c)))=0 THEN NULL WHEN list_sum(list(%c) FILTER (WHERE isfinite(%c)))=0 THEN 0 ELSE 2.0*list_sum(list_transform(list_sort(list(%c) FILTER (WHERE isfinite(%c))), lambda v, i: i*v))/(len(list(%c) FILTER (WHERE isfinite(%c)))*list_sum(list(%c) FILTER (WHERE isfinite(%c))))-(len(list(%c) FILTER (WHERE isfinite(%c)))+1.0)/len(list(%c) FILTER (WHERE isfinite(%c))) END"},trimmedMean:{pushable:!0,class:"identical",sql:"CASE WHEN len(list(%c) FILTER (WHERE isfinite(%c)))=0 THEN NULL ELSE list_avg(list_slice(list_sort(list(%c) FILTER (WHERE isfinite(%c))), floor(len(list(%c) FILTER (WHERE isfinite(%c)))*0.1)::BIGINT+1, len(list(%c) FILTER (WHERE isfinite(%c)))-floor(len(list(%c) FILTER (WHERE isfinite(%c)))*0.1)::BIGINT)) END"},winsorizedMean:{pushable:!0,class:"identical",sql:"CASE WHEN len(list(%c) FILTER (WHERE isfinite(%c)))=0 THEN NULL ELSE list_avg(list_transform(list_sort(list(%c) FILTER (WHERE isfinite(%c))), lambda v: least(list_sort(list(%c) FILTER (WHERE isfinite(%c)))[len(list(%c) FILTER (WHERE isfinite(%c)))-floor(len(list(%c) FILTER (WHERE isfinite(%c)))*0.1)::BIGINT], greatest(list_sort(list(%c) FILTER (WHERE isfinite(%c)))[floor(len(list(%c) FILTER (WHERE isfinite(%c)))*0.1)::BIGINT+1], v)))) END"},robustOutliers:{pushable:!0,class:"identical",sql:"(SELECT CASE WHEN len(d.a)=0 THEN NULL WHEN d.mad=0 THEN NULL ELSE len(list_filter(d.a, lambda v: abs(0.6745*(v-d.med)/d.mad)>3.5)) END FROM (SELECT xs AS a, list_median(xs) AS med, list_median(list_transform(xs, lambda w: abs(w-list_median(xs)))) AS mad FROM (SELECT list(%c) FILTER (WHERE isfinite(%c)) AS xs)) d)"},jarqueBera:{pushable:!0,class:"identical",sql:"CASE WHEN len(list(%c) FILTER (WHERE isfinite(%c)))<8 THEN NULL WHEN list_avg(list_transform(list(%c) FILTER (WHERE isfinite(%c)), lambda v: power(v-list_avg(list(%c) FILTER (WHERE isfinite(%c))),2)))=0 THEN NULL ELSE (len(list(%c) FILTER (WHERE isfinite(%c)))/6.0)*(power(list_avg(list_transform(list(%c) FILTER (WHERE isfinite(%c)), lambda v: power(v-list_avg(list(%c) FILTER (WHERE isfinite(%c))),3)))/power(list_avg(list_transform(list(%c) FILTER (WHERE isfinite(%c)), lambda v: power(v-list_avg(list(%c) FILTER (WHERE isfinite(%c))),2))),1.5),2)+power(list_avg(list_transform(list(%c) FILTER (WHERE isfinite(%c)), lambda v: power(v-list_avg(list(%c) FILTER (WHERE isfinite(%c))),4)))/power(list_avg(list_transform(list(%c) FILTER (WHERE isfinite(%c)), lambda v: power(v-list_avg(list(%c) FILTER (WHERE isfinite(%c))),2))),2)-3,2)/4.0) END"},weightedAvg:{pushable:!0,class:"identical",twoColumn:!0,sql:"sum(%c*%w) FILTER (WHERE isfinite(%c) AND isfinite(%w))/nullif(sum(%w) FILTER (WHERE isfinite(%c) AND isfinite(%w)),0)"},mode:{pushable:!0,class:"may-differ",sql:"mode(%c)",note:"DuckDB returns a modal value even for an all-distinct column; the grid returns null. Tie-breaking can also differ, and on a text column an empty string counts as a value. Under pushdown you will see a value."},weightedQuantile:{pushable:!1,class:"fallback",note:"No SQL equivalent for the grid's weighted-quantile midpoint convention; always computed client-side (needs a full-dataset pull for a correct figure over a remote source)."}});function $(){const z=new Set;for(const[v,S]of Object.entries(Z))S.pushable&&z.add(v);return z}function B(z,v,S){let g=z.split("%c").join(v);return S!==void 0&&(g=g.split("%w").join(S)),g}function D(z){const v=z||{},S=v.default==="engine"||v.default==="engine-if-identical"?v.default:"client",g={};if(v.overrides&&typeof v.overrides=="object")for(const[u,f]of Object.entries(v.overrides))(f==="engine"||f==="client")&&(g[u]=f);return{default:S,overrides:g}}function K(z,v){const S=Z[z];if(!S||!S.pushable)return"client";const g=v.overrides[z];return g==="engine"||g==="client"?g:v.default==="client"?"client":v.default==="engine-if-identical"?S.class==="identical"?"engine":"client":"engine"}function Q(z,v){const S=D(v),g=[],u=[];for(const f of z||[]){const a=Z[f.fn],r=K(f.fn,S),t={id:f.id,col:f.col,fn:f.fn,class:a?a.class:"fallback"};f.weight!==void 0&&(t.weight=f.weight),f.params!==void 0&&(t.params=f.params),r==="engine"?g.push(t):(t.reason=a&&!a.pushable?a.note||"the engine cannot express this stat":"client by config",u.push(t))}return{engine:g,client:u,config:S}}const G=/^[A-Za-z_][A-Za-z0-9_$]*$/;function H(z,v=[]){return(z||[]).every(g=>{if(typeof g=="string")return G.test(g);if(!g||typeof g!="object")return!1;const u=g;return Array.isArray(v)&&v.includes(u.bucket)&&typeof u.col=="string"&&G.test(u.col)&&typeof u.size=="number"&&Number.isFinite(u.size)&&u.size>0})}function _(){return Object.entries(Z).map(([z,v])=>({stat:z,class:v.class,sql:v.sql?B(v.sql,"col",v.twoColumn?"weight":void 0):"",note:v.note||(v.class==="identical"?"Pushes to DuckDB with the same result.":"")}))}}),$e("packages/core/src/source/pushdown.js",function(e,W){"use strict";Object.defineProperty(e,"FOREGROUND_WAIT_MS",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"NO_CAPABILITIES",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"resolveMutate",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"capabilitiesOf",{enumerable:!0,get:function(){return c}}),Object.defineProperty(e,"splitFilters",{enumerable:!0,get:function(){return m}}),Object.defineProperty(e,"LEAF_COUNT_ID",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"PIVOT_UNSUPPORTED",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"GROUP_UNSUPPORTED",{enumerable:!0,get:function(){return A}}),Object.defineProperty(e,"UNGROUPED_LEVEL",{enumerable:!0,get:function(){return P}}),Object.defineProperty(e,"planQuery",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"applyResidual",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"DEFAULT_WHERE_ROW_LIMIT",{enumerable:!0,get:function(){return E}}),Object.defineProperty(e,"createPushdownSource",{enumerable:!0,get:function(){return y}});const Z=W("packages/core/src/internal/util.js"),$=Z.defaultCompare,B=Z.isFunction,D=Z.toArray,K=Z.warnOnce,Q=W("packages/core/src/source/filterwire.js"),G=Q.isGroup,H=Q.warnWherePageRelative,_=Q.warnWhereOverThreshold,z=W("packages/core/src/source/aggregates.js"),v=z.resolveAggregatePlan,S=z.groupKeysPushable,g=z.STAT_PUSHDOWN,f=W("packages/core/src/source/abort.js").SupersededError,a=1e3;function r(T){const V=T&&T.signal;if(!V||!V.aborted)return;const q=V.reason;throw q instanceof Error?q:new f("","superseded before it was sent")}const t=Object.freeze({filter:!1,operators:Object.freeze([]),sort:!1,quick:!1,range:!1,total:!1,group:!1,pivot:!1,mutate:!1});function n(T){if(!T||typeof T!="object")return!1;const V=T.returning==="row"||T.returning==="key"?T.returning:"none";return{append:T.append===!0,update:T.update===!0,delete:T.delete===!0,returning:V}}function o(T,V){if(!T||typeof V!="string")return;if(!V.includes("."))return T[V];let q=T;for(const Y of V.split(".")){if(q===null||typeof q!="object")return;q=q[Y]}return q}function l(T){if(T===!0)return!0;if(!T||typeof T!="object")return!1;const V=T;return V.enabled===!1?!1:V.enabled===!0||B(V.commit)}function c(T){const V={...t,...T||{}};return V.operators=new Set(V.operators||[]),V.mutate=n(V.mutate),V}function i(T,V){return!T||!T.op||!V.operators.size?!1:V.operators.has(T.op)}function m(T,V){if(!T)return{pushed:null,residual:null};if(!V.filter)return{pushed:null,residual:T};if(V.filter==="term"){if(G(T)){const ee=T.conditions||[];if(String(T.op)!=="and")return{pushed:null,residual:T};const ne=ee.findIndex(se=>!G(se)&&i(se,V));if(ne<0)return{pushed:null,residual:T};const ie=ee.filter((se,we)=>we!==ne);return{pushed:ee[ne],residual:ie.length?{op:"and",conditions:ie}:null}}return i(T,V)?{pushed:T,residual:null}:{pushed:null,residual:T}}if(!G(T))return i(T,V)?{pushed:T,residual:null}:{pushed:null,residual:T};if(String(T.op)!=="and")return(T.conditions||[]).every(ne=>G(ne)?m(ne,V).residual===null:i(ne,V))?{pushed:T,residual:null}:{pushed:null,residual:T};const q=[],Y=[];for(const ee of T.conditions||[]){if(G(ee)){if(V.filter==="flat"){Y.push(ee);continue}const ne=m(ee,V);ne.pushed&&q.push(ne.pushed),ne.residual&&Y.push(ne.residual);continue}(i(ee,V)?q:Y).push(ee)}const J=ee=>ee.length===0?null:ee.length===1?ee[0]:{op:"and",conditions:ee};return{pushed:J(q),residual:J(Y)}}const d="__lattice_leaves";function h(T){return T.aggregates?T.aggregates instanceof Set?T.aggregates:new Set(D(T.aggregates)):new Set}function s(T){const V=h(T);return V.size?V.has("count")?T.filter!=="tree"||!T.operators||!T.operators.has("eq")?"the adapter does not declare the `group` capability, and cannot narrow a group's rows by its key (that needs a `tree` filter with the `eq` operator)":"":"the adapter does not declare the `group` capability, and its declared aggregates have no `count` to give each group its row count":"the adapter does not declare the `group` capability"}function p(T,V,q,Y,J,ee,ne){const ie=Array.isArray(T.groupBy)?T.groupBy:[],se=Array.isArray(T.groupPath)?T.groupPath:[],we=Array.isArray(T.groupValues)?T.groupValues:null;if(!V.group){const he=s(V);if(he)return he}return S(ie)?q.residual?"the filter did not fully push, so the engine would group a superset of the matching rows":Y?J?ee?"a host `where` predicate can only run in the browser, over rows the engine grouped":ne?"fullDataset holds the whole matching set, so the grid groups it itself":!we||we.length!==se.length?"the request carries no typed `groupValues` for its group path, and the string `groupPath` cannot be compared against a typed column":"":"a quick search did not push, so the engine would group unsearched rows":"the sort did not push, so the engine would order the groups differently":"a grouping key is not a plain column the engine can name in a GROUP BY"}const w="pushdown:pivot-unsupported",A="pushdown:group-unsupported",P=Symbol("lattice.remote.ungroupedLevel");function b(T,V,q,Y,J,ee){const ne=Array.isArray(T.pivotBy)?T.pivotBy:[],ie=Array.isArray(T.groupBy)?T.groupBy:[],se=Array.isArray(T.groupPath)?T.groupPath:[],we=Array.isArray(T.groupValues)?T.groupValues:null;return V.pivot?S(ne)?ie.length&&!S(ie)?"a grouping key is not a plain column the engine can name in a GROUP BY":q.residual?"the filter did not fully push, so the engine would pivot a superset of the matching rows":Y?J?ee?"a host `where` predicate can only run in the browser, over rows the engine pivoted":!we||we.length!==se.length?"the request carries no typed `groupValues` for its group path, and the string `groupPath` cannot be compared against a typed column":"":"a quick search did not push, so the engine would pivot unsearched rows":"the sort did not push, so the engine would order the rows differently":"a pivot column is not a plain column the engine can name in a GROUP BY":"the adapter does not declare the `pivot` capability"}function O(T,V,q=!1){const Y=m(T.filters||null,V),J=[];Y.residual&&J.push("filter");const ee=T.sort||[],ne=ee.length===0||V.sort==="multi"&&ee.length>=1||V.sort==="single"&&ee.length===1;!ne&&ee.length&&J.push("sort");const ie=T.quick?String(T.quick):"",se=!ie||!!V.quick;se||J.push("quick");const we=T.where&&T.where.active?T.where:null;we&&J.push("where");const he={filters:Y.residual,sort:ne?null:ee,quick:se?"":ie,where:we},te=!!q,ae=Array.isArray(T.groupBy)&&T.groupBy.length>0,ge=ae?p(T,V,Y,ne,se,we,te):"",be=T.pivotMode!==!1&&Array.isArray(T.pivotBy)&&T.pivotBy.length>0,je=be?b(T,V,Y,ne,se,we):"",xe=be&&je==="";be&&!xe&&J.push("pivot");const Ce=be?xe&&ae:ae&&ge==="";ae&&!be&&!Ce&&J.push("group");const ke=(Ce||xe)&&Array.isArray(T.groupValues)?T.groupValues.length:0,ye=Ce||be?!1:te||!!(he.filters||he.sort||he.quick||he.where)||!V.range;return{pushed:{...T,filters:Y.pushed,sort:ne?ee:[],quick:se?ie:"",range:ye?null:T.range},residual:he,needsAll:ye,unpushed:J,full:te,grouped:Ce,groupLevel:ke,groupReason:be?"":ge,pivoted:xe,pivotReason:je}}function x(T){const V=Array.isArray(T.totals)?T.totals:[],q=T.totalFns&&typeof T.totalFns=="object"?T.totalFns:{},Y=[],J=[];for(const ee of V){const ne=String(ee),ie=typeof q[ne]=="string"?q[ne]:null,se=ie?g[ie]:null;ie?!se||!se.pushable||!se.sql?J.push({id:ne,fn:ie,class:se?se.class:"fallback",reason:se&&se.note?se.note:`the pushdown map cannot express "${ie}"`}):se.twoColumn?J.push({id:ne,fn:ie,class:se.class,reason:`"${ie}" reduces two columns, and a grouped request carries no weight column`}):Y.push({id:ne,col:ne,fn:ie,class:se.class}):J.push({id:ne,fn:null,class:"fallback",reason:"the column totals with a host function, so there is no named statistic to push"})}return{engine:Y,client:J}}const j=Object.freeze({items:T=>T==null?[]:Array.isArray(T)?T:[T]});function F(T,V,q){if(!V)return T;let Y=T;if(V.filters&&B(q.evaluateFilters)){const J=Y,ee={count:Y.length,handle:se=>({id:se,get:we=>o(J[we],se)}),itemwise:se=>J.some(we=>Array.isArray(o(we,se)))?j:null},ne=q.evaluateFilters(V.filters,ee),ie=[];for(let se=0;se<Y.length;se++)ne[se]&&ie.push(Y[se]);Y=ie}if(V.where&&V.where.active&&(V.whole||H(V.where.names,"pushdown"),Y=Y.filter(J=>V.where.passes(J))),V.quick){const J=V.quick.toLowerCase();Y=Y.filter(ee=>{if(!ee||typeof ee!="object")return!1;for(const ne of Object.values(ee))if(ne!=null&&String(ne).toLowerCase().includes(J))return!0;return!1})}if(V.sort&&V.sort.length&&B(q.sortMulti)){const J=[...new Set(V.sort.map(se=>se.col))],ee=Y,ne=J.map(se=>({id:se,get:we=>o(ee[we],se)})),ie=q.sortMulti(ne,V.sort.map(se=>({col:se.col,dir:se.dir})),Uint32Array.from({length:Y.length},(se,we)=>we),{});Y=Array.from(ie,se=>ee[se])}return Y}function C(T){return JSON.stringify({filters:T.filters||null,sort:T.sort||[],quick:T.quick||"",groupBy:T.groupBy||[],groupPath:T.groupPath||[],context:T.context??null})}function M(T){if(!T||typeof T!="object")return 16;let V="";try{V=JSON.stringify(T)}catch{return 200}return V.length*2+64}function L(T){const V=T||{};return{enabled:!!V.enabled,maxRows:Number.isFinite(V.maxRows)?V.maxRows:1e6,maxBytesEstimate:Number.isFinite(V.maxBytesEstimate)?V.maxBytesEstimate:512*1024*1024}}const E=5e4;function I(T){return Number.isFinite(T)&&T>=0?T:E}function R(T){return!!T&&B(T.then)}async function k(T){if(!T||T.total!==void 0||!R(T.pendingTotal))return T;const V=await T.pendingTotal,{pendingTotal:q,...Y}=T;return typeof V=="number"?{...Y,total:V}:Y}function y(T={}){const V=T.adapter;if(!V||!B(V.execute))return K("source.pushdown.adapter","createPushdownSource needs an `adapter` with an `execute(query)` function."),{...T,mode:"remote",fetch:async()=>({rows:[],total:0})};const q=c(V.capabilities),Y=V.capabilities&&Object.getOwnPropertyDescriptor(V.capabilities,"operators");Y&&B(Y.get)&&Object.defineProperty(q,"operators",{enumerable:!0,configurable:!0,get:()=>new Set(V.capabilities.operators||[]),set:()=>{}});const J=V.name||"adapter";let ee=null;const ne=()=>B(V.ready)?(ee||(ee=Promise.resolve(V.ready()).then(()=>{Object.assign(q,c(V.capabilities))},Oe=>{throw ee=null,Oe})),ee):null,ie=L(T.fullDataset),se=!!T.allowPartialResults,we=I(T.whereRowLimit);let he=null;const te=T.aggregates;let ae=null,ge=null,be=null,je=null,xe=null,Ce,ke=null,ye=0,ve=null;const Se=()=>!ie.enabled||!ae?null:(ve!==ae.key&&(ye++,ve=ae.key),{rows:ae.rows,version:ye}),Le=async Oe=>{const Ne=Oe.where&&Oe.where.active?Oe.where:null;if(!Ne)return{request:Oe,probe:null};const{where:de,...ue}=Oe,me=O(ue,q,ie.enabled);if(me.needsAll)return{request:Oe,probe:null};const Ae=C(me.pushed);let Me=null;return(!he||he.key!==Ae)&&(q.total?(r(Oe),Me=await k(await V.execute(me.pushed,Oe)),he={key:Ae,size:Me&&typeof Me.total=="number"?Me.total:null}):he={key:Ae,size:null}),he.size!==null&&he.size<we?{request:Oe,probe:null}:(_(Ne.names,J,he.size,we),{request:ue,probe:Me})},De=async(Oe,Ne)=>{ke=null;const de=x(Oe.pushed);be={engine:de.engine,client:de.client,groupBy:Oe.pushed.groupBy},de.client.length&&K(`source.pushdown.group.totals.${J}.${de.client.map(Ae=>Ae.id).join(".")}`,`the ${J} adapter cannot compute the group subtotal for ${de.client.map(Ae=>`"${Ae.id}" (${Ae.reason})`).join(", ")}, so those group rows carry no value for that column. A figure computed over anything other than the group would be wrong, so none is shown; \`lastPlan().aggregates.client\` names them.`);const ue=await V.executeGroupLevel(Oe.pushed,de.engine,Ne)||{};let me=ue.rows||[];return!q.range&&Ne.range&&(me=me.slice(Ne.range.start,Ne.range.end)),Ge(ue),ue.total===void 0?{rows:me}:{rows:me,total:ue.total}},He=new Map,Ze=64,Ee=async(Oe,Ne)=>{ke=null;const de=Oe.pushed,ue=de.groupBy,me=Array.isArray(de.groupValues)?de.groupValues:[],Ae=me.length,Me=[...de.filters?[de.filters]:[],...ue.slice(0,Ae).map((ot,ut)=>({col:ot,op:"eq",value:me[ut]===void 0?null:me[ut],caseSensitive:!0}))],Ie=Me.length===0?null:Me.length===1?Me[0]:{op:"and",conditions:Me},We=Ne.range?Ne.range.start:0;if(Ae>=ue.length){const ot={...de,filters:Ie,groupBy:[],groupPath:[],groupValues:[],totals:[],totalFns:{}},ut=await k(await V.execute(ot,Ne))||{};let Ot=ut.rows||[];return!q.range&&Ne.range&&(Ot=Ot.slice(Ne.range.start,Ne.range.end)),typeof ut.total=="number"?{rows:Ot,total:ut.total}:{rows:Ot}}const Ue=ue[Ae],Te=x(de),Be=h(q),Ke=Te.engine.filter(ot=>Be.has(ot.fn)),Je=[...Te.engine.filter(ot=>!Be.has(ot.fn)).map(ot=>({id:ot.id,fn:ot.fn,class:ot.class,reason:`the ${J} adapter does not compute "${ot.fn}"`})),...Te.client];be={engine:Ke,client:Je,groupBy:ue},Je.length&&K(`source.pushdown.group.totals.${J}.${Je.map(ot=>ot.id).join(".")}`,`the ${J} adapter cannot compute the group subtotal for ${Je.map(ot=>`"${ot.id}" (${ot.reason})`).join(", ")}, so those group rows carry no value for that column. A figure computed over anything other than the group would be wrong, so none is shown; \`lastPlan().aggregates.client\` names them.`);const Qe=[...Ke.map(ot=>({id:ot.id,col:ot.col,fn:ot.fn})),{id:d,col:Ue,fn:"count"}],at={...de,filters:Ie,range:null},it=JSON.stringify([C(at),me,Ue,Qe]);let gt=We>0?He.get(it):void 0;if(!gt){for(gt=Promise.resolve(V.executeGroupedAggregates(at,[Ue],Qe)),He.delete(it),He.set(it,gt);He.size>Ze;)He.delete(He.keys().next().value);gt.catch(()=>{He.get(it)===gt&&He.delete(it)})}const wt=await gt||[];r(Ne);const dt=ot=>{const ut={};for(const Ot of Ke)ut[Ot.id]=ot?ot[Ot.id]:void 0;return ut},Et=(de.sort||[]).find(ot=>ot&&ot.col===Ue),Ft=Et&&Et.dir==="desc"?-1:1,_e=wt.filter(ot=>ot&&ot.level===1).map(ot=>({[Ue]:ot.keys[0]===void 0?null:ot.keys[0],leafCount:Number(ot.values&&ot.values[d])||0,totals:dt(ot.values)})).sort((ot,ut)=>Ft*$(ot[Ue],ut[Ue]));if(Ae===0){const ot=wt.find(Ot=>Ot&&Ot.level===0),ut=ot?Number(ot.values&&ot.values[d]):NaN;Ge({matchCount:Number.isFinite(ut)?ut:_e.reduce((Ot,Rt)=>Ot+Rt.leafCount,0),...ot?{grand:dt(ot.values)}:{}})}const ht=Ne.range?Ne.range.end:_e.length;return{rows:_e.slice(We,ht),total:_e.length}},Ge=Oe=>{typeof Oe.matchCount=="number"&&(je=Oe.matchCount,xe=Oe.grand?{totals:Oe.grand,leafCount:Oe.matchCount}:null,Ce===void 0&&B(V.unfilteredCount)&&(Ce=null,Promise.resolve(V.unfilteredCount()).then(Ne=>{Ce=typeof Ne=="number"?Ne:null}).catch(Ne=>{K(`source.pushdown.group.unfiltered.${J}`,`the ${J} adapter could not count the unfiltered set (${Ne&&Ne.message?Ne.message:Ne}), so "N of M" falls back to the display count for its denominator.`)})))},Ye=async(Oe,Ne)=>{ke=null;const de=x(Oe.pushed);be={engine:de.engine,client:de.client,groupBy:Oe.pushed.groupBy,pivotBy:Oe.pushed.pivotBy},de.client.length&&K(`source.pushdown.pivot.totals.${J}.${de.client.map(Ie=>Ie.id).join(".")}`,`the ${J} adapter cannot compute the pivot cells for ${de.client.map(Ie=>`"${Ie.id}" (${Ie.reason})`).join(", ")}, so those cells are empty. A figure computed over anything other than the cell would be wrong, so none is shown; \`lastPlan().aggregates.client\` names them.`);const ue=await V.executePivotLevel(Oe.pushed,de.engine,Ne)||{};let me=ue.rows||[];!q.range&&Ne.range&&(me=me.slice(Ne.range.start,Ne.range.end)),Ge(ue);const Ae=ue.pivot&&typeof ue.pivot=="object"?ue.pivot:{},Me={cells:Array.isArray(Ae.cells)?Ae.cells:[],...Array.isArray(Ae.axis)?{axis:Ae.axis}:{}};return ue.total===void 0?{rows:me,pivot:Me}:{rows:me,total:ue.total,pivot:Me}},tt=Oe=>{K(`source.pushdown.pivot.${J}.${Oe}`,`pushdown:pivot-unsupported: the ${J} adapter cannot pivot this query because ${Oe}, so no rows are fetched rather than every leaf row being pulled into the browser to pivot there. \`lastPlan().pivotReason\` says the same.`);const Ne=new Error(`[lattice] ${w}: the ${J} adapter cannot pivot this query because ${Oe}, so no rows are fetched rather than every leaf row being pulled into the browser to pivot there. \`lastPlan().pivotReason\` says the same.`);throw Ne.code=w,Ne.reason=Oe,Ne},st=(Oe,Ne)=>{const de={key:Ne,state:"pending",value:null};return ke=de,Oe.then(ue=>(ke===de&&(ke={key:Ne,state:"settled",value:typeof ue=="number"?ue:null}),ue),ue=>{throw ke===de&&(ke={key:Ne,state:"failed",value:null}),ue})};let ft=0,mt=[];const St=()=>ft===0?null:new Promise(Oe=>{const Ne=setTimeout(Oe,a);mt.push(()=>{clearTimeout(Ne),Oe()})});let jt;const Pt=async Oe=>{const Ne=ne();Ne&&await Ne;const ue=Oe&&Oe.pivotMode!==!1&&Array.isArray(Oe.pivotBy)&&Oe.pivotBy.length>0?{request:Oe,probe:null}:await Le(Oe);r(Oe);let me=O(ue.request,q,ie.enabled);if(q.group&&me.grouped&&!me.pivoted&&!B(V.executeGroupLevel)&&(K(`source.pushdown.group.method.${J}`,`the ${J} adapter declares the \`group\` capability but has no \`executeGroupLevel(query, aggregates, request)\`, so grouping is not pushed and the grid stays ungrouped unless it holds the whole matching set. Implement the method or drop the capability.`),me=O(ue.request,{...q,group:!1,aggregates:null},ie.enabled)),me.pivoted&&!B(V.executePivotLevel)&&(me=O(ue.request,{...q,pivot:!1},ie.enabled),me.pivotReason="the adapter declares the `pivot` capability but has no `executePivotLevel(query, aggregates, request)`"),me.grouped&&!me.pivoted&&!q.group&&!B(V.executeGroupedAggregates)&&(K(`source.pushdown.group.aggregates.method.${J}`,`the ${J} adapter declares \`aggregates\` but has no \`executeGroupedAggregates(query, groupBy, aggregates)\`, so the grouped view cannot be built from grouped aggregates and the grid stays ungrouped unless it holds the whole matching set. Implement the method, or declare \`group\` and implement \`executeGroupLevel\`.`),me=O(ue.request,{...q,aggregates:null},ie.enabled)),ge=me,me.pivoted)return Ye(me,Oe);if(me.pivotReason&&tt(me.pivotReason),me.grouped)return q.group?De(me,Oe):Ee(me,Oe);const Me=!!me.groupReason&&!me.full;Me?K(`source.pushdown.group-unsupported.${J}.${me.groupReason}`,`pushdown:group-unsupported: the ${J} adapter was not asked to group this query because ${me.groupReason}, so the grid stays ungrouped rather than building group rows, counts and subtotals from a window of leaf rows. \`lastPlan().groupReason\` says the same.`):me.groupReason&&K(`source.pushdown.group.${J}.${me.groupReason}`,`the ${J} adapter was not asked to group this query because ${me.groupReason}. The engine returns rows and the grouping is the grid's to do, which needs every matching row in the browser — correct where the grid holds them, and wrong-looking where it holds a window. \`lastPlan().unpushed\` names it.`);const Ie=Qe=>Me?{...Qe,[P]:!0}:Qe;if(!me.needsAll){const Qe=ue.probe||await V.execute(me.pushed,Oe),at=Qe.rows||[];return R(Qe.pendingTotal)&&Qe.total===void 0?Ie({rows:at,pendingTotal:st(Qe.pendingTotal,C(me.pushed))}):(ke=null,!q.total&&Qe.total===void 0?Ie({rows:at}):Ie({rows:at,total:Qe.total??at.length}))}me.unpushed.length&&K(`source.pushdown.residual.${J}.${me.unpushed.join(".")}`,`the ${J} adapter cannot push ${me.unpushed.join(" or ")}, so every matching row is fetched and the rest is applied in the browser. Correct, and slower than it needs to be: widening the adapter is the fix.`);const We=C(me.pushed);if(!ae||ae.key!==We){const Qe=await k(await V.execute(me.pushed,Oe));ke=null;const at=Qe.rows||[];if(me.full){const it=typeof Qe.total=="number"?Math.max(Qe.total,at.length):at.length;if(it>ie.maxRows)throw new Error(`[lattice] fullDataset refused: the ${J} adapter's matching set is ${it.toLocaleString()} rows, past the configured maxRows of ${ie.maxRows.toLocaleString()}. The whole set cannot be held client-side, so it is refused rather than truncated — a fraction shown as the whole would make every total and statistic silently wrong. Narrow the filter or raise maxRows.`);const gt=at.length*M(at[0]);if(gt>ie.maxBytesEstimate)throw new Error(`[lattice] fullDataset refused: the ${J} adapter's matching set is an estimated ${Math.round(gt/(1024*1024)).toLocaleString()} MB across ${at.length.toLocaleString()} rows, past the configured maxBytesEstimate of ${Math.round(ie.maxBytesEstimate/(1024*1024)).toLocaleString()} MB. The whole set cannot be held client-side, so it is refused rather than truncated. Narrow the filter or raise maxBytesEstimate.`)}if(typeof Qe.total=="number"&&at.length<Qe.total){const it=!!(me.residual.filters||me.residual.quick||me.residual.sort&&me.residual.sort.length);if(it&&!se)throw new Error(`[lattice] the ${J} adapter returned ${at.length} of ${Qe.total} matching rows when asked for the whole result, and the query has residual ${me.unpushed.join(" and ")||"work"} to finish in the browser. Filtering or sorting a fraction of the result would return wrong rows, so the result is refused. Fix the adapter to follow the engine's own paging before returning, hold the data in memory, or set \`allowPartialResults: true\` on the source config to accept this knowingly.`);it?K(`source.pushdown.partial.residual.${J}`,`the ${J} adapter returned ${at.length} of ${Qe.total} matching rows when asked for the whole result, and residual work will run over that fraction. allowPartialResults is set, so the result is used as-is — it may be wrong. The adapter must follow the engine's own paging to be correct.`):K(`source.pushdown.partial.${J}`,`the ${J} adapter returned ${at.length} of ${Qe.total} matching rows when asked for the whole result. The adapter must follow the engine's own paging before returning.`)}ae={key:We,rows:at,total:typeof Qe.total=="number"?Qe.total:null}}let Ue=me;if(me.residual.where){const Qe=ae.total??ae.rows.length;if(Qe>=we){_(me.residual.where.names,J,Qe,we);const{where:at,...it}=ue.request;Ue=O(it,q,ie.enabled),ge=Ue}}const Te=ae.total!==null&&ae.rows.length>=ae.total,Be=F(ae.rows,{...Ue.residual,whole:Te},T.compute||{}),Ke=Oe.range?Oe.range.start:0,Je=Oe.range?Oe.range.end:Be.length;return Ie({rows:Be.slice(Ke,Je),total:Be.length})},Tt=async(Oe,Ne,de)=>{const me=de&&de.waitForPage&&jt&&B(jt.pageForegroundIdle)?jt.pageForegroundIdle():St();me&&await me;const Ae=ne();Ae&&await Ae;const Me=O(Oe,q,ie.enabled);ge=Me;const Ie=v(Ne,te),We=Array.isArray(Oe.groupBy)?Oe.groupBy:[],Ue=We.length>0,Te=!Me.residual.filters&&!Me.residual.quick,Be=!Ue||S(We,q.buckets);let Ke=Ie.engine,Je=Ie.client;if(q.aggregates&&Ke.length){const gt=q.aggregates instanceof Set?q.aggregates:new Set(D(q.aggregates)),wt=Ke.filter(dt=>!gt.has(dt.fn));wt.length&&(Ke=Ke.filter(dt=>gt.has(dt.fn)),Je=[...wt.map(dt=>({...dt,reason:`the ${J} adapter does not compute "${dt.fn}"`})),...Je])}const Qe=gt=>{Je=[...Ke.map(wt=>({...wt,reason:gt})),...Je],Ke=[]};Ke.length&&!Te?Qe(Me.residual.quick&&!Me.residual.filters?"a quick search the adapter cannot push forces all-client (no mixed provenance)":"residual filter forces all-client (no mixed provenance)"):Ke.length&&!Be&&Qe("a grouping key the engine cannot form forces all-client (no mixed provenance)");let at={},it;return Ke.length&&(B(Ue?V.executeGroupedAggregates:V.executeAggregates)?Ue?it=await V.executeGroupedAggregates(Me.pushed,We,Ke)||[]:at=await V.executeAggregates(Me.pushed,Ke)||{}:(K(`source.pushdown.aggregates.${J}${Ue?".grouped":""}`,`the ${J} adapter cannot compute ${Ue?"grouped ":""}aggregates, so every requested statistic is computed client-side. Correct, and slower than it needs to be.`),Qe(`adapter cannot compute ${Ue?"grouped ":""}aggregates`))),be={engine:Ke,client:Je,...Ue?{groupBy:We}:{}},{values:at,engine:Ke,client:Je,...it!==void 0?{groups:it}:{}}},Mt=async Oe=>{ft++;try{return await Pt(Oe)}finally{if(ft--,ft===0&&mt.length){const Ne=mt;mt=[];for(const de of Ne)de()}}},$t=l(T.edit),lt=T.edit&&typeof T.edit=="object"&&B(T.edit.commit);let et=T.edit;if($t&&!lt)if(q.mutate&&q.mutate.update){const Oe=Ne=>{if(!q.mutate||!q.mutate.update)throw new Error(`[lattice] the ${J} adapter cannot update rows (mutate.update is not declared), so this edit cannot be persisted. The cell is reverted rather than left looking saved.`);const de={kind:"update",key:String(Ne.key),patch:{[Ne.colId]:Ne.value}};return V.mutate(de,Ne.request||{})};et={...T.edit===!0?{}:T.edit,commit:Oe}}else K(`source.pushdown.readonly.${J}`,`edit is enabled but the ${J} adapter declares mutate: ${q.mutate?"without update":"false"} (read-only by declaration), so no commit is synthesised and the grid stays read-only. Declare \`mutate: { update: true }\` on the adapter to allow cell edits.`);const fe=$t&&q.mutate&&(q.mutate.append||q.mutate.delete)?{append:q.mutate.append===!0,remove:q.mutate.delete===!0,returning:q.mutate.returning,mutate:(Oe,Ne)=>V.mutate(Oe,Ne||{})}:null,Pe=async Oe=>{const Ne=ne();Ne&&await Ne;const{range:de,signal:ue,export:me,...Ae}=Oe||{},Me={...Ae,groupBy:[],groupPath:[],groupValues:[],pivotBy:[],pivotMode:!1,totals:[]};return{plan:O(Me,q,ie.enabled),signal:ue}};async function*oe(Oe,Ne={}){const{plan:de,signal:ue}=await Pe(Oe),me=Math.max(1,Math.floor(Number(Ne.pageSize))||5e3),Ae={signal:ue,stream:!0};if(!de.needsAll)for(let We=0;;We+=me){r(Ae);const Ue=await V.execute({...de.pushed,range:{start:We,end:We+me}},Ae);Ue&&R(Ue.pendingTotal)&&Ue.pendingTotal.then(null,()=>{});const Te=Ue&&Ue.rows||[];if(Te.length&&(yield Te),Te.length<me)return}r(Ae);const Me=await k(await V.execute({...de.pushed,range:void 0},Ae)),Ie=F(Me&&Me.rows||[],{...de.residual,whole:!0},T.compute||{});for(let We=0;We<Ie.length;We+=me)yield Ie.slice(We,We+me)}return jt={...T,edit:et,rowMutate:fe,mode:"remote",fetch:Mt,foregroundIdle:St,aggregate:Tt,countMatching:async Oe=>{const{plan:Ne,signal:de}=await Pe(Oe);if(!Ne.needsAll&&q.total){r({signal:de});const me=await k(await V.execute({...Ne.pushed,range:{start:0,end:0}},{signal:de}));if(me&&typeof me.total=="number")return me.total}let ue=0;for await(const me of oe(Oe))ue+=me.length;return ue},streamMatching:oe,lastPlan:()=>ge?{...ge,...be?{aggregates:be}:{},...ke?{total:{deferred:!0,state:ke.state,value:ke.value}}:{}}:null,fullFrame:Se,counts:()=>({match:je,total:Ce??null,pending:!!ke&&ke.state==="pending"}),grandTotals:()=>xe},jt}}),$e("packages/core/src/source/remote.js",function(e,W){"use strict";Object.defineProperty(e,"PROTOCOL",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"HINT_SETTLE_MS",{enumerable:!0,get:function(){return O}}),Object.defineProperty(e,"createRemoteSource",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"RemoteSource",{enumerable:!0,get:function(){return M}});const Z=W("packages/core/src/internal/util.js"),$=Z.Lru,B=Z.isFunction,D=Z.warnOnce,K=Z.settleDebounce,Q=W("packages/core/src/source/abort.js"),G=Q.createAbortScope,H=Q.isAbortError,_=W("packages/core/src/source/blockcache.js"),z=_.BlockCache,v=_.DEFAULT_PAGE_SIZE,S=_.DEFAULT_MAX_CACHED_PAGES,g=W("packages/core/src/source/rows.js"),u=g.createRowFactory,f=g.groupKey,a=W("packages/core/src/source/filterwire.js"),r=a.wireFilters,t=a.querySignature,n=a.warnHostFilterNotApplied,l=W("packages/core/src/source/pagewindow.js").pageWindow,i=W("packages/core/src/source/memory.js").MemorySource,d=W("packages/core/src/compute/handle.js").valueComparator,h=W("packages/core/src/compute/pivot.js"),s=h.pivotKey,p=h.joinPath,w=h.DEFAULT_PATH_SEPARATOR,P=W("packages/core/src/source/pushdown.js").UNGROUPED_LEVEL,b=1,O=120,x=1e3;function j(L,E,I){for(let R=0;R<Math.max(L.length,E.length);R++){const k=L[R],y=E[R],T=k==null,V=y==null;if(T||V){if(T&&V)continue;return T?1:-1}const q=I(k,y);if(q!==0)return q}return 0}function F(L,E){return new M(L,E)}class C{constructor(E,I,R,k){this.path=E,this.keyPath=k||E,this.values=[],this.level=I,this.key=f(this.keyPath),this.cache=new z(R),this.count=null,this.complete=!1,this.announced=null,this.counting=!1,this.failed=!1,this.children=new Map,this.row=null,this.flat=!1}}class M{mode="remote";#e;#t;#n;#r;#o=new Map;#i=new Set;#s=G();#l;#a;#u=new Map;#c=[];#d=null;#f="";#h;#p=!1;#m=!1;#g=[];#y=!1;#b=0;#A="";#w=null;#S=-1;constructor(E,I){this.#e=E||{mode:"remote"},this.#t=I||{},B(this.#e.fullFrame)&&(this.filteredIndices=()=>this.#B(),this.unfilteredIndices=()=>this.#_(),this.handleFor=V=>this.#z(V),this.display=()=>this.#D(),this.grandTotalRow=()=>this.#$(),this.unfilteredRows=()=>this.#U(),this.facetIndices=V=>this.#q(V));const R=this.#e.counts;B(R)&&(this.matchCount=()=>this.#W("match"),this.totalCount=()=>this.#W("total"));const k=this.#e.grandTotals;B(k)&&(this.grandTotalRow=()=>this.#V());const y=this.#e.foregroundIdle;B(y)&&(this.foregroundIdle=()=>this.#we(y),this.#e.pageForegroundIdle=()=>this.#y?this.#we(y):null);const T=this.#e;B(T.countMatching)&&B(T.streamMatching)&&(this.selectionQuery=()=>this.#he(),this.countMatching=V=>T.countMatching(V),this.streamMatching=(V,q)=>T.streamMatching(V,q),this.loadedRows=()=>this.#ie(),this.resident=()=>this.#N()!==null),this.#n={pageSize:this.#e.pageSize||v,maxCachedPages:this.#e.maxCachedPages||S},this.#l=u(this.#t),this.#a=new $(this.#n.pageSize*4),this.#h=K((V,q)=>this.#E(V,q),O),this.#r=new C([],0,this.#n),this.#o.set(this.#r.key,this.#r),this.#f=this.#ce(),B(this.#e.fetch)||D("source.remote.fetch",'source.mode "remote" requires a fetch function; the grid will stay empty.'),this.#Ue()}count(){const E=this.#O();return E?E.length:this.#v()}#v(){const E=this.#N();return E?E.count():(this.#ee(),this.#te(this.#r))}#C(){if(this.#N())return!0;const E=I=>{if(I.count===null&&!I.complete)return!1;for(const R of I.children.values())if(this.#Pe(R.key)&&!E(R))return!1;return!0};return E(this.#r)}pageInfo(){const E=this.#O(),I=this.totalPending();if(!E){const R=this.#v();return{page:0,pageSize:0,total:this.#C()?R:null,pageCount:1,counting:I}}return{page:E.page,pageSize:E.pageSize,total:E.total,pageCount:E.pageCount,counting:I||E.total===null&&this.#s.size>0&&this.#r.cache.loadedExtent()===0}}#O(){const E=this.#v(),I=l(this.#R("pageSize",0),this.#R("page",0),E,this.#C());if(!I)return this.#A="",null;const R=`${this.#b}:${I.offset}:${I.length}`;return R!==this.#A&&!this.#p&&(this.#A=R,I.length>0&&!this.#N()&&this.#E(I.offset,I.offset+I.length-1)),I}at(E){const I=this.#O();if(I){if(E<0||E>=I.length)return;const R=this.#P(I.offset+E);return R&&(R.index=E),R}return this.#P(E)}#P(E){const I=this.#N();if(I)return I.at(E);if(this.#ee(),E<0||E>=this.#v())return;const R=this.#K(this.#r,E);if(!R)return;const k=this.#Z(R.node,R.local);return k&&(k.index=E),k||this.#l.skeleton(E,R.node.level,R.node.cache.erroredAt(R.local))}byKey(E){const I=this.#N();if(I)return I.byKey(E);const R=this.#u.get(E);if(!R)return;const k=R.lastIndexOf(":"),y=this.#o.get(R.slice(0,k));return y&&this.#Z(y,Number(R.slice(k+1)))||void 0}loaded(E){const I=this.#O();if(I){if(E<0||E>=I.length)return!1;E+=I.offset}const R=this.#N();if(R)return R.loaded(E);if(E<0||E>=this.#v())return!1;const k=this.#K(this.#r,E);return!!k&&k.node.cache.rowLoaded(k.local)}hint(E,I){if(this.#p)return;this.#y=!0;const R=this.#ee();let k=Math.max(0,Math.floor(E)),y=Math.max(k,Math.floor(I));const T=this.#O();if(T){if(T.length===0)return;k=T.offset,y=T.offset+T.length-1}for(const[V,q]of this.#M(k,y)){V.cache.protect(q.min,q.max);for(const Y of V.cache.evict())this.#Ne(V,Y)}this.#h(k,y),R&&this.#h.flush()}#M(E,I){const R=this.#v(),k=new Map;for(let y=E;y<=I&&y<R;y++){const T=this.#K(this.#r,y);if(!T)continue;const V=k.get(T.node);V?(V.min=Math.min(V.min,T.local),V.max=Math.max(V.max,T.local)):k.set(T.node,{min:T.local,max:T.local})}return k.size||k.set(this.#r,{min:E,max:E}),k}#E(E,I){if(!this.#p)for(const[R,k]of this.#M(E,I)){R.cache.protect(k.min,k.max);const y=R.cache.blockOf(k.min),T=R.cache.blockOf(k.max);for(let V=y;V<=T&&!(R.count!==null&&V*R.cache.pageSize>=R.count);V++)R.cache.has(V)||this.#$e(R,V)}}apply(E){const I={added:[],updated:[],removed:[]};if(!E)return I;if(E.update)for(const R of E.update){const k=this.#u.get(this.#l.keyOf(R,-1));if(!k)continue;this.#a.delete(k);const y=k.lastIndexOf(":"),T=this.#o.get(k.slice(0,y));if(!T)continue;const V=Number(k.slice(y+1)),q=T.cache.blockOf(V);if(!T.cache.loaded(q))continue;const{start:Y}=T.cache.rangeOf(q),J=[];for(let ne=Y;ne<Y+T.cache.pageSize;ne++){const ie=T.cache.rowAt(ne);if(ie===void 0)break;J.push(ne===V?R:ie)}T.cache.fill(q,J);const ee=this.#Z(T,V);ee&&I.updated.push(ee)}return(E.add&&E.add.length||E.remove&&E.remove.length)&&this.reload({keepExpanded:!0}),I}reload(E){this.#s.abortAll("reload"),this.#h.cancel(),E&&E.keepExpanded===!1&&this.#i.clear(),this.#ae(),this.#G("model:changed",{reason:"reload"})}destroy(){this.#p=!0,this.#h.cancel(),this.#s.abortAll("destroyed"),this.#ae(),this.#o.clear(),this.#i.clear(),this.#w&&B(this.#w.destroy)&&this.#w.destroy(),this.#w=null}expand(E){this.#i.has(E)||(this.#i.add(E),this.#G("group:toggled",{key:E,expanded:!0}),this.#G("model:changed",{reason:"expand",key:E}))}collapse(E){this.#i.delete(E)&&(this.#G("group:toggled",{key:E,expanded:!1}),this.#G("model:changed",{reason:"collapse",key:E}))}expandedKeys(){return[...this.#i]}pivotFields(){return this.#c}pivot(){this.#ee();const E=this.#d;if(!E||!E.keys.size||!this.#R("pivotBy",[]).length)return null;if(!E.result){const I=d((this.#t.config||{}).locale),R=[...E.keys.entries()].sort((y,T)=>j(y[1],T[1],I)),k=R.map(([y])=>y);E.result={keys:R.map(([,y])=>y),paths:k,fields:this.#se(k),groupPaths:[],columns:k.length*Math.max(1,this.#Ce().length),values:E.cells,cells:E.cells,error:null}}return E.result}invalidateHandles(){this.#w&&(B(this.#w.invalidateHandles)&&this.#w.invalidateHandles(),B(this.#w.invalidate)&&this.#w.invalidate("filter"))}#T(){const E=this.#e.fullFrame;return B(E)?E():null}#N(){const E=this.#T();return E?(this.#w||(this.#w=new i({mode:"memory"},this.#x())),E.version!==this.#S&&(this.#w.setRows(E.rows),this.#S=E.version),this.#w):null}#x(){const E=this.#t,I=E.state||{};return{...E,state:{...I,page:()=>0,pageSize:()=>0}}}#B(){const E=this.#N();return E?E.filteredIndices():new Uint32Array(0)}#_(){const E=this.#N();return E?E.unfilteredIndices():new Uint32Array(0)}#z(E){const I=this.#N();return I?I.handleFor(E):void 0}#D(){const E=this.#N();return E?E.display():[]}#q(E){const I=this.#N();return I&&B(I.facetIndices)?I.facetIndices(E):new Uint32Array(0)}#$(){const E=this.#N();return E&&B(E.grandTotalRow)?E.grandTotalRow():null}#W(E){const I=this.#N();if(I){const T=E==="match"?I.matchCount:I.totalCount;if(B(T))return T.call(I)}const R=this.#e.counts,k=B(R)?R():null,y=k?k[E]:null;return typeof y=="number"?y:this.#v()}#V(){const E=this.#N();if(E&&B(E.grandTotalRow))return E.grandTotalRow();if((this.#t.config||{}).grandTotalRow!=="bottom")return null;const R=this.#e.grandTotals,k=B(R)?R():null;return!k||!k.totals?null:this.#l.grandTotal(k.totals,k.leafCount||0)}#U(){const E=this.#N();if(E&&B(E.unfilteredRows))return E.unfilteredRows();const I=[],R=this.count();for(let k=0;k<R;k++){const y=this.at(k);y&&I.push(y)}return I}#he(){const E=this.#R("quick",""),I={protocol:b,groupPath:[],groupValues:[],groupBy:[],totals:[],totalFns:{},pivotBy:[],pivotMode:!1,filters:r(this.#R("filters",null),this.#J()),sort:this.#R("sort",[]),context:this.#R("context",null)};E&&(I.quick=E);const R=this.#R("where",null);return R&&R.active&&(I.where=R),I}#ie(){const E=this.#R("groupBy",[]).length,I=[];for(const R of this.#o.values())if(!(R.level!==E&&!R.flat))for(const k of R.cache.ids()){if(!R.cache.loaded(k))continue;const{start:y,end:T}=R.cache.rangeOf(k);for(let V=y;V<T&&R.cache.rowLoaded(V);V++){const q=this.#Z(R,V);q&&!q.group&&I.push(q)}}return I}loadedCount(){const E=this.#N();if(E){const k=E.matchCount();return typeof k=="number"?k:E.count()}this.#ee();const I=this.#R("groupBy",[]).length;let R=0;for(const k of this.#o.values())if(!(k.level!==I&&!k.flat))for(const y of k.cache.ids()){if(!k.cache.loaded(y))continue;const T=k.cache.fillOf(y);typeof T=="number"&&(R+=T)}return R}residentRows(){const E=this.#N();return E?E.display():this.#R("groupBy",[]).length>0?null:(this.#ee(),this.#ie())}#ye(E,I,R){const{start:k,end:y}=E.cache.rangeOf(I),T=this.#R("groupBy",[]),V=this.#R("pivotBy",[]),q=this.#R("quick",""),Y=this.#Ce(),J={protocol:b,range:{start:k,end:y},groupPath:E.path,groupValues:E.values,groupBy:T,totals:Y,totalFns:this.#Y(Y),pivotBy:V,pivotMode:V.length>0,filters:r(this.#R("filters",null),this.#J()),sort:this.#R("sort",[]),context:this.#R("context",null),signal:R};q&&(J.quick=q);const ee=this.#R("where",null);return ee&&ee.active&&(J.where=ee),J}async#$e(E,I){if(!B(this.#e.fetch))return;if(!this.#m){this.#m=!0;const T=this.#g;this.#g=[],queueMicrotask(()=>{for(const V of T)V()})}const R=this.#s.begin(`${E.key}:${I}`);E.cache.begin(I,R);const k=this.#f,{start:y}=E.cache.rangeOf(I);try{const T=await this.#e.fetch(this.#ye(E,I,R.signal));if(!R.current||k!==this.#f||this.#p)return;R.settle();const V=T&&T.rows||[];if(!!(T&&T[P])&&!E.flat){E.flat=!0,E.children.clear();for(const[ee,ne]of[...this.#u])ne.startsWith(`${E.key}:`)&&(this.#a.delete(ne),this.#u.delete(ee))}E.cache.fill(I,V),E.failed=!1;for(let ee=0;ee<V.length;ee++)this.#a.delete(`${E.key}:${y+ee}`);const Y=T&&typeof T.count=="number"?T.count:T&&typeof T.total=="number"?T.total:null,J=T&&B(T.pendingTotal?.then)?T.pendingTotal:null;Y!==null?(E.count=Y,E.complete=!0):V.length<E.cache.pageSize?(E.count=y+V.length,E.complete=!0):J&&(E.counting=!0,E.announced=null),T&&Array.isArray(T.pivotFields)&&this.#Ee(T.pivotFields),T&&T.pivot&&typeof T.pivot=="object"&&this.#Te(T.pivot),this.#G("model:changed",{reason:"page",groupPath:E.path,block:I}),this.#G("rows:changed",{companion:!0,reason:"page",groupPath:E.path,block:I}),this.#pe(E),J&&this.#be(E,J,k)}catch(T){if(R.settle(),H(T))return;E.cache.failed(I,T),E.failed=!0;const{end:V}=E.cache.rangeOf(I);for(let q=y;q<V;q++)this.#a.delete(`${E.key}:${q}`);this.#G("model:changed",{reason:"page-error",groupPath:E.path,block:I}),this.#G("source:error",{error:T,groupPath:E.path,block:I})}}async#be(E,I,R){let k;try{k=await I}catch(y){if(R!==this.#f||this.#p)return;E.counting=!1,H(y)||(E.failed=!0),H(y)||this.#G("source:error",{error:y,groupPath:E.path});return}R!==this.#f||this.#p||(E.counting=!1,typeof k=="number"&&(E.count=k,E.complete=!0,this.#pe(E),this.#G("model:changed",{reason:"total",count:k,groupPath:E.path})))}#pe(E){typeof E.count!="number"||!E.complete||E.announced!==E.count&&(E.announced=E.count,this.#G("source:total",{total:E.count,groupPath:E.path}))}#we(E){if(this.#p)return null;this.#ee();const I=this.#m?null:new Promise(V=>{this.#g.push(V),setTimeout(V,x)}),R=E();if(!I&&!R)return null;const k=(async()=>{I&&await I;for(let V=E();V;V=E())await V})();let y;const T=new Promise(V=>{y=setTimeout(V,x)});return Promise.race([k,T]).then(()=>clearTimeout(y))}totalPending(){if(this.#r.failed)return!1;if(this.#r.counting===!0)return!0;if(this.#N())return!1;this.#ee();const E=this.#r;return E.count===null&&!E.complete&&E.cache.loadedExtent()===0}totalFailed(){return this.#r.failed===!0}#Ee(E){E.length===this.#c.length&&E.every((I,R)=>I===this.#c[R])||(this.#c=E,this.#G("column:pivoted",{pivotFields:E,remote:!0}))}#me(){const E=this.#t.config||{};return E.pivot&&E.pivot.separator||w}#se(E){const I=this.#me(),R=this.#Ce();if(!R.length)return E.slice();const k=[];for(const y of E)for(const T of R)k.push(`${y}${I}${T}`);return k}#Te(E){const I=this.#me();this.#d||(this.#d={keys:new Map,cells:new Map,result:null});const R=this.#d;let k=!1;const y=V=>{const q=Array.isArray(V)?V:[V],Y=p(q,I);return R.keys.has(Y)||(R.keys.set(Y,q),k=!0),Y},T=this.#R("groupBy",[]).length>0;for(const V of Array.isArray(E.axis)?E.axis:[])y(V);for(const V of Array.isArray(E.cells)?E.cells:[]){if(!V||typeof V!="object")continue;const q=y(V.pivot);if(T&&!(Array.isArray(V.group)&&V.group.length))continue;const Y=p(Array.isArray(V.group)?V.group:[],I);for(const[J,ee]of Object.entries(V.values||{}))R.cells.set(s(Y,q,J),ee)}R.result=null,k&&this.#Ee((this.pivot()||{fields:[]}).fields)}#te(E){let I=this.#ne(E);for(const R of E.children.values())this.#Pe(R.key)&&(I+=this.#te(R));return I}#ne(E){if(E.count!==null)return E.count;const I=E.cache.loadedExtent();return E.complete?I:E.row&&E.row.leafCount>0?E.level>=this.#R("groupBy",[]).length?Math.max(I,E.row.leafCount):I===0?1:Math.min(I+E.cache.pageSize,Math.max(I,E.row.leafCount)):I+E.cache.pageSize}#K(E,I){let R=I,k=0;const y=[...E.children.entries()].filter(([,V])=>this.#Pe(V.key)).sort((V,q)=>V[0]-q[0]);for(const[V,q]of y){const Y=V-k+1;if(R<Y)return{node:E,local:k+R};R-=Y,k=V+1;const J=this.#te(q);if(R<J)return this.#K(q,R);R-=J}const T=this.#ne(E);return k+R<T?{node:E,local:k+R}:null}#Z(E,I){const R=`${E.key}:${I}`,k=this.#a.get(R);if(k)return k;const y=E.cache.rowAt(I);if(y===void 0)return null;const T=this.#R("groupBy",[]);let V;if(E.level<T.length&&!E.flat){const q=T[E.level],Y=this.#d!==null&&E.level===T.length-1&&this.#R("pivotBy",[]).length>0,J=this.#F(y,q),ee=J==null,ne=[...E.path,ee?"":String(J)],ie=[...E.keyPath,ee?null:String(J)];if(V=this.#l.group({path:ne,keyPath:ie,column:q,value:J,level:E.level,parent:E.row,leafCount:Number(y.leafCount)||0,expanded:Y?!1:this.#Pe(f(ie)),...Y?{hasChildren:!1}:{}}),V.totals=this.#I(y),V.data=y,!Y){let se=this.#o.get(V.key);se?se.row=V:(se=new C(ne,E.level+1,this.#n,ie),se.row=V,this.#o.set(se.key,se)),se.values=[...E.values,J],E.children.set(I,se)}}else V=this.#l.leaf(y,I,E.level,E.row);return this.#a.set(R,V),this.#u.set(V.key,R),V}#I(E){const I=E||{};if(I.totals&&typeof I.totals=="object")return I.totals;const R={};for(const k of this.#Ce())Object.hasOwn(I,k)&&(R[k]=I[k]);return R}#Ne(E,I){const{start:R,end:k}=E.cache.rangeOf(I);for(let y=R;y<k;y++){const T=`${E.key}:${y}`,V=this.#a.peek(T);V&&this.#u.delete(V.key),this.#a.delete(T)}}#ee(){const E=this.#ce();return E===this.#f?!1:(this.#f=E,this.#s.abortAll("query"),this.#ae(),this.#m=!1,this.#G("model:changed",{reason:"query"}),!0)}#ae(){for(const E of this.#o.values())E.cache.clear(),E.count=null,E.complete=!1,E.announced=null,E.counting=!1,E.failed=!1,E.children.clear(),E.flat=!1;this.#a.clear(),this.#u.clear(),this.#b++,this.#d=null}#ce(){const E=this.#R("where",null);return`${t({filters:this.#R("filters",null),sort:this.#R("sort",[]),quick:this.#R("quick",""),groupBy:this.#R("groupBy",[]),pivotBy:this.#R("pivotBy",[]),context:this.#R("context",null)})}|${E?E.version:0}`}#Pe(E){const I=this.#R("expanded",null);return I?B(I.has)?I.has(E):Array.prototype.includes.call(I,E):this.#i.has(E)}#Ce(){const E=this.#R("totals",[]);if(E&&E.length)return[...E];const I=this.#t.columns;return!I||!B(I.all)?[]:I.all().filter(R=>!!R.total).map(R=>R.id)}#Y(E){const I=this.#t.columns,R={};if(!I||!B(I.get))return R;for(const k of E){const y=I.get(k);if(!y)continue;const T=y.groupTotal!=null?y.groupTotal:y.total;typeof T=="string"&&(R[k]=T)}return R}#F(E,I){const R=this.#t.columns,k=R&&B(R.get)?R.get(I):void 0;return k&&B(k.getValue)?k.getValue(E):E?.[I]}#Ue(){n(this.#t)}#J(){const E=this.#t.config||{};return{tz:E.timeZone,weekStartsOn:E.weekStartsOn}}#R(E,I){const R=this.#t.state;if(R&&B(R[E])){const k=R[E]();return k??I}return I}#G(E,I){const R=this.#t.emit;B(R)&&R(E,I)}}}),$e("packages/core/src/source/gapbuffer.js",function(e,W){"use strict";Object.defineProperty(e,"GapBuffer",{enumerable:!0,get:function(){return $}});const Z=64;class ${#e;#t=0;#n=0;constructor(D=Z){this.#e=new Uint32Array(Math.max(1,D)),this.#n=this.#e.length}static from(D,K=Z){const Q=new $(D.length+Math.max(1,K));return Q.#e.set(D,0),Q.#t=D.length,Q.#n=Q.#e.length,Q}get length(){return this.#t+(this.#e.length-this.#n)}get capacity(){return this.#e.length}at(D){return D<0||D>=this.length?0:D<this.#t?this.#e[D]:this.#e[D+(this.#n-this.#t)]}insert(D,K){const Q=D<0?0:D>this.length?this.length:D;this.#r(Q),this.#t===this.#n&&this.#o(),this.#e[this.#t++]=K}push(D){this.insert(this.length,D)}removeAt(D){return!Number.isInteger(D)||D<0||D>=this.length?!1:(this.#r(D),this.#n++,!0)}toArray(){const D=new Uint32Array(this.length);return D.set(this.#e.subarray(0,this.#t),0),D.set(this.#e.subarray(this.#n),this.#t),D}clear(){this.#t=0,this.#n=this.#e.length}#r(D){if(D!==this.#t)if(D<this.#t){const K=this.#t-D;this.#e.copyWithin(this.#n-K,D,this.#t),this.#t=D,this.#n-=K}else{const K=D-this.#t;this.#e.copyWithin(this.#t,this.#n,this.#n+K),this.#t=D,this.#n+=K}}#o(){const D=this.#e.length-this.#n,K=new Uint32Array(Math.max(this.#e.length*2,this.#e.length+Z));K.set(this.#e.subarray(0,this.#t),0),K.set(this.#e.subarray(this.#n),K.length-D),this.#e=K,this.#n=K.length-D}}}),$e("packages/core/src/store/ingest.js",function(e,W){"use strict";Object.defineProperty(e,"INGEST_DEFAULTS",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"inferKind",{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,"decideText",{enumerable:!0,get:function(){return S}}),Object.defineProperty(e,"createReaders",{enumerable:!0,get:function(){return g}}),Object.defineProperty(e,"Ingest",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"ingest",{enumerable:!0,get:function(){return a}}),Object.defineProperty(e,"ingestSync",{enumerable:!0,get:function(){return r}});const Z=W("packages/core/src/internal/util.js"),$=Z.now,B=Z.nextFrame,D=Z.infoOnce,K=Z.warnOnce,Q=Z.isFunction,G=Z.pathGetter,_=W("packages/core/src/store/columnstore.js").ColumnStore,z=Object.freeze({chunkMs:8,chunkRows:512,sampleSize:100,dictionaryRatio:.1,columnarBelow:5e3,initialCapacity:1024});function v(t,n={}){if(n.multi)return"multi";if(t.length===0)return"object";let o=0,l=0,c=0,i=0,m=0;for(let h=0;h<t.length;h++){const s=t[h];typeof s=="number"?o++:typeof s=="boolean"?l++:typeof s=="string"?c++:s instanceof Date?i++:Array.isArray(s)&&m++}const d=t.length;return o===d?"float64":l===d?"bitset":i===d?"float64":c===d?"text":m===d?"multi":"object"}function S(t,n,o){return n<=0||t<o*n?"dictionary":"object"}function g(t,n,o){const l=new Map,c=new Map;for(const b of t){if(b.computed)continue;const O=Q(b.read)?b.read:G(b.field||b.id);c.set(b.id,O),l.set(b.id,O)}const i=n?.order??[],m=n?.fns??{},d=n?.deps??{},h=n?.wrapDeps??null,s=i.filter(b=>Q(m[b])),p=s.some(b=>d[b]==="*");let w=new WeakMap;const A=b=>{const O={};if(p)for(const[x,j]of c)O[x]=j(b);for(const x of s){const j=d[x];let F;if(j==="*")F=O;else{F={};const C=j||[];for(let M=0;M<C.length;M++){const L=C[M];F[L]=L in O?O[L]:c.get(L)?.(b)}}O[x]=m[x](h?h(F,x):F,{data:b,row:null,column:null,grid:null,context:o})}return O},P=b=>{if(b===null||typeof b!="object"&&typeof b!="function")return A(b);let O=w.get(b);return O===void 0&&(O=A(b),w.set(b,O)),O};for(const b of s)l.set(b,O=>P(O)[b]);return{readers:l,reset(){w=new WeakMap}}}class u{spec;read;kind;inferred;nullable;candidate=!1;distinct=null;change=null;reason="";constructor(n,o){this.spec=n,this.read=o,this.kind="object",this.inferred=!1,this.nullable=n.nullable!==!1}}class f{#e;#t=[];#n=null;#r;#o=0;#i;#s=!1;#l=!1;#a=0;#u;constructor(n,o={},l={}){this.#e=Array.isArray(n)?n:Array.from(n||[]),this.#i={...z,...l};const c=o.columns??[];this.#r=g(c,o.computed??null,o.context),this.#u=this.#e.length>=this.#i.columnarBelow,this.#c(c,o.computed??null),this.#n=new _(this.#t.map(i=>({id:i.spec.id,kind:i.kind,nullable:i.nullable,read:i.read,dictionary:i.spec.dictionary})),{initialCapacity:this.#i.initialCapacity,columnarBelow:this.#i.columnarBelow})}get store(){return this.#n}get done(){return this.#s||this.#l}get progress(){return this.#o}slice(){if(this.done)return!1;if(this.#i.signal?.aborted)return this.#l=!0,!1;const n=$(),{chunkMs:o,chunkRows:l}=this.#i,c=this.#e.length;do{const i=Math.min(this.#o+l,c);this.#n.append(this.#e.slice(this.#o,i)),this.#d(this.#o,i),this.#o=i,this.#r.reset(),this.#h(!1)}while(this.#o<c&&$()-n<o);return this.#a+=$()-n,this.#i.onProgress?.({loaded:this.#o,total:c}),this.#o>=c?(this.#h(!0),this.#s=!0,!1):!0}cancel(){this.#l=!0}result(){return{store:this.#n,schema:this.#t.map(n=>({id:n.spec.id,kind:n.kind,nullable:n.nullable,read:n.read,dictionary:n.spec.dictionary})),decisions:this.#t.map(n=>({id:n.spec.id,kind:n.kind,nullable:n.nullable,inferred:n.inferred,distinct:n.candidate||n.change?this.#f(n):null,change:n.change,reason:n.reason})),count:this.#n.count,elapsed:this.#a,cancelled:this.#l}}#c(n,o){const l=this.#e,c=Math.min(this.#i.sampleSize,l.length),i=this.#i.dictionaryRatio,m=o?.pure instanceof Set?o.pure:new Set(o?.pure??o?.order??[]);for(const d of n){if(!d||!d.id)continue;if(d.computed&&(d.pure===!1||o&&!m.has(d.id))){K(`ingest.impure.${d.id}`,`column "${d.id}" is an impure computed column and is not materialised into the store`);continue}const h=this.#r.readers.get(d.id)??(Q(d.read)?d.read:G(d.field||d.id)),s=new u(d,h);if(d.kind)s.kind=d.kind,s.reason="declared by the caller";else if(d.dictionary)s.kind=d.multi?"multi":"dictionary",s.reason="value table supplied (lookup column)";else{const p=[];for(let A=0;A<c&&p.length<this.#i.sampleSize;A++){const P=h(l[A]);P!=null&&p.push(P)}s.inferred=!0;const w=v(p,{multi:d.multi});if(w==="text"){const A=new Set(p).size;s.kind=S(A,p.length,i),s.candidate=this.#u,s.reason=`sampled ${A} distinct in ${p.length}`}else s.kind=w,s.reason=`inferred from ${p.length} sampled values`,w==="object"&&p.length&&D(`ingest.mixed.${d.id}`,`column "${d.id}" holds mixed or unrecognised value types; storing as an object array. Declare a type to avoid this.`);s.kind==="object"&&s.candidate&&(s.distinct=new Set(p))}this.#t.push(s)}}#d(n,o){const l=this.#e;for(const c of this.#t){if(!c.candidate||!c.distinct)continue;const i=c.distinct;for(let m=n;m<o;m++){const d=c.read(l[m]);d!=null&&i.add(d)}}}#f(n){if(n.distinct)return n.distinct.size;const o=this.#n.column(n.spec.id);return o?.dict?o.dict.size:0}#h(n){const o=this.#i.dictionaryRatio,l=this.#e.length;for(const c of this.#t){if(!c.candidate)continue;const i=this.#f(c);if(c.kind==="dictionary"&&i>=o*l){const m=this.#n.column(c.spec.id);c.distinct=new Set(m?.dict?m.dict.values():[]),this.#n.convert(c.spec.id,"object"),c.kind="object",c.change="demoted",c.reason=`${i} distinct values is at or above ${o*100}% of ${l} rows`;continue}if(c.kind==="object"&&i>=o*l){c.candidate=!1,c.distinct=null,c.reason=`${i} distinct values is at or above ${o*100}% of ${l} rows`;continue}n&&c.kind==="object"&&i<o*l&&(this.#n.convert(c.spec.id,"dictionary"),c.kind="dictionary",c.change=c.change==="demoted"?null:"promoted",c.reason=`${i} distinct values is below ${o*100}% of ${l} rows`,c.distinct=null),n&&(c.candidate=!1)}}}async function a(t,n={},o={}){const l=new f(t,n,o),c=o.scheduler?.frame??B;for(;l.slice();)await new Promise(i=>{c(i)});return l.result()}function r(t,n={},o={}){const l=new f(t,n,{...o,chunkMs:1/0});for(;l.slice(););return l.result()}}),$e("packages/core/src/store/columnpack.js",function(e,W){"use strict";Object.defineProperty(e,"isPortableSchema",{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,"packChunk",{enumerable:!0,get:function(){return u}}),Object.defineProperty(e,"packedTransfers",{enumerable:!0,get:function(){return f}});const $=W("packages/core/src/internal/util.js").pathGetter,B=W("packages/core/src/store/ingest.js"),D=B.inferKind,K=B.decideText,Q=B.INGEST_DEFAULTS,H=W("packages/core/src/store/columnstore.js").toFloat,_=new Set(["float64","int32","bitset","dictionary","object","multi"]);function z(a){if(!Array.isArray(a)||a.length===0)return!1;for(const r of a)if(!r||typeof r.id!="string"||typeof r.field!="string"||r.field===""||r.kind&&!_.has(r.kind))return!1;return!0}function v(a){const r=H(a);return Number.isFinite(r)?r|0:0}function S(a){return a==null?[]:Array.isArray(a)?a:[a]}function g(a,r,t,n){if(a.kind)return a.kind;const o=[];for(let i=0;i<r.length&&o.length<Q.sampleSize;i++){const m=r[i];m!=null&&o.push(m)}const l=D(o,{multi:a.multi});if(l!=="text")return l;const c=new Set(o).size;return K(c,o.length,n)}function u(a,r,t={}){const n=r.length|0,o=t.dictionaryRatio??Q.dictionaryRatio,l=[];for(const c of a){const i=$(c.field||c.id),m=c.nullable!==!1,d=new Array(n);for(let A=0;A<n;A++){const P=i(r[A]);d[A]=P===void 0?null:P}const h=g(c,d,n,o),s=m?new Uint8Array(n+7>>3):null,p=A=>{s&&(s[A>>3]|=1<<(A&7))};let w;switch(h){case"float64":{const A=new Float64Array(n);for(let P=0;P<n;P++){const b=d[P],O=b===null;O||p(P),A[P]=O?NaN:H(b)}w={id:c.id,kind:h,nullable:m,values:A,presence:s,offsets:null,table:null};break}case"int32":{const A=new Int32Array(n);for(let P=0;P<n;P++){const b=d[P],O=b===null;O||p(P),A[P]=O?0:v(b)}w={id:c.id,kind:h,nullable:m,values:A,presence:s,offsets:null,table:null};break}case"bitset":{const A=new Uint8Array(n+7>>3);for(let P=0;P<n;P++){const b=d[P],O=b===null;O||p(P),!O&&b&&(A[P>>3]|=1<<(P&7))}w={id:c.id,kind:h,nullable:m,values:A,presence:s,offsets:null,table:null};break}case"dictionary":{const A=new Uint32Array(n),P=[],b=new Map;for(let O=0;O<n;O++){const x=d[O];if(x===null){A[O]=0;continue}p(O);let j=b.get(x);j===void 0&&(j=P.length,P.push(x),b.set(x,j)),A[O]=j}w={id:c.id,kind:h,nullable:m,values:A,presence:s,offsets:null,table:P};break}case"multi":{const A=[],P=new Map,b=new Uint32Array(n+1),O=[];for(let x=0;x<n;x++){const j=d[x];b[x]=O.length,j===null||p(x);const C=S(j);for(let M=0;M<C.length;M++){const L=C[M];let E=P.get(L);E===void 0&&(E=A.length,A.push(L),P.set(L,E)),O.push(E)}}b[n]=O.length,w={id:c.id,kind:h,nullable:m,values:Int32Array.from(O),presence:s,offsets:b,table:A};break}default:{const A=new Array(n);for(let P=0;P<n;P++){const b=d[P];b!==null&&p(P),A[P]=b}w={id:c.id,kind:"object",nullable:m,values:A,presence:s,offsets:null,table:null};break}}l.push(w)}return{count:n,columns:l}}function f(a){const r=[];if(!a||!Array.isArray(a.columns))return r;const t=n=>{ArrayBuffer.isView(n)&&n.buffer&&!r.includes(n.buffer)&&r.push(n.buffer)};for(const n of a.columns)t(n.values),t(n.presence),t(n.offsets);return r}}),$e("packages/core/src/source/stream.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_PROMOTE_BELOW",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"createStreamSource",{enumerable:!0,get:function(){return x}}),Object.defineProperty(e,"StreamSource",{enumerable:!0,get:function(){return j}});const Z=W("packages/core/src/internal/util.js"),$=Z.Lru,B=Z.isFunction,D=Z.now,K=Z.nextFrame,Q=Z.cancelFrame,G=Z.whenIdle,H=Z.defaultCompare,_=Z.warnOnce,z=Z.infoOnce,v=Z.getPath,S=W("packages/core/src/source/abort.js"),g=S.createAbortScope,u=S.isAbortError,f=W("packages/core/src/source/rows.js"),a=f.createRowFactory,r=f.lazyRowView,n=W("packages/core/src/source/gapbuffer.js").GapBuffer,l=W("packages/core/src/source/memory.js").createMemorySource,i=W("packages/core/src/source/filterwire.js").querySignature,d=W("packages/core/src/store/columnpack.js").isPortableSchema,h=25e4,s=Symbol("lattice.stream.storeBacked"),p=8,w=.1,A=1e3,P=50;function b(F){return Math.min(A,Math.max(P,Math.floor(F/4)))}function O(F){if(F instanceof Date)return F.getTime();if(typeof F=="number")return Number.isFinite(F)?F:NaN;if(typeof F=="string"){const C=F.trim();if(!C)return NaN;const M=Date.parse(C);return Number.isNaN(M)?Number(C):M}return NaN}function x(F,C){return new j(F,C)}class j{mode="stream";writesStore=!0;#e;#t;#n=[];#r=null;#o=[];#i=null;#s;#l;#a=new Map;#u=g();#c={loaded:0,estimated:void 0};#d=null;#f=0;#h=0;#p=0;#m=0;#g=null;#y=null;#b=null;#A=!1;#w=!1;#S=!1;#v=!1;#C="";#O=0;#P=0;#M=0;#E=null;#T=1/0;#N=!1;#x=null;#B=null;#_=null;#z=null;#D=!1;#q=0;#$=0;#W=!1;constructor(C,M){this.#e=C||{mode:"stream"},this.#t=M||{},this.#s=a(this.#t),this.#l=new $(4096),this.#C=this.#_e();const L=(this.#t.config||{}).ingest;this.#D=!!L&&L.retainSource===!1,B(this.#e.open)||_("source.stream.open",'source.mode "stream" requires an open function; the grid will stay empty.'),this.#e.autoStart!==!1&&queueMicrotask(()=>this.start());const E=Number(this.#e.poll);Number.isFinite(E)&&E>0&&(this.#z=setInterval(()=>{this.#v||this.reload()},E),this.#z&&B(this.#z.unref)&&this.#z.unref()),this.#U()}#V(){const C=Number(this.#e.maxAge);return Number.isFinite(C)&&C>0?C:0}#U(){const C=this.#V();if(!C)return;const M=this.#e.ageBy;B(M)?this.#B=M:typeof M=="string"&&M?this.#B=L=>v(L,M):this.#B=null,this.#E=[],this.#x=setInterval(()=>{this.#v||this.#he()&&(this.#ee(),this.#fe())},b(C)),this.#x&&B(this.#x.unref)&&this.#x.unref()}#he(){const C=this.#V();return!C||!this.#E?!1:this.#N?!0:this.#T<Date.now()-C*(1+w)}#ie(C,M){if(!this.#E)return;const L=this.#B?O(this.#B(M)):Date.now();this.#E[C]=L,Number.isNaN(L)||(L<this.#T&&(this.#T=L),L<Date.now()-this.#V()&&(this.#N=!0))}#ye(){return this.#ke("groupBy",[]).length>0?!0:!!this.#ke("pivotMode",!1)&&this.#ke("pivotBy",[]).length>0}#$e(){if(this.#g||this.#v)return;const C=this.#ye();if(C&&!this.#y){this.#y=l({mode:"memory",rows:this.#n},this.#be()),this.#A=!1;return}!C&&this.#y&&(this.#y.destroy(),this.#y=null)}#be(){if(this.#b)return this.#b;const C=this,M={liveIndices:()=>C.#pe(),live:L=>C.#n[L]!==void 0,source:L=>C.#Se(L),get physical(){return C.#n.length}};return this.#D&&(M.column=L=>{const E=C.#t.store;return E&&B(E.column)?E.column(L):void 0}),this.#b=Object.create(this.#t,{store:{value:M,enumerable:!0,configurable:!0}}),this.#b}#pe(){const C=new Uint32Array(this.#n.length);let M=0;for(let L=0;L<this.#n.length;L++)this.#n[L]!==void 0&&(C[M++]=L);return C.subarray(0,M)}#we(){return this.#g?this.#g:this.#y?(this.#A&&(this.#A=!1,this.#y.setRows(this.#n)),this.#y):null}invalidate(C="filter"){if(this.#g){this.#g.invalidate(C);return}this.#$e(),this.#y&&this.#y.invalidate(C),(C==="filter"||C==="sort")&&this.#Ce()}count(){const C=this.#we();return C?C.count():this.#r?this.#r.length:this.#O}matchCount(){const C=this.#we();return C&&B(C.matchCount)?C.matchCount():this.#r?this.#r.length:this.#O}totalCount(){const C=this.#we();return C&&B(C.totalCount)?C.totalCount():this.#O}unfilteredRows(){const C=this.#we();if(C&&B(C.unfilteredRows))return C.unfilteredRows();const M=[];for(let L=0;L<this.#n.length;L++){if(!this.#n[L])continue;const E=this.#Oe(L);E&&M.push(E)}return M}at(C){const M=this.#we();if(M)return M.at(C);if(C<0||C>=this.count())return;const L=this.#r?this.#r.at(C):C,E=this.#Oe(L);return E.index=C,E}byKey(C){const M=this.#we();if(M)return M.byKey(C);const L=this.#a.get(C);return L===void 0?void 0:this.#Oe(L)}leavesOf(C){const M=this.#we();return M&&B(M.leavesOf)?M.leavesOf(C):[]}loaded(C){return C>=0&&C<this.count()}hint(C,M){if(this.#g){this.#g.hint(C,M);return}this.#Ee(),this.#p=Math.max(0,Math.floor(C))}#Ee(){this.#v||this.#_e()===this.#C||this.reload()}display(){const C=this.#we();return C?C.display():r(()=>this.count(),M=>this.at(M))}apply(C){if(this.#g)return this.#g.apply(C);const M={added:[],updated:[],removed:[]};if(!C)return M;if(C.update){let L=!1;for(const E of C.update){const I=this.#a.get(this.#s.keyOf(E,-1));if(I===void 0)continue;const R=this.#Ue(I);this.#D?this.#We(I,E):this.#n[I]=E,this.#l.delete(I),this.#J(I,R),this.#E&&(this.#ie(I,E),L=!0),this.#A=!0,M.updated.push(this.#Oe(I))}L&&this.#ee()}if(C.add&&C.add.length){const L=this.#I(C.add);for(const E of L)M.added.push(this.#Oe(E))}return C.remove&&C.remove.length&&_("source.stream.remove","removing rows from a live stream is not supported; reload instead."),this.#fe(),M}reload(C){this.#u.abortAll("reload"),this.#He(),this.#y&&(this.#y.destroy(),this.#y=null),this.#A=!1,this.#n=[],this.#r=null,this.#a.clear(),this.#l.clear(),this.#g=null,this.#O=0,this.#P=0,this.#M=0,this.#E&&(this.#E=[]),this.#T=1/0,this.#N=!1,this.#w=!1,this.#S=!1,this.#c={loaded:0,estimated:void 0},this.#C=this.#_e(),this.#xe("model:changed",{reason:"reload"}),this.start()}destroy(){this.#v=!0,this.#z!==null&&(clearInterval(this.#z),this.#z=null),this.#x!==null&&(clearInterval(this.#x),this.#x=null),this.#E=null,this.#u.abortAll("destroyed"),this.#He(),this.#d!==null&&(this.#k(this.#d),this.#d=null),this.#y&&(this.#y.destroy(),this.#y=null),this.#g&&this.#g.destroy(),this.#n=[],this.#r=null,this.#a.clear(),this.#l.clear()}async start(){if(this.#S||this.#v||!B(this.#e.open))return;this.#S=!0;const C=this.#u.begin("stream");this.#Ce(),this.#$e();let M;try{M=this.#e.open({sort:this.#ke("sort",[]),filters:this.#ke("filters",null),quick:this.#ke("quick","")||void 0,context:this.#ke("context",null),signal:C.signal})}catch(E){this.#xe("source:error",{error:E});return}const L=B(M[Symbol.asyncIterator])?M[Symbol.asyncIterator]():M[Symbol.iterator]();this.#_=L;try{for(;;){const E=await L.next();if(!C.current||this.#v)return;if(E.done){this.#le();return}if(await this.#me(E.value,C),!C.current||this.#v)return;if(E.value&&E.value.done){this.#le();return}if(await this.#oe(),!C.current||this.#v)return}}catch(E){if(u(E))return;this.#xe("source:error",{error:E})}finally{C.settle()}}progress(){return{loaded:this.#c.loaded,estimated:this.#c.estimated,done:this.#w,live:this.#O,evicted:this.#P}}promoted(){return this.#g!==null}memorySource(){return this.#g}invalidateHandles(){const C=this.#we();C&&(B(C.invalidateHandles)&&C.invalidateHandles(),B(C.invalidate)&&C.invalidate("sort"))}renderCount(){return this.#f}ingestStats(){return{worker:this.#q,inline:this.#$,storeBacked:this.#D}}#me(C,M){if(!C)return;const L=C.rows;if(L&&L.length&&this.#Te(L))return this.#ne(C,M);const E=D();L&&L.length&&(this.#I(L),this.#$++),this.#se(C),this.#h+=D()-E,this.#fe()}#se(C){this.#c.loaded=C.progress&&typeof C.progress.loaded=="number"?C.progress.loaded:this.#n.length,C.progress&&typeof C.progress.estimated=="number"&&(this.#c.estimated=C.progress.estimated)}#Te(C){if(this.#W||this.#g)return!1;const M=this.#K();if(!M)return!1;const L=this.#t.store;if(!L||!B(L.appendPacked))return!1;const E=this.#Z();return!E||!d(E)?(this.#W=!0,z("source.stream.ingest-worker","stream ingest.useWorker is on but a column reads through a closure (a computed or date column); columnizing on the main thread instead."),!1):C.length<M.threshold?!1:!this.#te(C)}#te(C){if(!this.#s.keyed)return!1;const M=new Set;for(let L=0;L<C.length;L++){const E=this.#s.keyOf(C[L],this.#n.length+L);if(E!=null){if(M.has(E)||this.#a.has(E))return!0;M.add(E)}}return!1}async#ne(C,M){const L=C.rows,E=this.#K(),I=this.#Z();let R;try{R=await E.columnize(I,L,{key:"ingest:stream",signal:M&&M.signal})}catch(q){if(u(q)||(_("source.stream.columnize","worker columnization failed; columnizing on the main thread",q),this.#W=!0,M&&(!M.current||this.#v)))return;this.#I(L),this.#$++,this.#se(C),this.#fe();return}if(M&&(!M.current||this.#v))return;const k=this.#t.store,y=this.#D?void 0:L,{from:T}=k.appendPacked(R,y),V=R.count|0;for(let q=0;q<V;q++){const Y=T+q,J=L[q],ee=this.#s.keyed?this.#s.keyOf(J,Y):null;if(this.#n[Y]=this.#D?s:J,this.#O++,this.#ie(Y,J),ee!==null&&this.#a.set(ee,Y),!this.#r||!this.#Y(Y))continue;const ne=this.#R(Y);this.#r.insert(ne,Y),ne<=this.#p&&this.#m++}this.#A=!0,this.#ee(),this.#q++,this.#se(C),this.#fe()}#K(){const C=this.#t.ingestWorker;return B(C)?C():null}#Z(){const C=this.#t.storeSchema;return B(C)?C():null}#I(C){const M=[],L=this.#t.store,E=new Array(C.length),I=[],R=new Set;for(let y=0;y<C.length;y++){const T=this.#s.keyed?this.#s.keyOf(C[y],this.#n.length+I.length):null;E[y]=T,!(T!==null&&(this.#a.has(T)||R.has(T)))&&(T!==null&&R.add(T),I.push(C[y]))}let k=I.length&&L&&B(L.append)?L.append(I).from:this.#n.length;for(let y=0;y<C.length;y++){const T=C[y],V=E[y];if(V!==null&&this.#a.has(V)){const J=this.#a.get(V),ee=this.#Ue(J);this.#D||(this.#n[J]=T,L&&B(L.setSource)&&L.setSource(J,T)),this.#We(J,T),this.#l.delete(J),this.#ie(J,T),this.#J(J,ee);continue}const q=k++;if(this.#n[q]=this.#D?s:T,this.#O++,this.#ie(q,T),V!==null&&this.#a.set(V,q),M.push(q),!this.#r||!this.#Y(q))continue;const Y=this.#R(q);this.#r.insert(Y,q),Y<=this.#p&&this.#m++}return this.#A=!0,this.#ee(),M}#Ne(C){const M=this.#n[C];let L=!1;if(this.#r){const k=this.#Pe(C);k>=0&&k<=this.#p&&(L=!0)}else C<=this.#p&&(L=!0);const E=M===s?this.#Se(C):M,I=this.#s.keyed?this.#s.keyOf(E,C):null;I!==null&&this.#a.get(I)===C&&this.#a.delete(I),this.#n[C]=void 0,this.#E&&(this.#E[C]=NaN),this.#l.delete(C);const R=this.#t.store;return R&&B(R.remove)&&R.remove(C),this.#O--,L}#ee(){let C=0,M=0;const L=this.#ce();C+=L.dropped,M+=L.aboveAnchor;const E=this.#ae();C+=E.dropped,M+=E.aboveAnchor,C&&(this.#A=!0,this.#P+=C,this.#Ce(),this.#m-=M,this.#xe("stream:evicted",{evicted:C,total:this.#P,live:this.#O}))}#ae(){const C=this.#e.maxRows;if(!Number.isFinite(C)||C<=0||this.#O<=C)return{dropped:0,aboveAnchor:0};const M=Math.max(1,Math.floor(C*(1-w)));let L=0,E=0;for(;this.#O>M&&this.#M<this.#n.length;){const I=this.#M++;this.#n[I]!==void 0&&(this.#Ne(I)&&E++,L++)}return{dropped:L,aboveAnchor:E}}#ce(){const C=this.#V();if(!C||!this.#E||!this.#he())return{dropped:0,aboveAnchor:0};const M=Date.now()-C;let L=0,E=0,I=1/0;for(let R=this.#M;R<this.#n.length;R++){if(this.#n[R]===void 0)continue;const k=this.#E[R];if(!(Number.isNaN(k)||k===void 0)){if(k>=M){k<I&&(I=k);continue}this.#Ne(R)&&E++,L++}}for(this.#T=I,this.#N=!1;this.#M<this.#n.length&&this.#n[this.#M]===void 0;)this.#M++;return{dropped:L,aboveAnchor:E}}#Pe(C){if(!this.#r)return C;for(let M=0;M<this.#r.length;M++)if(this.#r.at(M)===C)return M;return-1}#Ce(){this.#o=this.#ke("sort",[]),this.#i=this.#ke("filters",null);const C=Number.isFinite(this.#e.maxRows)&&this.#e.maxRows>0||this.#V()>0,M=this.#ke("where",null),L=(this.#t.config||{}).hostFilter,E=!!(M&&M.active)||!!(L&&B(L.active)&&L.active());if(!(C||this.#o.length>0||!!this.#i||!!this.#ke("quick","")||E)){this.#r=null;return}this.#r=new n(Math.max(64,this.#n.length+64));for(let R=0;R<this.#n.length;R++)this.#n[R]!==void 0&&this.#Y(R)&&this.#r.insert(this.#R(R),R)}#Y(C){const M=this.#Se(C);if(this.#i&&!this.#F(this.#i,M))return!1;const L=String(this.#ke("quick","")||"").toLowerCase();if(L&&!this.#Ge(M).includes(L))return!1;const E=(this.#t.config||{}).hostFilter;if(E&&B(E.active)&&E.active()&&!E.passes(this.#Oe(C)))return!1;const I=this.#ke("where",null);if(I&&I.active){const R=this.#Oe(C);if(!I.passes(R.data,R.key))return!1}return!0}#F(C,M){if(!C)return!0;const L=C;if(Array.isArray(L.conditions))return L.op==="or"?L.conditions.some(R=>this.#F(R,M)):L.op==="not"?!L.conditions.some(R=>this.#F(R,M)):L.conditions.every(R=>this.#F(R,M));const E=C,I=(this.#t.compute||{}).testValue;return B(I)?!!I(this.#Re(M,E.col),E,(this.#t.config||{}).locale):(_("source.stream.testValue","ctx.compute.testValue is unavailable; streamed rows are not filtered client-side."),!0)}#Ue(C){if(!this.#r)return-1;if(!this.#o.length)return this.#Pe(C);let M=0,L=this.#r.length;for(;M<L;){const E=M+L>>>1;this.#G(this.#r.at(E),C)<0?M=E+1:L=E}for(let E=M;E<this.#r.length;E++){const I=this.#r.at(E);if(I===C)return E;if(this.#G(I,C)>0)break}return this.#Pe(C)}#J(C,M){if(!this.#r||!this.#o.length)return;const L=this.#Y(C);if(M>=0&&this.#r.at(M)===C)this.#r.removeAt(M),M<=this.#p&&this.#m--;else if(M>=0)return;if(!L)return;const E=this.#R(C);this.#r.insert(E,C),E<=this.#p&&this.#m++}#R(C){if(!this.#r||!this.#o.length)return this.#r?this.#r.length:0;let M=0,L=this.#r.length;for(;M<L;){const E=M+L>>>1;this.#G(C,this.#r.at(E))<0?L=E:M=E+1}return M}#G(C,M){const L=this.#Se(C),E=this.#Se(M);for(const I of this.#o){const R=this.#Ze(I.col),k=this.#Re(L,I.col),y=this.#Re(E,I.col),V=(R&&R.value&&B(R.value.compare)?R.value.compare:H)(k,y);if(V!==0)return I.dir==="desc"?-V:V}return 0}#le(){this.#w=!0,this.#c.loaded=this.#c.loaded||this.#n.length;const C=typeof this.#e.promoteToMemoryBelow=="number"?this.#e.promoteToMemoryBelow:h;!this.#D&&this.#n.length<C&&(this.#g=l({mode:"memory",rows:this.#n},this.#t),this.#x!==null&&(clearInterval(this.#x),this.#x=null),this.#y&&(this.#y.destroy(),this.#y=null)),this.#fe(),this.#xe("stream:end",{loaded:this.#n.length,promoted:this.#g!==null,threshold:C})}#fe(){this.#d!==null||this.#v||(this.#d=this.#ve(()=>{this.#d=null,this.#f++;const C=this.#m;this.#m=0,this.#h=0,this.#xe("stream:chunk",{loaded:this.#c.loaded,estimated:this.#c.estimated,count:this.count(),renders:this.#f}),this.#xe("model:changed",{reason:"stream",shiftAboveViewport:C,anchor:this.#p}),this.#xe("rows:changed",{companion:!0,reason:"stream"})}))}#oe(){return this.#f===0||this.#h<this.#ge()?Promise.resolve():(this.#h=0,new Promise(C=>{const M=(this.#t.scheduler||{}).idle;B(M)?M(()=>C()):G(()=>C())}))}#ge(){return typeof this.#e.coalesceMs=="number"&&this.#e.coalesceMs>0?this.#e.coalesceMs:p}#ve(C){const M=this.#t.scheduler||{};return B(M.frame)?M.frame(C):K(C)}#k(C){const M=this.#t.scheduler||{};B(M.cancel)?M.cancel(C):Q(C)}#Se(C){const M=this.#n[C];if(M!==void 0&&M!==s)return M;if(M===void 0)return;const L=this.#t.store;return L&&B(L.source)?L.source(C):void 0}#We(C,M){const L=this.#t.store;if(!L||!B(L.set))return;const E=this.#Z();if(Array.isArray(E))for(const I of E){if(!I||!I.id)continue;const R=B(I.read)?I.read:k=>v(k,I.field||I.id);L.set(I.id,C,R(M))}}#Oe(C){let M=this.#l.get(C);return M||(M=this.#s.leaf(this.#Se(C),C),this.#l.set(C,M)),M}#Re(C,M){const L=this.#Ze(M);return L&&B(L.getValue)?L.getValue(C):C?.[M]}#Ge(C){const M=this.#t.columns,L=M&&B(M.all)?M.all():[],E=[];for(const I of L){const R=B(I.getValue)?I.getValue(C):void 0;R!=null&&R!==""&&E.push(String(R))}return E.join(" ").toLowerCase()}#Ze(C){const M=this.#t.columns;return M&&B(M.get)?M.get(C):void 0}#He(){const C=this.#_;if(this.#_=null,C&&B(C.return))try{C.return()}catch{}}#_e(){return i({context:this.#ke("context",null)})}#ke(C,M){const L=this.#t.state;if(L&&B(L[C])){const E=L[C]();return E??M}return M}#xe(C,M){const L=this.#t.emit;B(L)&&L(C,M)}}}),$e("packages/core/src/source/url.js",function(e,W){"use strict";Object.defineProperty(e,"DEFAULT_URL_BATCH",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"createUrlSource",{enumerable:!0,get:function(){return v}});const Z=W("packages/core/src/internal/util.js"),$=Z.warnOnce,B=Z.isObject,D=Z.isFunction,K=Z.getPath,G=W("packages/core/src/source/abort.js").isAbortError,H=500,_=new Set(["application/x-ndjson","application/ndjson","application/jsonlines","application/jsonl","application/x-jsonlines","text/x-ndjson"]),z=Symbol("lattice.url.skip");function v(d,h={}){const s=B(h)?h:{},p=D(s.fetch)?s.fetch:typeof globalThis<"u"&&D(globalThis.fetch)?globalThis.fetch:null,w=s.format==="json"||s.format==="ndjson"?s.format:void 0,A=typeof s.rowsPath=="string"&&s.rowsPath?s.rowsPath:void 0,P=D(s.map)?s.map:void 0,b=B(s.headers)?s.headers:void 0,O=Number.isFinite(s.batchSize)&&s.batchSize>0?Math.floor(s.batchSize):H,x=s.lenient===!0,j=Number.isFinite(s.poll)&&s.poll>0?Math.floor(s.poll):void 0,F=typeof d=="string"&&d.length>0;F||$("source.url.url","createUrlSource needs a URL string; the grid will stay empty.");async function*C(L={}){if(!F)return;if(!p)throw new Error("[lattice] createUrlSource: no fetch available — pass opts.fetch or run where globalThis.fetch exists.");const E=L&&L.signal;let I;try{I=await p(d,b?{signal:E,headers:b}:{signal:E})}catch(y){throw G(y)?y:new Error(`[lattice] createUrlSource: request to ${d} failed — ${y&&y.message||y}`)}if(!I||!I.ok){const y=I?I.status:"no response";throw new Error(`[lattice] createUrlSource: ${y} for ${d}`)}const R=S(d,w,I),k=I.body&&D(I.body.getReader)?I.body.getReader():null;try{if(!k){const V=await I.text();(R||f(V,d))==="ndjson"?yield*l(null,null,V,0,I,d,O,x):yield*o(V,d,A,P);return}const y=new TextDecoder("utf-8");if(R==="json"){yield*o(await n(k,y,""),d,A,P);return}if(R==="ndjson"){yield*l(k,y,"",0,I,d,O,x);return}const T=await a(k,y,d);T.format==="json"?yield*o(await n(k,y,T.seed),d,A,P):yield*l(k,y,T.seed,T.bytes,I,d,O,x)}finally{if(k&&D(k.cancel))try{await k.cancel()}catch{}}}const M={mode:"stream",open:C,autoStart:s.autoStart!==!1};return j!==void 0&&(M.poll=j),Number.isFinite(s.maxRows)&&(M.maxRows=s.maxRows),Number.isFinite(s.maxAge)&&(M.maxAge=s.maxAge),(typeof s.ageBy=="string"||D(s.ageBy))&&(M.ageBy=s.ageBy),Number.isFinite(s.coalesceMs)&&(M.coalesceMs=s.coalesceMs),Number.isFinite(s.promoteToMemoryBelow)&&(M.promoteToMemoryBelow=s.promoteToMemoryBelow),M}function S(d,h,s){if(h)return h;const p=g(d);if(p)return p;const w=s&&s.headers&&D(s.headers.get)?s.headers.get("content-type"):null;return u(w)}function g(d){const h=String(d).split(/[?#]/)[0].toLowerCase();if(h.endsWith(".ndjson")||h.endsWith(".jsonl"))return"ndjson";if(h.endsWith(".json"))return"json"}function u(d){if(!d)return;const h=d.split(";")[0].trim().toLowerCase();if(_.has(h))return"ndjson";if(h==="application/json"||h==="text/json"||h.endsWith("+json"))return"json"}function f(d,h){const s=d.replace(/^\s+/,""),p=r(s);if(p==="error")throw new Error(`[lattice] createUrlSource: could not tell JSON from NDJSON for ${h} — pass opts.format: 'json' | 'ndjson'.`);return p}async function a(d,h,s){let p="",w=0;for(;;){const{value:P,done:b}=await d.read();if(P&&(w+=P.byteLength,p+=h.decode(P,{stream:!0})),b){p+=h.decode();break}const O=p.replace(/^\s+/,"");if(O){if(O[0]==="[")return{format:"json",seed:p,bytes:w};if(O[0]!=="{"||p.indexOf(`
|
|
8
8
|
`)!==-1)break}}const A=r(p.replace(/^\s+/,""));if(A==="error")throw new Error(`[lattice] createUrlSource: could not tell JSON from NDJSON for ${s} — pass opts.format: 'json' | 'ndjson'.`);return{format:A,seed:p,bytes:w}}function r(d){if(!d||d[0]==="[")return"json";if(d[0]!=="{")return"error";const h=d.indexOf(`
|
|
9
9
|
`);if(h===-1)return"json";let s=d.slice(0,h);return s.endsWith("\r")&&(s=s.slice(0,-1)),t(s)?"ndjson":"json"}function t(d){try{return JSON.parse(d),!0}catch{return!1}}async function n(d,h,s){let p=s;for(;;){const{value:w,done:A}=await d.read();if(w&&(p+=h.decode(w,{stream:!0})),A)break}return p+=h.decode(),p}function*o(d,h,s,p){let w;try{w=JSON.parse(d)}catch(P){throw new Error(`[lattice] createUrlSource: ${h} is not valid JSON — ${P.message}`)}let A=s!==void 0?K(w,s):w;if(p&&(A=p(A)),!Array.isArray(A)){const P=s!==void 0||p?"":"; pass opts.rowsPath or opts.map to select the array";throw new Error(`[lattice] createUrlSource: ${h} did not resolve to an array${P}.`)}yield{rows:A,progress:{loaded:A.length,estimated:A.length}}}async function*l(d,h,s,p,w,A,P,b){const O=m(w);let x=s||"",j=p||0,F=0,C=0,M=[];function*L(){let I;for(;(I=x.indexOf(`
|
|
@@ -308,6 +308,6 @@ ${ee}[data-heat-side="low"]{background-color:color-mix(in srgb, var(--lattice-va
|
|
|
308
308
|
@scope ([data-theme="dark"]){:scope.${Z},.${Z}{color-scheme:dark}}
|
|
309
309
|
@scope ([data-theme="light"],[data-theme="auto"]){:scope.${Z},.${Z}{color-scheme:light}}
|
|
310
310
|
@media (prefers-color-scheme:dark){@scope ([data-theme="auto"]){:scope.${Z},.${Z}{color-scheme:dark}}}
|
|
311
|
-
`.trim()}function D(K){const Q=K&&K.documentElement;if(!Q||Q.getAttribute($))return;Q.setAttribute($,"1");const G=K.createElement("style");G.textContent=B(),(K.head||K.body||Q).appendChild(G)}}),$e("packages/modules/calendar/view.js",function(e,W){"use strict";Object.defineProperty(e,"FALLBACK_EN",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"renderCalendar",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"stopNowTimer",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(e,"showCardError",{enumerable:!0,get:function(){return he}}),Object.defineProperty(e,"stopReschedule",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(e,"announce",{enumerable:!0,get:function(){return we}}),Object.defineProperty(e,"renderCell",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"renderHeader",{enumerable:!0,get:function(){return i}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.escapeHtml,D=W("packages/modules/calendar/styles.js"),K=D.NS,Q=D.injectStyles,G=W("packages/modules/calendar/model.js"),H=G.fieldText,_=G.formatTime,z=G.titleFor,v=G.cssId,S=G.isTimeView,g=G.wallClock,u=G.nowAt,f=G.minutesToClock,a=G.isoWeekNumber,r=G.dayKeyOf,t=G.shiftDays,n=G.shiftMinutes,o=Object.freeze({"calendar.calendar":"Calendar","calendar.today":"Today","calendar.week":"Week","calendar.month":"Month","calendar.more":"more","calendar.prev":"‹","calendar.next":"›","calendar.allDay":"all-day","calendar.event":{one:"event",other:"events"},"calendar.moved":"moved","calendar.movedTo":"moved to {label}","calendar.reverted":"reverted"});function l(oe,pe){const Oe=o[oe];if(!Oe)return oe;const Ne=pe&&typeof pe.count=="number"?pe.count:NaN;return(typeof Oe=="string"?Oe:(Ne===1?Oe.one:Oe.other)||Oe.other).replace(/\{(\w+)\}/g,(ue,me)=>pe&&me in pe?String(pe[me]):ue)}function c(oe,pe,Oe){const Ne=oe&&oe.config?oe.config:{},de=Ne.messages&&$(Ne.messages.t)&&Ne.messages||Ne.grid&&Ne.grid.messages&&$(Ne.grid.messages.t)&&Ne.grid.messages||null;if(de){let ue;try{ue=de.t(pe,Oe)}catch{ue=null}if(typeof ue=="string"&&ue&&ue!==pe)return ue}return l(pe,Oe)}function i(oe){const{ctx:pe,doc:Oe}=oe,Ne=Oe.createElement("div");Ne.className=`${K}__header`;const de=pe.header.navigation!==!1,ue=pe.header.title!==!1,me=pe.header.views!==!1;if(de){const Ae=Oe.createElement("div");Ae.className=`${K}__nav`,Ae.appendChild(m(oe,"prev",oe.ctx.labels.prev??c(oe,"calendar.prev"))),Ae.appendChild(m(oe,"today",oe.ctx.labels.today??c(oe,"calendar.today"))),Ae.appendChild(m(oe,"next",oe.ctx.labels.next??c(oe,"calendar.next"))),Ne.appendChild(Ae)}if(ue){const Ae=Oe.createElement("div");Ae.className=`${K}__title`,Ae.setAttribute("aria-live","polite"),Ae.textContent=z(pe.locale,oe.model.range,pe.date),Ne.appendChild(Ae)}if(me){const Ae=Oe.createElement("div");Ae.className=`${K}__nav`,Ae.appendChild(d(oe,"week",oe.ctx.labels.week??c(oe,"calendar.week"))),Ae.appendChild(d(oe,"month",oe.ctx.labels.month??c(oe,"calendar.month"))),Ne.appendChild(Ae)}return Ne}function m(oe,pe,Oe){const Ne=oe.doc.createElement("button");return Ne.className=`${K}__button`,Ne.setAttribute("type","button"),Ne.setAttribute("data-action",pe),Ne.textContent=Oe,Ne}function d(oe,pe,Oe){const Ne=oe.doc.createElement("button");return Ne.className=`${K}__button`,Ne.setAttribute("type","button"),Ne.setAttribute("data-view",pe),Ne.setAttribute("aria-pressed",oe.model.range.view===pe?"true":"false"),Ne.textContent=Oe,Ne}function h(oe){const{ctx:pe,doc:Oe}=oe,Ne=Oe.createElement("div");Ne.className=`${K}__grid`,Ne.setAttribute("role","row");const de=new Intl.DateTimeFormat(pe.locale||void 0,{weekday:"short"}),ue=pe.firstDay;for(let me=0;me<7;me++){const Ae=(ue+me)%7,Me=new Date(2026,1,1+Ae),Ie=Oe.createElement("div");Ie.className=`${K}__weekday`,Ie.setAttribute("role","columnheader"),Ie.textContent=de.format(Me),Ne.appendChild(Ie)}return Ne}function s(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__cell`,de.setAttribute("role","gridcell"),de.setAttribute("data-day",pe.key),pe.inRange||de.setAttribute("data-outside","true"),w(pe.key)&&de.setAttribute("data-today","true"),de.setAttribute("aria-label",p(oe,pe));const ue=Ne.createElement("div");ue.className=`${K}__daynum`,ue.textContent=String(pe.dayNumber),de.appendChild(ue);const me=Ne.createElement("ul");me.className=`${K}__cards`,me.setAttribute("role","presentation");const Ae=Oe.dayMaxEvents===!1?1/0:Oe.dayMaxEvents,Me=pe.cards.slice(0,Ae);for(const Ie of Me)me.appendChild(A(oe,Ie,pe.key));if(de.appendChild(me),pe.cards.length>Me.length){const Ie=Ne.createElement("button");Ie.className=`${K}__more`,Ie.setAttribute("type","button"),Ie.setAttribute("data-day",pe.key),Ie.textContent=`+${pe.cards.length-Me.length} ${oe.ctx.labels.more??c(oe,"calendar.more")}`,de.appendChild(Ie)}return de}function p(oe,pe){const Oe=new Intl.DateTimeFormat(oe.ctx.locale||void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric"}).format(pe.date),Ne=pe.cards.length;return`${Oe}, ${Ne} ${oe.ctx.labels.event??c(oe,"calendar.event",{count:Ne})}`}function w(oe){const pe=new Date,Oe=pe.getFullYear(),Ne=String(pe.getMonth()+1).padStart(2,"0"),de=String(pe.getDate()).padStart(2,"0");return oe===`${Oe}-${Ne}-${de}`}function A(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);return ue||(ue=de.createElement("li"),ue.className=`${K}__card`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),pe.span?(ue.setAttribute("data-continuing","true"),ue.setAttribute("data-continues-before",pe.continuesBefore?"true":"false"),ue.setAttribute("data-continues-after",pe.continuesAfter?"true":"false")):(ue.removeAttribute("data-continuing"),ue.removeAttribute("data-continues-before"),ue.removeAttribute("data-continues-after")),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly"),P(oe,pe,ue),ue}function P(oe,pe,Oe){if(oe.ctx.renderCard){const me=oe.ctx.renderCard(pe.row,Oe,{key:pe.key,calendar:oe});typeof me=="string"?Oe.innerHTML=me:me&&me.nodeType&&Oe.replaceChildren(me);return}const Ne=[];pe.start&&Ne.push(`<span class="${K}__time">${B(_(oe.ctx.locale,pe.start))}</span>`);const de=H(oe.ctx,pe.row,pe.key,oe.ctx.card.title??"title");de&&Ne.push(`<span class="${K}__card-title">${B(de)}</span>`);const ue=H(oe.ctx,pe.row,pe.key,oe.ctx.card.subtitle);ue&&Ne.push(`<span class="${K}__card-subtitle">${B(ue)}</span>`),Oe.innerHTML=Ne.join("")}function b(oe){const{el:pe,ctx:Oe,doc:Ne}=oe;if(!pe)return;for(Q(Ne),Le(oe),pe.classList.add(K),pe.setAttribute("role","grid"),pe.setAttribute("aria-label",Oe.ariaLabel||oe.ctx.labels.calendar||c(oe,"calendar.calendar")),oe.isReadonly({})?pe.setAttribute("data-readonly","true"):pe.removeAttribute("data-readonly");pe.firstChild;)pe.removeChild(pe.firstChild);Oe.header!==!1&&pe.appendChild(i(oe));const de=S(Oe.view);oe._timeView!==de&&(oe._timeView=de,oe.cardEls.clear()),de?M(oe,pe):pe.appendChild(O(oe));const ue=Ne.createElement("div");ue.className=`${K}__live`,ue.setAttribute("aria-live","polite"),ue.setAttribute("role","status"),pe.appendChild(ue),oe.live=ue,se(oe),oe.wired||(te(oe),oe.wired=!0),ee(oe)}function O(oe){const{doc:pe}=oe,Oe=pe.createElement("div");Oe.className=`${K}__body`,Oe.appendChild(h(oe));const Ne=pe.createElement("div");Ne.className=`${K}__grid`,Ne.setAttribute("role","rowgroup");const de=x(oe);for(let ue=0;ue<oe.model.days.length;ue++){const me=s(oe,oe.model.days[ue]);me.style.gridColumn=String(ue%7+1),me.style.gridRow=String(Math.floor(ue/7)+1);const Ae=de.laneCountAt(Math.floor(ue/7));Ae&&me.style.setProperty("--lat-calendar-span-lanes",String(Ae)),Ne.appendChild(me)}for(const ue of de.items)Ne.appendChild(j(oe,ue.seg,ue.index,ue.lane));return Oe.appendChild(Ne),Oe}function x(oe){const pe=[];for(let de=0;de<oe.model.days.length;de++)for(const ue of oe.model.days[de].spans){const me=Math.floor(de/7);(pe[me]||(pe[me]=[])).push({seg:ue,index:de})}const Oe=[];for(const de of pe){if(!de)continue;de.sort((me,Ae)=>me.index%7-Ae.index%7||Ae.seg.length-me.seg.length);const ue=[];for(const me of de){const Ae=me.index%7;let Me=0;for(;Me<ue.length&&ue[Me]>Ae;)Me++;me.lane=Me,ue[Me]=Ae+me.seg.length,Oe.push(me)}}const Ne=pe.map(de=>de?de.reduce((ue,me)=>Math.max(ue,me.lane+1),0):0);return{items:Oe,laneCountAt:de=>Ne[de]||0}}function j(oe,pe,Oe,Ne=0){const{ctx:de,doc:ue}=oe,me=ue.createElement("div");me.className=`${K}__span`,me.setAttribute("role","button"),me.setAttribute("tabindex","-1"),me.setAttribute("data-key",String(pe.key)),me.style.gridColumn=`${Oe%7+1} / span ${pe.length}`,me.style.gridRow=String(Math.floor(Oe/7)+1),Ne&&me.style.setProperty("--lat-calendar-span-lane",String(Ne)),pe.continuesBefore&&me.setAttribute("data-continues-before","true"),pe.continuesAfter&&me.setAttribute("data-continues-after","true"),pe.color&&(me.setAttribute("data-accent",""),me.style.borderLeftColor=pe.color),oe.isReadonly({day:pe.day,card:pe.key})&&me.setAttribute("data-readonly","true");const Ae=H(de,pe.row,pe.key,de.card.title??"title");return me.textContent=Ae||String(pe.key),me}function F(oe){const pe=[],Oe=oe.slotDuration||1,Ne=Math.max(1,Math.ceil((oe.slotMaxTime-oe.slotMinTime)/Oe));for(let de=0;de<Ne;de++)pe.push(oe.slotMinTime+de*Oe);return pe}function C(oe,pe){const Oe=oe.ctx.slotMaxTime-oe.ctx.slotMinTime||1;return`${(pe-oe.ctx.slotMinTime)/Oe*100}%`}function M(oe,pe){const{doc:Oe}=oe,Ne=oe.model.days,de=Oe.createElement("div");de.className=`${K}__time`;const ue=Oe.createElement("div");ue.className=`${K}__time-head`,ue.appendChild(L(oe));const me=Oe.createElement("div");me.className=`${K}__time-cols`,me.style.setProperty("--cal-cols",String(Ne.length));for(const Me of Ne)me.appendChild(E(oe,Me));ue.appendChild(me),de.appendChild(ue);const Ae=I(oe,Ne);Ae&&de.appendChild(Ae),de.appendChild(k(oe,Ne)),pe.appendChild(de),V(oe)}function L(oe){const pe=oe.doc.createElement("div");return pe.className=`${K}__time-corner`,oe.ctx.weekNumbers&&(pe.textContent=String(a(oe.model.range.start))),pe}function E(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__time-colhead`,de.setAttribute("data-day",pe.key),w(pe.key)&&de.setAttribute("data-today","true");const ue=Oe.locale||void 0,me=new Intl.DateTimeFormat(ue,{weekday:"short"}).format(pe.date),Ae=String(pe.date.getDate());if(Oe.view==="day"){const Me=new Intl.DateTimeFormat(ue,{month:"short"}).format(pe.date);de.textContent=`${me} ${Ae} ${Me}`}else de.textContent=`${me} ${Ae}`;return de}function I(oe,pe){const{ctx:Oe,doc:Ne}=oe;let de=!1;for(const We of pe)if(We.allDay&&We.allDay.length||We.spans&&We.spans.length){de=!0;break}if(!de)return null;const ue=Ne.createElement("div");ue.className=`${K}__time-all`;const me=Ne.createElement("div");me.className=`${K}__time-corner`,me.textContent=Oe.labels.allDay??c(oe,"calendar.allDay"),ue.appendChild(me);const Ae=Ne.createElement("div");Ae.className=`${K}__time-cols`,Ae.style.setProperty("--cal-cols",String(pe.length));const Me=x(oe),Ie=Me.laneCountAt(0);Ie&&Ae.style.setProperty("--lat-calendar-span-lanes",String(Ie));for(const We of Me.items)Ae.appendChild(j(oe,We.seg,We.index,We.lane));for(let We=0;We<pe.length;We++){const Ue=Ne.createElement("div");Ue.className=`${K}__allcell`,Ue.style.gridColumn=String(We+1),Ue.style.gridRow="2";for(const Te of pe[We].allDay)Ue.appendChild(R(oe,Te,pe[We].key));Ae.appendChild(Ue)}return ue.appendChild(Ae),ue}function R(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);ue||(ue=de.createElement("div"),ue.className=`${K}__allcard`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly");const me=H(Ne,pe.row,pe.key,Ne.card.title??"title");return ue.textContent=me||String(pe.key),ue}function k(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__time-body`;const ue=Ne.createElement("div");ue.className=`${K}__time-axis`,ue.setAttribute("aria-hidden","true");for(const Ae of F(Oe)){const Me=Ne.createElement("div");Me.className=`${K}__slotlabel`,Me.textContent=f(Ae),ue.appendChild(Me)}de.appendChild(ue);const me=Ne.createElement("div");me.className=`${K}__time-cols`,me.style.setProperty("--cal-cols",String(pe.length));for(const Ae of pe)me.appendChild(q(oe,Ae));return de.appendChild(me),de}const y=48;function T(oe){const pe=oe.ctx.slotDuration||1;return oe.ctx.scrollTime/pe*y}function V(oe){if(!oe.el)return;const pe=oe.el.querySelector(`.${K}__time-body`);if(!pe)return;const Oe=T(oe);pe.scrollTop=Oe;const Ne=oe.doc&&oe.doc.defaultView,de=Ne&&$(Ne.requestAnimationFrame)||typeof globalThis<"u"&&$(globalThis.requestAnimationFrame);$(de)&&de(()=>{pe.scrollTop=Oe})}function q(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__daycol`,de.setAttribute("data-day",pe.key);const ue=Ne.createElement("div");ue.className=`${K}__slots`;const me=Oe.slotDuration||1,Ae=Math.max(1,Math.ceil((Oe.slotMaxTime-Oe.slotMinTime)/me));for(let Ie=0;Ie<Ae;Ie++){const We=Ne.createElement("div");We.className=`${K}__slot`,ue.appendChild(We)}if(Oe.businessHours&&Oe.businessHours.daysOfWeek.includes(pe.weekday)){const Ie=Ne.createElement("div");Ie.className=`${K}__busy`,Ie.style.top=C(oe,Oe.businessHours.start),Ie.style.height=`${(Oe.businessHours.end-Oe.businessHours.start)/(Oe.slotMaxTime-Oe.slotMinTime||1)*100}%`,ue.appendChild(Ie)}for(const Ie of pe.timed)ue.appendChild(Y(oe,Ie,pe.key));const Me=u(new Date,Oe.timeZone);if(Me.dayKey===pe.key){const Ie=Ne.createElement("div");Ie.className=`${K}__now`,Ie.setAttribute("data-now","true"),Ie.style.top=C(oe,Me.minutes),ue.appendChild(Ie)}return de.appendChild(ue),de}function Y(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);ue||(ue=de.createElement("div"),ue.className=`${K}__event`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),ue.style.top=C(oe,pe.startMin),ue.style.height=`${(pe.endMin-pe.startMin)/(Ne.slotMaxTime-Ne.slotMinTime||1)*100}%`,ue.style.left=`${pe.col/pe.cols*100}%`,ue.style.width=`${1/pe.cols*100}%`,pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly");const me=J(oe,pe.startMin,pe.endMin);ue.setAttribute("aria-label",me);const Ae=H(Ne,pe.row,pe.key,Ne.card.title??"title");return ue.innerHTML=`${B(me)} <span class="${K}__event-title">${B(Ae||String(pe.key))}</span>`,ue}function J(oe,pe,Oe){return`${f(pe)} – ${f(Oe)}`}function ee(oe){if(ne(oe),!oe.el||!S(oe.ctx.view))return;let pe=u(new Date,oe.ctx.timeZone).dayKey;oe._nowTimer=setInterval(()=>{const Oe=u(new Date,oe.ctx.timeZone);if(Oe.dayKey!==pe){pe=Oe.dayKey,b(oe);return}const Ne=oe.el.querySelector(`.${K}__daycol[data-day="${v(Oe.dayKey)}"] .${K}__now`);Ne&&(Ne.style.top=C(oe,Oe.minutes))},6e4),oe._nowTimer&&typeof oe._nowTimer.unref=="function"&&oe._nowTimer.unref()}function ne(oe){oe._nowTimer&&(clearInterval(oe._nowTimer),oe._nowTimer=null)}const ie=`.${K}__card, .${K}__event, .${K}__allcard`;function se(oe){const pe=oe.el.querySelector(ie);pe&&pe.setAttribute("tabindex","0")}function we(oe){if(!oe.live)return;const pe=z(oe.ctx.locale,oe.model.range,oe.ctx.date),Oe=oe.rows.count;oe.live.textContent=`${pe}, ${Oe} ${oe.ctx.labels.event??c(oe,"calendar.event",{count:Oe})}`}function he(oe,pe,Oe){if(!oe.el||!oe.doc)return;let Ne=oe.cardEls.get(pe);if(!Ne){const ue=String(pe).replace(/["\\]/g,me=>`\\${me}`);Ne=oe.el.querySelector(`[data-key="${ue}"]`)}if(!Ne||!Ne.parentNode)return;const de=oe.doc.createElement("div");de.className=`${K}__error`,de.setAttribute("role","status"),de.textContent=Oe,Ne.parentNode.insertBefore(de,Ne),oe.live&&(oe.live.textContent=Oe)}function te(oe){const{el:pe}=oe,Oe=[];oe._listeners=Oe;const Ne=(de,ue)=>{pe.addEventListener(de,ue),Oe.push({type:de,fn:ue})};Ne("click",de=>{if(de.target&&de.target.closest){const me=de.target.closest("[data-action]");if(me){const Ie=me.dataset.action;Ie==="prev"?oe.prev():Ie==="next"?oe.next():Ie==="today"&&oe.today();return}const Ae=de.target.closest("[data-view]");if(Ae){oe.setView(Ae.dataset.view);return}const Me=de.target.closest(`.${K}__more`);if(Me){Se(oe,Me.dataset.day,Me);return}}const ue=ae(oe,de.target);ue&&oe.fire("card:click",ge(oe,ue,de))}),Ne("dblclick",de=>{const ue=ae(oe,de.target);ue&&oe.fire("card:dblclick",ge(oe,ue,de))}),Ne("contextmenu",de=>{const ue=ae(oe,de.target);ue&&oe.fire("card:contextmenu",ge(oe,ue,de))}),Ne("keydown",de=>je(oe,de)),Ne("pointerdown",de=>ft(oe,de))}function ae(oe,pe){const Oe=pe&&pe.closest?pe.closest("[data-key]"):null;if(!Oe)return null;const Ne=be(oe,Oe.dataset.key),de=oe.cardByKey.get(Ne);return de?{el:Oe,card:de,key:Ne}:null}function ge(oe,pe,Oe){return{row:pe.card.row,key:pe.key,clientX:Oe.clientX??0,clientY:Oe.clientY??0,nativeEvent:Oe}}function be(oe,pe){if(oe.cardByKey.has(pe))return pe;const Oe=Number(pe);return!Number.isNaN(Oe)&&oe.cardByKey.has(Oe)?Oe:pe}function je(oe,pe){if(pe.key==="PageUp"){pe.preventDefault&&pe.preventDefault(),oe.prev();return}if(pe.key==="PageDown"){pe.preventDefault&&pe.preventDefault(),oe.next();return}if(fe(oe,pe,S(oe.ctx.view)))return;if(S(oe.ctx.view)){xe(oe,pe);return}const Oe=pe.target&&pe.target.closest?pe.target.closest(`.${K}__card`):null;if(!Oe)return;const Ne=Oe.dataset.day,de=oe.model.days.findIndex(Ie=>Ie.key===Ne);if(de<0)return;let ue;if(pe.key==="ArrowLeft")ue=oe.model.days[de-1];else if(pe.key==="ArrowRight")ue=oe.model.days[de+1];else if(pe.key==="ArrowUp")ue=oe.model.days[de-7];else if(pe.key==="ArrowDown")ue=oe.model.days[de+7];else if(pe.key==="Home"){ye(oe);return}else if(pe.key==="End"){ve(oe);return}else if(pe.key==="Enter"||pe.key===" "){pe.preventDefault&&pe.preventDefault();const Ie=ae(oe,pe.target);Ie&&oe.fire("card:click",ge(oe,Ie,pe));return}if(!ue)return;pe.preventDefault&&pe.preventDefault();const me=oe.el.querySelectorAll(`.${K}__card[data-day="${v(ue.key)}"]`),Ae=[...oe.el.querySelectorAll(`.${K}__card[data-day="${v(Ne)}"]`)].indexOf(Oe),Me=me[Math.min(Math.max(Ae,0),me.length-1)]||null;Me&&(Oe.setAttribute("tabindex","-1"),Me.setAttribute("tabindex","0"),Me.focus&&Me.focus())}function xe(oe,pe){const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-key]"):null;if(Oe){if(pe.key==="Enter"||pe.key===" "){pe.preventDefault&&pe.preventDefault();const Ne=ae(oe,pe.target);Ne&&oe.fire("card:click",ge(oe,Ne,pe));return}if(pe.key==="ArrowLeft"||pe.key==="ArrowRight"){pe.preventDefault&&pe.preventDefault();const Ne=oe.model.days.findIndex(ue=>ue.key===Oe.dataset.day),de=oe.model.days[Ne+(pe.key==="ArrowLeft"?-1:1)];if(!de)return;ke(oe,de.key);return}(pe.key==="ArrowUp"||pe.key==="ArrowDown")&&(pe.preventDefault&&pe.preventDefault(),Ce(oe,Oe,pe.key==="ArrowDown"?1:-1))}}function Ce(oe,pe,Oe){const Ne=pe.dataset.day,de=oe.model.days.find(We=>We.key===Ne);if(!de||!de.timed)return;const ue=[...de.timed].sort((We,Ue)=>We.startMin-Ue.startMin),me=be(oe,pe.dataset.key),Ae=ue.findIndex(We=>String(We.key)===String(me));if(Ae<0)return;const Me=ue[Ae+Oe];if(!Me)return;const Ie=oe.el.querySelector(`.${K}__event[data-day="${v(Ne)}"][data-key="${v(Me.key)}"]`);if(Ie){for(const We of oe.el.querySelectorAll(ie))We.setAttribute("tabindex","-1");Ie.setAttribute("tabindex","0"),Ie.focus&&Ie.focus()}}function ke(oe,pe){const Oe=oe.el.querySelector(`.${K}__event[data-day="${v(pe)}"], .${K}__allcard[data-day="${v(pe)}"]`);if(Oe){for(const Ne of oe.el.querySelectorAll(ie))Ne.setAttribute("tabindex","-1");Oe.setAttribute("tabindex","0"),Oe.focus&&Oe.focus()}}function ye(oe){const pe=oe.el.querySelector(ie);if(pe){for(const Oe of oe.el.querySelectorAll(ie))Oe.setAttribute("tabindex","-1");pe.setAttribute("tabindex","0"),pe.focus&&pe.focus()}}function ve(oe){const pe=oe.el.querySelectorAll(ie),Oe=pe[pe.length-1];if(Oe){for(const Ne of pe)Ne.setAttribute("tabindex","-1");Oe.setAttribute("tabindex","0"),Oe.focus&&Oe.focus()}}function Se(oe,pe,Oe){if(oe.popover&&oe.popover.dataset.day===pe){Le(oe);return}Le(oe);const Ne=oe.model.days.find(Ae=>Ae.key===pe);if(!Ne)return;const de=oe.ctx.dayMaxEvents===!1?1/0:oe.ctx.dayMaxEvents,ue=Ne.cards.slice(de),me=oe.doc.createElement("ul");me.className=`${K}__popover`,me.setAttribute("data-day",pe),me.setAttribute("role","menu");for(const Ae of ue){const Me=oe.doc.createElement("li");Me.className=`${K}__popitem`,Me.setAttribute("role","menuitem"),Me.setAttribute("tabindex","-1"),Me.textContent=H(oe.ctx,Ae.row,Ae.key,oe.ctx.card.title??"title")||String(Ae.key),Me.addEventListener("click",Ie=>{Ie.preventDefault&&Ie.preventDefault(),oe.fire("card:click",{row:Ae.row,key:Ae.key,clientX:0,clientY:0,nativeEvent:Ie}),Le(oe)}),me.appendChild(Me)}Oe.parentNode.appendChild(me),oe.popover=me}function Le(oe){oe.popover&&oe.popover.parentNode&&oe.popover.parentNode.removeChild(oe.popover),oe.popover=null}const De=6;function He(oe,pe){return pe?oe.model.days.findIndex(Oe=>Oe.key===pe):-1}function Ze(oe){return oe&&oe.day?oe.day:oe&&oe.start?r(oe.start):null}function Ee(oe,pe){const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-day]"):null,Ne=Oe?Oe.dataset.day:null;if(!Ne)return null;const de=He(oe,Ne);return de<0?null:{dayKey:Ne,dayIndex:de}}function Ge(oe,pe){Ye(oe);const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-day]"):null;if(!(!Oe||!oe.el))if(S(oe.ctx.view)){const Ne=Oe.closest(`.${K}__daycol`)||(Oe.classList&&Oe.classList.contains(`${K}__daycol`)?Oe:null);Ne&&(Ne.classList.add(`${K}__drop-target`),oe._dropTarget=Ne)}else{const Ne=Oe.classList&&Oe.classList.contains(`${K}__cell`)?Oe:Oe.closest(`.${K}__cell`);Ne&&(Ne.classList.add(`${K}__drop-target`),oe._dropTarget=Ne)}}function Ye(oe){oe._dropTarget&&oe._dropTarget.classList&&oe._dropTarget.classList.remove(`${K}__drop-target`),oe._dropTarget=null}function tt(oe,pe){const Oe=oe.el;if(!Oe||!Oe.getBoundingClientRect){st(oe);return}const Ne=Oe.getBoundingClientRect(),de=pe.clientX||0,ue=24;let me=0;if(de<=Ne.left+ue?me=-1:de>=Ne.right-ue&&(me=1),me===0){st(oe);return}oe._dwell&&oe._dwell.dir===me||(st(oe),oe._dwell={dir:me,timer:setTimeout(()=>{me<0?oe.prev():oe.next(),oe._dwell=null},600)})}function st(oe){oe._dwell&&oe._dwell.timer&&(clearTimeout(oe._dwell.timer),oe._dwell.timer=null),oe._dwell=null}function ft(oe,pe){const Oe=ae(oe,pe.target);if(!Oe||oe.isReadonly({day:Ze(Oe.card),card:Oe.key}))return;const Ne=He(oe,Ze(Oe.card));if(Ne<0)return;let de="move";if(S(oe.ctx.view)&&Oe.card.allDay===!1){const Ae=Oe.el.getBoundingClientRect?Oe.el.getBoundingClientRect():null,Me=Ae?Ae.bottom:pe.clientY||0;(pe.clientY||0)>=Me-De&&(de="resize")}const{start:ue,end:me}=Oe.card;oe._drag={key:Oe.key,mode:de,startX:pe.clientX||0,startY:pe.clientY||0,start:ue?new Date(ue):null,end:me?new Date(me):null,sourceDayIndex:Ne},pe.preventDefault&&pe.preventDefault(),oe._dragListeners||mt(oe)}function mt(oe){const pe=oe.doc;if(!pe||!pe.addEventListener)return;const Oe=de=>{oe._drag&&(Ge(oe,de),tt(oe,de))},Ne=de=>{jt(oe,de)};pe.addEventListener("pointermove",Oe),pe.addEventListener("pointerup",Ne),oe._dragListeners={move:Oe,up:Ne}}function St(oe){if(!oe._dragListeners)return;const pe=oe.doc;pe&&pe.removeEventListener&&(pe.removeEventListener("pointermove",oe._dragListeners.move),pe.removeEventListener("pointerup",oe._dragListeners.up)),oe._dragListeners=null}function jt(oe,pe){const Oe=oe._drag;if(St(oe),st(oe),Ye(oe),oe._drag=null,!Oe||!Oe.start)return;const Ne=Ee(oe,pe);if(!Ne){Pt(oe);return}const de=(pe.clientY||0)-Oe.startY,ue=oe.ctx.slotDuration||1,me=Math.round(de/y)*ue,Ae=Ne.dayIndex-Oe.sourceDayIndex;if(Oe.mode==="resize"){if(me===0){Pt(oe);return}const Me=n(Oe.end||Oe.start,me);oe.move(Oe.key,{end:Me});return}if(S(oe.ctx.view)){const Me=me+Ae*24*60;if(Me===0){Pt(oe);return}const Ie=n(Oe.start,Me),We=Oe.end?n(Oe.end,Me):null;oe.move(Oe.key,{start:Ie,end:We})}else{if(Ae===0){Pt(oe);return}const Me=t(Oe.start,Ae),Ie=Oe.end?t(Oe.end,Ae):null;oe.move(Oe.key,{start:Me,end:Ie})}}function Pt(oe){oe.el&&$(oe.refresh)&&oe.refresh()}function Tt(oe,pe){if(S(oe.ctx.view)){const Ne=pe.start?J(oe,pe.start.getHours()*60+pe.start.getMinutes(),pe.end?pe.end.getHours()*60+pe.end.getMinutes():0):"";return c(oe,"calendar.movedTo",{label:Ne})}const Oe=new Intl.DateTimeFormat(oe.ctx.locale||void 0,{month:"short",day:"numeric"});return pe.start?c(oe,"calendar.movedTo",{label:Oe.format(pe.start)}):c(oe,"calendar.moved")}function Mt(oe,pe){const Oe=oe.cardByKey.get(pe.key);if(!Oe)return;const{start:Ne,end:de}=$t(oe,Oe);if(!Ne)return;let ue=oe._kbd;(!ue||ue.key!==pe.key)&&(ue={key:pe.key,fromStart:Ne,fromEnd:de,toStart:Ne,toEnd:de},oe._kbd=ue),pe.resizeEnd?ue.toEnd=n(ue.toEnd||ue.toStart,pe.deltaMinutes):(ue.toStart=pe.deltaDays!==0?t(ue.toStart,pe.deltaDays):n(ue.toStart,pe.deltaMinutes),ue.toEnd&&(ue.toEnd=pe.deltaDays!==0?t(ue.toEnd,pe.deltaDays):n(ue.toEnd,pe.deltaMinutes))),et(oe,Tt(oe,{start:ue.toStart,end:ue.toEnd}))}function $t(oe,pe){return{start:pe.start?new Date(pe.start):null,end:pe.end?new Date(pe.end):null}}function lt(oe,pe){const Oe=oe._kbd;oe._kbd=null,Oe&&(pe?oe.move(Oe.key,{start:Oe.toStart,end:Oe.toEnd}):et(oe,c(oe,"calendar.reverted")))}function et(oe,pe){oe.live&&(oe.live.textContent=pe)}function fe(oe,pe,Oe){const Ne=ae(oe,pe.target);if(!Ne||oe.isReadonly({day:Ze(Ne.card),card:Ne.key}))return!1;const de=pe.shiftKey===!0,ue=pe.altKey===!0;if(pe.key==="Enter"&&oe._kbd&&oe._kbd.key===Ne.key)return pe.preventDefault&&pe.preventDefault(),lt(oe,!0),!0;if(pe.key==="Escape"&&oe._kbd&&oe._kbd.key===Ne.key)return pe.preventDefault&&pe.preventDefault(),lt(oe,!1),!0;const me=oe.ctx.slotDuration||30;if(Oe){if(de&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:0,deltaMinutes:pe.key==="ArrowDown"?me:-me,resizeEnd:!1}),!0;if(de&&(pe.key==="ArrowLeft"||pe.key==="ArrowRight"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowRight"?1:-1,deltaMinutes:0,resizeEnd:!1}),!0;if(ue&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:0,deltaMinutes:pe.key==="ArrowDown"?me:-me,resizeEnd:!0}),!0}else{if(de&&(pe.key==="ArrowLeft"||pe.key==="ArrowRight"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowRight"?1:-1,deltaMinutes:0,resizeEnd:!1}),!0;if(de&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowDown"?7:-7,deltaMinutes:0,resizeEnd:!1}),!0}return!1}function Pe(oe){St(oe),st(oe),Ye(oe),oe._drag=null,oe._kbd=null}}),$e("packages/modules/calendar/index.js",function(e,W){"use strict";Object.defineProperty(e,"createCalendar",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return E}});const Z=W("packages/core/src/internal/util.js"),$=Z.isObject,B=Z.isFunction,D=Z.isNil,K=Z.warnOnce,Q=Z.mergeRow,G=Z.setPath,H=W("packages/modules/calendar/model.js"),_=H.resolveContext,z=H.computeRange,v=H.buildDays,S=H.buildTimeDays,g=H.keyFn,u=H.parseDate,f=H.startOfDay,a=H.isTimeView,r=H.resolveReadonly,t=H.clockMinutes,n=H.minutesToClock,o=H.rowDates,l=H.toWriteString,c=H.isDateOnlyValue,i=H.dayKeyOf,d=W("packages/modules/shared/emitter.js").Emitter,s=W("packages/modules/calendar/styles.js").NS,p=W("packages/modules/calendar/view.js"),w=p.renderCalendar,A=p.announce,P=p.stopNowTimer,b=p.showCardError,O=p.stopReschedule,x=Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),j=Object.freeze({onCardClick:"card:click",onCardDblClick:"card:dblclick",onCardContextMenu:"card:contextmenu",onRangeChange:"range:change"});function F(I,R){if(Array.isArray(I.rows))return I.rows;const k=I.grid;if(!k||!k.rows||!B(k.rows.forEach))return[];const y=[R.startProperty,R.endProperty,R.allDayProperty,R.colorProperty].filter(J=>typeof J=="string"),T=k.columns&&B(k.columns.all)?k.columns.all():[],V=J=>{if(k.columns&&B(k.columns.get)&&k.columns.get(J))return J;const ee=T.find(ne=>ne&&ne.field===J);return ee?ee.id:J},q=new Map(y.map(J=>[J,V(J)])),Y=[];return k.rows.forEach(J=>{if(J&&J.group||J&&J.pending===!0)return;const ee={__calKey:J.key};for(const ne of y)try{ee[ne]=k.rows.value(J.key,q.get(ne))}catch{ee[ne]=void 0}Y.push(ee)}),Y}function C(I,R){const k=I.getDate(),y=new Date(I.getFullYear(),I.getMonth()+R,1),T=new Date(y.getFullYear(),y.getMonth()+1,0).getDate();return new Date(y.getFullYear(),y.getMonth(),Math.min(k,T))}function M(I,R){const k=u(I),y=u(R);return!!k&&!!y&&k.getTime()===y.getTime()}function L(I,R={}){const k=$(R)?R:{},y=_(k);k.grid&&!Array.isArray(k.rows)&&(y.key=g("__calKey"));const T=new d("calendar"),V=r(k.readonly),q=I&&I.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,Y=!!k.grid&&!Array.isArray(k.rows),J=new Map;let ee=!1;const ne=ke=>{if(!Y||typeof ke!="string")return ke;const ye=k.grid&&k.grid.columns;if(!ye)return ke;try{if(B(ye.get)&&ye.get(ke))return ke;const Se=(B(ye.all)?ye.all():[]).find(Le=>Le&&Le.field===ke);return Se?Se.id:ke}catch{return ke}},ie=new Map,se={el:I||null,doc:q,ctx:y,config:k,emitter:T,isReadonly:V,wired:!1,rowKey:k.rowKey??(Y?"__calKey":"id"),model:{range:null,days:[],unscheduled:[]},cardEls:new Map,cardByKey:new Map,live:null,popover:null,unscheduled:[],fire(ke,ye){T.emit(ke,ye);for(const[ve,Se]of Object.entries(j))Se===ke&&B(k[ve])&&k[ve](ye)}},we=()=>{J.clear();for(const ke of F(k,y)){const ye=y.key(ke),ve=ie.get(ye);ve&&(ve.start!==void 0&&(ke[y.startProperty]=ve.start),ve.end!==void 0&&y.endProperty&&(ke[y.endProperty]=ve.end)),J.set(ye,ke)}},he=()=>{se.model.range=z(y.date,y.view,y.firstDay);const ke=a(y.view)?S(y,[...J.values()],se.model.range):v(y,[...J.values()],se.model.range);se.model.days=ke.days,se.model.unscheduled=ke.unscheduled,se.unscheduled=ke.unscheduled,se.cardByKey.clear();for(const ye of ke.days){for(const ve of ye.cards||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.timed||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.allDay||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.spans||[])se.cardByKey.set(ve.key,ve)}},te=()=>(se.el&&w(se),se),ae=()=>(he(),te());se.refresh=()=>(ee||we(),ae());const ge=(ke,ye)=>{y.date=f(ke),ye!==void 0&&(y.view=ye),he(),te(),A(se);const ve=se.model.range;return se.fire("range:change",{start:new Date(ve.start),end:new Date(ve.end),view:ve.view}),se},be=ke=>y.view==="day"?new Date(y.date.getFullYear(),y.date.getMonth(),y.date.getDate()+ke):y.view==="week"||y.view==="week-time"?new Date(y.date.getFullYear(),y.date.getMonth(),y.date.getDate()+ke*7):C(y.date,ke);se.prev=()=>ge(be(-1)),se.next=()=>ge(be(1)),se.today=()=>ge(new Date),se.goTo=ke=>{const ye=u(ke);return ye?ge(ye):se},se.setView=ke=>["week","month","week-time","day"].includes(ke)?ge(y.date,ke):se,se.getRange=()=>{const ke=se.model.range;return{start:new Date(ke.start),end:new Date(ke.end),view:ke.view}},se.getState=()=>({version:2,view:y.view,date:`${y.date.getFullYear()}-${String(y.date.getMonth()+1).padStart(2,"0")}-${String(y.date.getDate()).padStart(2,"0")}`,firstDay:y.firstDay,slotDuration:y.slotDuration,scrollTime:n(y.scrollTime)}),se.setState=ke=>{const ye=$(ke)?ke:{};if(ye.version!==void 0&&ye.version!==2&&K("calendar:state-version",`calendar: restoring state version ${JSON.stringify(ye.version)} into a version-2 calendar; unknown fields are skipped.`),["week","month","week-time","day"].includes(ye.view)&&(y.view=ye.view),typeof ye.date=="string"&&ye.date){const ve=u(ye.date);ve&&(y.date=ve)}if(typeof ye.firstDay=="number"&&ye.firstDay>=0&&ye.firstDay<=6&&(y.firstDay=ye.firstDay),typeof ye.slotDuration=="number"&&Number.isFinite(ye.slotDuration)&&ye.slotDuration>0&&(y.slotDuration=ye.slotDuration),typeof ye.scrollTime=="string"&&ye.scrollTime){const ve=t(ye.scrollTime,NaN);Number.isFinite(ve)&&(y.scrollTime=ve)}return ae()},se.rows={apply(ke={}){if(Y){K("calendar:apply-gridbound","rows.apply on a grid-bound calendar is ignored; route to the bound grid instead.");return}ee=!0;for(const ye of ke.add||[])J.set(y.key(ye),ye);for(const ye of ke.update||[]){const ve=y.key(ye);J.set(ve,Q(J.get(ve),ye))}for(const ye of ke.remove||[])J.delete(ye);ae()},forEach(ke){for(const[ye,ve]of J)ke(ve,ye)},get(ke){return J.get(ke)},get count(){return J.size}},se.setRows=ke=>Y?(K("calendar:setRows-gridbound","setRows on a grid-bound calendar is ignored; the rows come from the bound grid."),se):(Array.isArray(ke)&&(k.rows=ke),ee=!1,we(),ae()),se.move=async(ke,ye,ve={})=>{const Se=ve.origin||"user",Le=J.get(ke);if(!Le)return!1;const{start:De,end:He}=o(y,Le);if(!De)return!1;const Ze=se.cardByKey.get(ke),Ee=Ze&&Ze.day||i(De);if(se.isReadonly({day:Ee,card:ke}))return!1;const Ge=!!(ye&&ye.start instanceof Date),Ye=!!(ye&&ye.end instanceof Date),tt=Ge?new Date(ye.start):De;let st;if(Ye)st=new Date(ye.end);else if(Ge&&He){const Mt=tt.getTime()-De.getTime();st=new Date(He.getTime()+Mt)}else st=He;const ft={row:Le,key:ke,from:{start:De,end:He},to:{start:tt,end:st},origin:Se},mt=T.emitBefore("beforeMove",ft,Se);if((mt===!0?!0:mt===!1?!1:await mt)===!1)return!1;const jt=De.getTime()!==tt.getTime(),Pt=y.endProperty&&!!He&&!!st&&He.getTime()!==st.getTime();if(Y){const Mt=k.grid,$t=ne(y.startProperty),lt=y.endProperty?ne(y.endProperty):null,et=[];if(jt&&et.push({key:ke,colId:$t,value:l(tt,c(Le[y.startProperty]))}),Pt&<&&et.push({key:ke,colId:lt,value:l(st,c(Le[y.endProperty]))}),!et.length)return!1;const fe=Mt.edit.setCells(et,"cell",{origin:Se});if((fe&&typeof fe.then=="function"?await fe:fe)!==et.length){const oe=Mt.validation&&B(Mt.validation.errorFor)?Mt.validation.errorFor(ke,$t)||(lt?Mt.validation.errorFor(ke,lt):null):null,pe=[];return jt&&pe.push({key:ke,colId:$t,value:l(De,c(Le[y.startProperty]))}),Pt&<&&pe.push({key:ke,colId:lt,value:l(He,c(Le[y.endProperty]))}),pe.length&&Mt.edit.setCells(pe,"cell",{origin:"api"}),se.refresh(),K("calendar:writeback-noop",`a card reschedule did not persist through the bound grid: writing "${y.startProperty}" was refused (a read-only, non-editable, permission-blocked, unresolvable or invalid column), so the card stayed where it was.`),oe&&oe.message&&b(se,ke,oe.message),!1}return ie.set(ke,{start:jt?et.find(oe=>oe.colId===$t).value:void 0,end:Pt?et.find(oe=>oe.colId===lt).value:void 0}),se.refresh(),se.fire("card:move",ft),!0}const Tt={...Le};if(jt&&G(Le,y.startProperty,l(tt,c(Le[y.startProperty]))),Pt&&G(Le,y.endProperty,l(st,c(Le[y.endProperty]))),ae(),se.fire("card:move",ft),B(k.onCardMove)){let Mt=k.onCardMove(ft);if(Mt=Mt instanceof Promise?await Mt.then($t=>$t,()=>!1):Mt,Mt===!1)return J.set(ke,Tt),ae(),!1}return!0},se.on=(ke,ye)=>(x.includes(ke)||K(`calendar:event:${ke}`,`"${ke}" is not a calendar event; expected one of ${x.join(", ")}.`),T.on(ke,ye)),se.off=(ke,ye)=>T.off(ke,ye),se.readonly=(ke={})=>V(ke),se.destroy=()=>{const ke=se.el;if(ke){for(;ke.firstChild;)ke.removeChild(ke.firstChild);if(ke.classList.remove(s),ke.removeAttribute("role"),ke.removeAttribute("aria-label"),delete ke.dataset.readonly,ke.__latticeCalendar===se&&(ke.__latticeCalendar=null),se._listeners){for(const ye of se._listeners)ke.removeEventListener(ye.type,ye.fn);se._listeners=null}}se.wired=!1,P(se),O(se),se._stopFollowing&&(se._stopFollowing(),se._stopFollowing=null),se.cardEls.clear(),se.cardByKey.clear(),se.popover=null,se.live=null,ie.clear(),T.clear(),se.model={range:null,days:[],unscheduled:[]},se.unscheduled=[]};const je=[],xe=()=>{for(;je.length;)je.pop()()},Ce=()=>{xe();const ke=k.grid;if(!ke||!B(ke.on))return;const ye=ne(y.startProperty),ve=(De,He)=>{const Ze=Ge=>{Ge&&Ge.colId===ye&&ie.has(Ge.key)&&He(Ge)&&ie.delete(Ge.key),se.refresh()},Ee=ke.on(De,Ze);je.push(()=>{B(Ee)?Ee():B(ke.off)&&ke.off(De,Ze)})};ve("cell:changed",De=>{const He=ie.get(De.key);return He&&He.start!==void 0&&De.value!==He.start}),ve("cell:confirmed",()=>!0),ve("cell:reverted",()=>!0);const Se=De=>{const He=De&&De.change;if(He&&ie.size){const Ze=[...He.update||[],...He.add||[]];for(const[Ee,Ge]of ie)Ge.start!==void 0&&Ze.some(Ye=>Ye&&M(Ye[y.startProperty],Ge.start))&&ie.delete(Ee)}se.refresh()},Le=ke.on("rows:changed",Se);je.push(()=>{B(Le)?Le():B(ke.off)&&ke.off("rows:changed",Se)});for(const De of["filter:changed","sort:changed","model:changed","stream:chunk","stream:evicted"]){const He=()=>{se.refresh()},Ze=ke.on(De,He);je.push(()=>{B(Ze)?Ze():B(ke.off)&&ke.off(De,He)})}je.push(ke.on("destroy",()=>{xe()}))};return Y&&Ce(),se._stopFollowing=xe,se.rebind=ke=>!Y||!ke||ke===k.grid?se:(k.grid=ke,Ce(),we(),ae()),I&&(I.__latticeCalendar=se),we(),he(),te(),A(se),se}const E=L}),$e("packages/modules/htmx/calendar.js",function(e,W){"use strict";Object.defineProperty(e,"CALENDAR_ATTR",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"autoInitCalendar",{enumerable:!0,get:function(){return S}});const $=W("packages/core/src/internal/util.js").isFunction,D=W("packages/modules/calendar/index.js").createCalendar,K="data-lattice-calendar",Q="data-lattice-config",G="data-lattice-bind";function H(g,u){const f=[];return $(g.hasAttribute)&&g.hasAttribute(u)&&f.push(g),$(g.querySelectorAll)&&f.push(...g.querySelectorAll(`[${u}]`)),f}function _(g){const u=g.parentNode;if(!u||!u.children)return null;const f=[...u.children],a=f.indexOf(g),r=[f[a+1],f[a-1]];for(const t of r)if(t&&t.tagName==="SCRIPT"&&$(t.getAttribute)&&t.hasAttribute(Q))return t;return null}function z(g){if($(g.getAttribute)&&g.hasAttribute(Q))try{return JSON.parse(g.getAttribute(Q)||"{}")}catch{}const u=_(g);if(!u)return{};try{return JSON.parse(u.textContent||"{}")}catch(f){return console.warn("[lattice] autoInitCalendar: data-lattice-config is not valid JSON, ignoring it.",f),{}}}function v(g,u){const f=$(g.getAttribute)?g.getAttribute(G):null,a=f&&f!==""?f:typeof u.grid=="string"?u.grid:null;if(!a)return null;const r=g.ownerDocument||(typeof document<"u"?document:null);if(!r||!$(r.getElementById))return null;const t=r.getElementById(a);return t&&t.__lattice?t.__lattice:null}function S(g){const u=g||(typeof document<"u"?document:null);if(!u)return[];const f=[];for(const a of H(u,K)){if(a.__latticeCalendar)continue;const r=z(a),t=v(a,r);t&&(r.grid=t),f.push(D(a,r))}return f}}),$e("packages/modules/htmx/rowmodel.js",function(e,W){"use strict";Object.defineProperty(e,"HTML_ROW_WARNING_THRESHOLD",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"queryParams",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"rowsFromFragment",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"rowsFromJson",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"warnIfLargeHtmlPayload",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"ingestResponse",{enumerable:!0,get:function(){return z}});const Z=W("packages/dom/src/hydrate.js"),$=Z.coerceCell,B=Z.childTags,D=Z.firstChildTag,K=5e3;function Q(v,S={}){const g=v.pagination.get(),u=S.limit??(g.pageSize||100);return{offset:S.offset??(g.page??0)*u,limit:u,sort:JSON.stringify(v.sort.get()),filters:JSON.stringify(v.filters.get())}}function G(v,S){let g;if(v.tagName==="TR")g=[v];else{const u=D(v,"tbody")||v;g=B(u,"tr").length?B(u,"tr"):B(v,"tr")}return g.map((u,f)=>{const a=B(u,"td"),t={__row:(typeof u.getAttribute=="function"?u.getAttribute("data-id"):null)||`row${f}`};return S.forEach((n,o)=>{t[n.field]=a[o]?$(String(a[o].textContent||"")):null}),t})}function H(v){const S=JSON.parse(v);return Array.isArray(S)?{rows:S,total:void 0}:{rows:S.rows||[],total:S.total}}function _(v){v<=K||console.warn(`lattice-grid/htmx: parsed ${v} rows from an HTML fragment, past the documented ${K}-row boundary for that path. Consider a JSON response for this size.`)}function z(v,S){if(/json/i.test(v.contentType||""))return H(v.text);const u=G(v.fragment,S);return _(u.length),{rows:u,total:void 0}}}),$e("packages/modules/htmx/oob.js",function(e,W){"use strict";Object.defineProperty(e,"driveOobUpdates",{enumerable:!0,get:function(){return K}});const $=W("packages/core/src/internal/util.js").isFunction,D=W("packages/modules/htmx/rowmodel.js").rowsFromFragment;function K(Q,G={}){const H=G.doc||(typeof document<"u"?document:null);if(!H||!$(H.addEventListener))return()=>{};const _=z=>{const v=z.detail,S=v&&v.target,g=S&&$(S.getAttribute)?S.getAttribute("data-lattice-row"):null;if(!g||!v.fragment)return;const u=G.columns||Q.columns.visible().map(a=>({field:a.field||a.id})),[f]=D(v.fragment,u);f&&(delete f.__row,Q.rows.apply({update:[{...f,[Q.get("rowKey")]:g}]})),v.shouldSwap=!1};return H.addEventListener("htmx:oobBeforeSwap",_),()=>H.removeEventListener("htmx:oobBeforeSwap",_)}}),$e("packages/modules/htmx/servermode.js",function(e,W){"use strict";Object.defineProperty(e,"QUERY_CHANGED_EVENT",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"driveServerMode",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"SCROLL_NEAR_END_EVENT",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"driveInfiniteScroll",{enumerable:!0,get:function(){return z}});const $=W("packages/core/src/internal/util.js").isFunction,B=W("packages/modules/htmx/rowmodel.js"),D=B.queryParams,K=B.ingestResponse,Q="lattice:query-changed";function G(v,S){const g=v.createElement("tbody");if($(v.createRange)){const u=v.createRange();u.selectNodeContents(g),g.appendChild(u.createContextualFragment(S))}return g}function H(v,S,g={}){const u=S.ownerDocument;let f=!1;const a=i=>{i.target!==S||!i.detail||!i.detail.parameters||Object.assign(i.detail.parameters,D(v,g))},r=i=>{i.target===S&&(f=!0)},t=i=>{if(f=!1,i.target!==S)return;const m=i.detail&&i.detail.xhr&&i.detail.xhr.status,d=m?`Could not load rows (server responded ${m}).`:"Could not load rows, the request failed to reach the server.";v.overlay.show("empty",d)},n=i=>{if(i.target!==S||(f=!1,i.detail&&(i.detail.shouldSwap=!1),!i.detail||!i.detail.xhr||i.detail.isError))return;const{xhr:m}=i.detail,d=$(m.getResponseHeader)&&m.getResponseHeader("Content-Type")||"",h=i.detail.serverResponse??m.responseText??"",s=g.columns||v.columns.visible().map(A=>({field:A.field||A.id})),p=/json/i.test(d)?null:G(u,h),{rows:w}=K({contentType:d,text:h,fragment:p},s);v.rows.load(w)},o=()=>{if(f&&$(S.dispatchEvent)){const m=u.defaultView&&u.defaultView.CustomEvent;S.dispatchEvent(m?new m("htmx:abort"):{type:"htmx:abort",bubbles:!0})}const i=globalThis.htmx;i&&$(i.trigger)&&i.trigger(S,Q)};u.addEventListener("htmx:configRequest",a),u.addEventListener("htmx:beforeRequest",r),u.addEventListener("htmx:beforeSwap",n),u.addEventListener("htmx:responseError",t),u.addEventListener("htmx:sendError",t);const l=v.on("sort:changed",o),c=v.on("filter:changed",o);return()=>{u.removeEventListener("htmx:configRequest",a),u.removeEventListener("htmx:beforeRequest",r),u.removeEventListener("htmx:beforeSwap",n),u.removeEventListener("htmx:responseError",t),u.removeEventListener("htmx:sendError",t),l(),c()}}const _="lattice:scroll-near-end";function z(v,S,g={}){const u=S.ownerDocument,f=g.threshold??20;let a=!1,r=!1;const t=P=>{P.target!==S||!P.detail||!P.detail.parameters||Object.assign(P.detail.parameters,D(v,{...g,offset:v.rows.count()}))},n=P=>{P.target===S&&(a=!0)},o=P=>{P.target===S&&(a=!1)},l=P=>{if(P.target!==S||(a=!1,P.detail&&(P.detail.shouldSwap=!1),!P.detail||!P.detail.xhr||P.detail.isError))return;const{xhr:b}=P.detail,O=$(b.getResponseHeader)&&b.getResponseHeader("Content-Type")||"",x=P.detail.serverResponse??b.responseText??"",j=g.columns||v.columns.visible().map(M=>({field:M.field||M.id})),F=/json/i.test(O)?null:G(u,x),{rows:C}=K({contentType:O,text:x,fragment:F},j);if(!C.length){r=!0;return}v.rows.apply({add:C})},c=()=>{r=!1},i=()=>{if(a||r)return;const P=globalThis.htmx;P&&$(P.trigger)&&P.trigger(S,_)};let m=!1;const d=()=>{m=!0},h=({last:P})=>{m&&(m=!1,(v.rows.count()===0||P>=v.rows.count()-1-f)&&i())};u.addEventListener("htmx:configRequest",t),u.addEventListener("htmx:beforeRequest",n),u.addEventListener("htmx:beforeSwap",l),u.addEventListener("htmx:responseError",o),u.addEventListener("htmx:sendError",o);const s=v.on("render:done",h),p=v.on("scroll",d),w=v.on("sort:changed",c),A=v.on("filter:changed",c);return()=>{u.removeEventListener("htmx:configRequest",t),u.removeEventListener("htmx:beforeRequest",n),u.removeEventListener("htmx:beforeSwap",l),u.removeEventListener("htmx:responseError",o),u.removeEventListener("htmx:sendError",o),s(),p(),w(),A()}}}),$e("packages/modules/htmx/index.js",function(e,W){"use strict";Object.defineProperty(e,"attach",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return p}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=W("packages/dom/src/createGrid.js"),K=D.gridElementsWithin,Q=W("packages/dom/src/autoinit.js"),G=Q.autoInit,H=W("packages/modules/htmx/controller.js"),_=H.destroyWithin,z=H.initWithin,v=W("packages/modules/htmx/history.js"),S=v.saveStateWithin,g=v.restoreStateWithin,u=v.restoreSwappedGrids,f=W("packages/modules/htmx/rebind.js"),a=f.rebindViewersWithin,r=W("packages/modules/htmx/calendar.js"),t=r.autoInitCalendar;Object.defineProperty(e,"createGrid",{enumerable:!0,get:function(){return D.createGrid}}),Object.defineProperty(e,"gridElementsWithin",{enumerable:!0,get:function(){return D.gridElementsWithin}});const n=W("packages/dom/src/hydrate.js");Object.defineProperty(e,"readTable",{enumerable:!0,get:function(){return n.readTable}}),Object.defineProperty(e,"hydrateTable",{enumerable:!0,get:function(){return n.hydrateTable}}),Object.defineProperty(e,"autoInit",{enumerable:!0,get:function(){return Q.autoInit}});const o=W("packages/core/src/model/state.js");Object.defineProperty(e,"serialiseState",{enumerable:!0,get:function(){return o.serialiseState}}),Object.defineProperty(e,"restoreState",{enumerable:!0,get:function(){return o.restoreState}});const l=W("packages/core/src/index.js");Object.defineProperty(e,"createHeadlessGrid",{enumerable:!0,get:function(){return l.createHeadlessGrid}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return l.version}}),Object.defineProperty(e,"getVersion",{enumerable:!0,get:function(){return l.getVersion}}),Object.defineProperty(e,"Grid",{enumerable:!0,get:function(){return l.Grid}}),Object.defineProperty(e,"EventBus",{enumerable:!0,get:function(){return l.EventBus}}),Object.defineProperty(e,"Registry",{enumerable:!0,get:function(){return l.Registry}}),Object.defineProperty(e,"sharedRegistry",{enumerable:!0,get:function(){return l.sharedRegistry}}),Object.defineProperty(e,"registerModules",{enumerable:!0,get:function(){return l.registerModules}}),Object.defineProperty(e,"parseLicence",{enumerable:!0,get:function(){return l.parseLicence}}),Object.defineProperty(e,"verifyLicence",{enumerable:!0,get:function(){return l.verifyLicence}}),Object.defineProperty(e,"licenceInfo",{enumerable:!0,get:function(){return l.licenceInfo}}),Object.defineProperty(e,"watermark",{enumerable:!0,get:function(){return l.watermark}}),Object.defineProperty(e,"setLicence",{enumerable:!0,get:function(){return l.setLicence}}),Object.defineProperty(e,"licenceState",{enumerable:!0,get:function(){return l.licenceState}}),Object.defineProperty(e,"isLocalHost",{enumerable:!0,get:function(){return l.isLocalHost}}),Object.defineProperty(e,"matchesDomain",{enumerable:!0,get:function(){return l.matchesDomain}}),Object.defineProperty(e,"LicenceHolder",{enumerable:!0,get:function(){return l.LicenceHolder}}),Object.defineProperty(e,"ColumnModel",{enumerable:!0,get:function(){return l.ColumnModel}}),Object.defineProperty(e,"buildGraph",{enumerable:!0,get:function(){return l.buildGraph}}),Object.defineProperty(e,"Lookup",{enumerable:!0,get:function(){return l.Lookup}}),Object.defineProperty(e,"ValuePipeline",{enumerable:!0,get:function(){return l.ValuePipeline}}),Object.defineProperty(e,"compileFormat",{enumerable:!0,get:function(){return l.compileFormat}}),Object.defineProperty(e,"compileMask",{enumerable:!0,get:function(){return l.compileMask}}),Object.defineProperty(e,"specToOoxml",{enumerable:!0,get:function(){return l.specToOoxml}}),Object.defineProperty(e,"EXTENDED_TYPES",{enumerable:!0,get:function(){return l.EXTENDED_TYPES}}),Object.defineProperty(e,"createRadixType",{enumerable:!0,get:function(){return l.createRadixType}}),Object.defineProperty(e,"RADIX_PRESETS",{enumerable:!0,get:function(){return l.RADIX_PRESETS}}),Object.defineProperty(e,"parseRadix",{enumerable:!0,get:function(){return l.parseRadix}}),Object.defineProperty(e,"formatRadix",{enumerable:!0,get:function(){return l.formatRadix}}),Object.defineProperty(e,"createUnitType",{enumerable:!0,get:function(){return l.createUnitType}}),Object.defineProperty(e,"registerUnitSystem",{enumerable:!0,get:function(){return l.registerUnitSystem}}),Object.defineProperty(e,"defineUnit",{enumerable:!0,get:function(){return l.defineUnit}}),Object.defineProperty(e,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return l.UNIT_SYSTEMS}}),Object.defineProperty(e,"parseUnit",{enumerable:!0,get:function(){return l.parseUnit}}),Object.defineProperty(e,"formatUnit",{enumerable:!0,get:function(){return l.formatUnit}}),Object.defineProperty(e,"createCurrencyType",{enumerable:!0,get:function(){return l.createCurrencyType}}),Object.defineProperty(e,"parseMoney",{enumerable:!0,get:function(){return l.parseMoney}}),Object.defineProperty(e,"formatMoney",{enumerable:!0,get:function(){return l.formatMoney}}),Object.defineProperty(e,"convertMoney",{enumerable:!0,get:function(){return l.convertMoney}}),Object.defineProperty(e,"rateFunction",{enumerable:!0,get:function(){return l.rateFunction}}),Object.defineProperty(e,"MISSING_RATE",{enumerable:!0,get:function(){return l.MISSING_RATE}}),Object.defineProperty(e,"Messages",{enumerable:!0,get:function(){return l.Messages}}),Object.defineProperty(e,"createMessages",{enumerable:!0,get:function(){return l.createMessages}}),Object.defineProperty(e,"auditCatalogue",{enumerable:!0,get:function(){return l.auditCatalogue}}),Object.defineProperty(e,"EN_GB",{enumerable:!0,get:function(){return l.EN_GB}}),Object.defineProperty(e,"MESSAGE_KEYS",{enumerable:!0,get:function(){return l.MESSAGE_KEYS}}),Object.defineProperty(e,"DEFAULT_LOCALE",{enumerable:!0,get:function(){return l.DEFAULT_LOCALE}}),Object.defineProperty(e,"formatList",{enumerable:!0,get:function(){return l.formatList}}),Object.defineProperty(e,"resolveLocale",{enumerable:!0,get:function(){return l.resolveLocale}}),Object.defineProperty(e,"LOCALES",{enumerable:!0,get:function(){return l.LOCALES}}),Object.defineProperty(e,"resolveCatalogue",{enumerable:!0,get:function(){return l.resolveCatalogue}}),Object.defineProperty(e,"EN_US",{enumerable:!0,get:function(){return l.EN_US}}),Object.defineProperty(e,"FR_FR",{enumerable:!0,get:function(){return l.FR_FR}}),Object.defineProperty(e,"FR_CA",{enumerable:!0,get:function(){return l.FR_CA}}),Object.defineProperty(e,"IT_IT",{enumerable:!0,get:function(){return l.IT_IT}}),Object.defineProperty(e,"ES_ES",{enumerable:!0,get:function(){return l.ES_ES}}),Object.defineProperty(e,"PT_BR",{enumerable:!0,get:function(){return l.PT_BR}}),Object.defineProperty(e,"DE_DE",{enumerable:!0,get:function(){return l.DE_DE}}),Object.defineProperty(e,"NL_NL",{enumerable:!0,get:function(){return l.NL_NL}}),Object.defineProperty(e,"SV_SE",{enumerable:!0,get:function(){return l.SV_SE}}),Object.defineProperty(e,"DA_DK",{enumerable:!0,get:function(){return l.DA_DK}}),Object.defineProperty(e,"NB_NO",{enumerable:!0,get:function(){return l.NB_NO}}),Object.defineProperty(e,"FI_FI",{enumerable:!0,get:function(){return l.FI_FI}}),Object.defineProperty(e,"PL_PL",{enumerable:!0,get:function(){return l.PL_PL}}),Object.defineProperty(e,"CS_CZ",{enumerable:!0,get:function(){return l.CS_CZ}}),Object.defineProperty(e,"HU_HU",{enumerable:!0,get:function(){return l.HU_HU}}),Object.defineProperty(e,"RO_RO",{enumerable:!0,get:function(){return l.RO_RO}}),Object.defineProperty(e,"UK_UA",{enumerable:!0,get:function(){return l.UK_UA}}),Object.defineProperty(e,"EL_GR",{enumerable:!0,get:function(){return l.EL_GR}}),Object.defineProperty(e,"JA_JP",{enumerable:!0,get:function(){return l.JA_JP}}),Object.defineProperty(e,"AR",{enumerable:!0,get:function(){return l.AR}}),Object.defineProperty(e,"AR_SA",{enumerable:!0,get:function(){return l.AR_SA}}),Object.defineProperty(e,"ColumnStore",{enumerable:!0,get:function(){return l.ColumnStore}}),Object.defineProperty(e,"Bitset",{enumerable:!0,get:function(){return l.Bitset}}),Object.defineProperty(e,"Dictionary",{enumerable:!0,get:function(){return l.Dictionary}}),Object.defineProperty(e,"MultiValue",{enumerable:!0,get:function(){return l.MultiValue}}),Object.defineProperty(e,"MaskPool",{enumerable:!0,get:function(){return l.MaskPool}}),Object.defineProperty(e,"sortColumn",{enumerable:!0,get:function(){return l.sortColumn}}),Object.defineProperty(e,"sortMulti",{enumerable:!0,get:function(){return l.sortMulti}}),Object.defineProperty(e,"evaluateFilters",{enumerable:!0,get:function(){return l.evaluateFilters}}),Object.defineProperty(e,"compact",{enumerable:!0,get:function(){return l.compact}}),Object.defineProperty(e,"testValue",{enumerable:!0,get:function(){return l.testValue}}),Object.defineProperty(e,"groupByColumns",{enumerable:!0,get:function(){return l.groupByColumns}}),Object.defineProperty(e,"total",{enumerable:!0,get:function(){return l.total}}),Object.defineProperty(e,"TOTAL_FNS",{enumerable:!0,get:function(){return l.TOTAL_FNS}}),Object.defineProperty(e,"pivot",{enumerable:!0,get:function(){return l.pivot}}),Object.defineProperty(e,"Window",{enumerable:!0,get:function(){return l.Window}}),Object.defineProperty(e,"openWindow",{enumerable:!0,get:function(){return l.openWindow}}),Object.defineProperty(e,"WINDOW_KINDS",{enumerable:!0,get:function(){return l.WINDOW_KINDS}}),Object.defineProperty(e,"evaluateFormula",{enumerable:!0,get:function(){return l.evaluateFormula}}),Object.defineProperty(e,"parseFormula",{enumerable:!0,get:function(){return l.parseFormula}}),Object.defineProperty(e,"referencesOf",{enumerable:!0,get:function(){return l.referencesOf}}),Object.defineProperty(e,"looksLikeFormula",{enumerable:!0,get:function(){return l.looksLikeFormula}}),Object.defineProperty(e,"FormulaError",{enumerable:!0,get:function(){return l.FormulaError}}),Object.defineProperty(e,"FUNCTIONS",{enumerable:!0,get:function(){return l.FUNCTIONS}}),Object.defineProperty(e,"compileRules",{enumerable:!0,get:function(){return l.compileRules}}),Object.defineProperty(e,"ingest",{enumerable:!0,get:function(){return l.ingest}}),Object.defineProperty(e,"ingestSync",{enumerable:!0,get:function(){return l.ingestSync}}),Object.defineProperty(e,"createSource",{enumerable:!0,get:function(){return l.createSource}}),Object.defineProperty(e,"createMemorySource",{enumerable:!0,get:function(){return l.createMemorySource}}),Object.defineProperty(e,"createPagedSource",{enumerable:!0,get:function(){return l.createPagedSource}}),Object.defineProperty(e,"createRemoteSource",{enumerable:!0,get:function(){return l.createRemoteSource}}),Object.defineProperty(e,"createStreamSource",{enumerable:!0,get:function(){return l.createStreamSource}}),Object.defineProperty(e,"PROTOCOL",{enumerable:!0,get:function(){return l.PROTOCOL}}),Object.defineProperty(e,"createPushdownSource",{enumerable:!0,get:function(){return l.createPushdownSource}}),Object.defineProperty(e,"planQuery",{enumerable:!0,get:function(){return l.planQuery}}),Object.defineProperty(e,"splitFilters",{enumerable:!0,get:function(){return l.splitFilters}}),Object.defineProperty(e,"applyResidual",{enumerable:!0,get:function(){return l.applyResidual}}),Object.defineProperty(e,"capabilitiesOf",{enumerable:!0,get:function(){return l.capabilitiesOf}}),Object.defineProperty(e,"resolveMutate",{enumerable:!0,get:function(){return l.resolveMutate}}),Object.defineProperty(e,"NO_CAPABILITIES",{enumerable:!0,get:function(){return l.NO_CAPABILITIES}}),Object.defineProperty(e,"odataAdapter",{enumerable:!0,get:function(){return l.odataAdapter}}),Object.defineProperty(e,"filtersToOData",{enumerable:!0,get:function(){return l.filtersToOData}}),Object.defineProperty(e,"conditionToOData",{enumerable:!0,get:function(){return l.conditionToOData}}),Object.defineProperty(e,"restAdapter",{enumerable:!0,get:function(){return l.restAdapter}}),Object.defineProperty(e,"DEFAULT_PARAMS",{enumerable:!0,get:function(){return l.DEFAULT_PARAMS}}),Object.defineProperty(e,"dfqlAdapter",{enumerable:!0,get:function(){return l.dfqlAdapter}}),Object.defineProperty(e,"duckdbAdapter",{enumerable:!0,get:function(){return l.duckdbAdapter}}),Object.defineProperty(e,"filtersToSql",{enumerable:!0,get:function(){return l.filtersToSql}}),Object.defineProperty(e,"RowModel",{enumerable:!0,get:function(){return l.RowModel}}),Object.defineProperty(e,"createRowKey",{enumerable:!0,get:function(){return l.createRowKey}}),Object.defineProperty(e,"SelectionModel",{enumerable:!0,get:function(){return l.SelectionModel}}),Object.defineProperty(e,"RangeModel",{enumerable:!0,get:function(){return l.RangeModel}}),Object.defineProperty(e,"EditModel",{enumerable:!0,get:function(){return l.EditModel}}),Object.defineProperty(e,"ChangeModel",{enumerable:!0,get:function(){return l.ChangeModel}}),Object.defineProperty(e,"StateModel",{enumerable:!0,get:function(){return l.StateModel}}),Object.defineProperty(e,"STATE_VERSION",{enumerable:!0,get:function(){return l.STATE_VERSION}}),Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return l.VERSION}});const c=W("packages/dom/src/stat.js");Object.defineProperty(e,"createStat",{enumerable:!0,get:function(){return c.createStat}}),Object.defineProperty(e,"deltaOf",{enumerable:!0,get:function(){return c.deltaOf}}),Object.defineProperty(e,"toneOf",{enumerable:!0,get:function(){return c.toneOf}});const i=W("packages/core/src/registry/licence.js");Object.defineProperty(e,"setLicense",{enumerable:!0,get:function(){return i.setLicence}}),Object.defineProperty(e,"licenseInfo",{enumerable:!0,get:function(){return i.licenceInfo}}),Object.defineProperty(e,"licenseState",{enumerable:!0,get:function(){return i.licenceState}}),Object.defineProperty(e,"destroyWithin",{enumerable:!0,get:function(){return H.destroyWithin}}),Object.defineProperty(e,"initWithin",{enumerable:!0,get:function(){return H.initWithin}}),Object.defineProperty(e,"saveStateWithin",{enumerable:!0,get:function(){return v.saveStateWithin}}),Object.defineProperty(e,"restoreStateWithin",{enumerable:!0,get:function(){return v.restoreStateWithin}}),Object.defineProperty(e,"rebindViewersWithin",{enumerable:!0,get:function(){return f.rebindViewersWithin}}),Object.defineProperty(e,"autoInitCalendar",{enumerable:!0,get:function(){return r.autoInitCalendar}}),Object.defineProperty(e,"CALENDAR_ATTR",{enumerable:!0,get:function(){return r.CALENDAR_ATTR}});const m=W("packages/modules/htmx/oob.js");Object.defineProperty(e,"driveOobUpdates",{enumerable:!0,get:function(){return m.driveOobUpdates}});const d=W("packages/modules/htmx/servermode.js");Object.defineProperty(e,"driveServerMode",{enumerable:!0,get:function(){return d.driveServerMode}}),Object.defineProperty(e,"driveInfiniteScroll",{enumerable:!0,get:function(){return d.driveInfiniteScroll}}),Object.defineProperty(e,"QUERY_CHANGED_EVENT",{enumerable:!0,get:function(){return d.QUERY_CHANGED_EVENT}}),Object.defineProperty(e,"SCROLL_NEAR_END_EVENT",{enumerable:!0,get:function(){return d.SCROLL_NEAR_END_EVENT}});const h=W("packages/modules/htmx/rowmodel.js");Object.defineProperty(e,"queryParams",{enumerable:!0,get:function(){return h.queryParams}}),Object.defineProperty(e,"rowsFromFragment",{enumerable:!0,get:function(){return h.rowsFromFragment}}),Object.defineProperty(e,"rowsFromJson",{enumerable:!0,get:function(){return h.rowsFromJson}}),Object.defineProperty(e,"ingestResponse",{enumerable:!0,get:function(){return h.ingestResponse}}),Object.defineProperty(e,"warnIfLargeHtmlPayload",{enumerable:!0,get:function(){return h.warnIfLargeHtmlPayload}}),Object.defineProperty(e,"HTML_ROW_WARNING_THRESHOLD",{enumerable:!0,get:function(){return h.HTML_ROW_WARNING_THRESHOLD}});function s(w){const A=w||(typeof document<"u"?document:null);if(!A||!$(A.addEventListener))return()=>{};const P=F=>_(F.target,K),b=F=>{const C=F.detail&&F.detail.elt||F.target;z(C,G),z(C,t),a(A,K)},O=F=>{S(F.detail&&F.detail.historyElt||A,K),queueMicrotask(u)},x=F=>{F.detail&&F.detail.cacheMiss||g(A,G)},j=()=>{B("htmx:history-snapshot-too-large","htmx could not store this page's history snapshot (its sessionStorage quota was exceeded), so browser Back will re-fetch the page instead of restoring the grid; scope the hx-history-elt subtree smaller, or lower htmx's historyCacheSize.")};return A.addEventListener("htmx:beforeCleanupElement",P),A.addEventListener("htmx:load",b),A.addEventListener("htmx:beforeHistorySave",O),A.addEventListener("htmx:historyRestore",x),A.addEventListener("htmx:historyCacheError",j),()=>{A.removeEventListener("htmx:beforeCleanupElement",P),A.removeEventListener("htmx:load",b),A.removeEventListener("htmx:beforeHistorySave",O),A.removeEventListener("htmx:historyRestore",x),A.removeEventListener("htmx:historyCacheError",j)}}s();const p=s});try{Rn("packages/worker/src/inline.js").setWorkerSource('(function(Ot){"use strict";var ct=Object.create(null),lt=Object.create(null);function Ce(o,me){ct[o]=me}function at(o){var me=lt[o];if(me)return me;var ae=Object.create(null);lt[o]=ae;var he=ct[o];if(!he)throw new Error("[lattice] missing module: "+o);return he(ae,at),ae}Ce("packages/core/src/internal/util.js",function(o,me){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return g}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return v}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return Se}});const ae="1.89.0";async function he(){return ae}const W="1.89.0",U=new Set,_=2e3;function Z(D){if(U.add(D),U.size>_){const x=U.values().next().value;x!==void 0&&U.delete(x)}}const E=[],z=500;function re(D,x,fe){E.push({key:D,level:x,message:fe.map(p=>typeof p=="string"?p:Y(p)).join(" "),at:Date.now()}),E.length>z&&E.shift()}function Y(D){if(D instanceof Error)return D.message;try{return JSON.stringify(D)}catch{return String(D)}}function se(){return E.map(D=>({...D}))}function te(D){if(D.length===0||typeof D[0]!="string")return D;const x=D[0].replace(/^\\[lattice\\]\\s*/,"");return x===D[0]?D:[x,...D.slice(1)]}function H(D,...x){if(U.has(D))return;Z(D);const fe=te(x);re(D,"warn",fe),console.warn("[lattice]",...fe)}function T(D,...x){if(U.has(D))return;Z(D);const fe=te(x);re(D,"info",fe),console.info("[lattice]",...fe)}function V(){U.clear(),E.length=0}function ne(D,x){const fe=new Error(`[lattice] ${D}`);throw x!==void 0&&(fe.cause=x),fe}function R(D,x){D||ne(x)}const j=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function i(D){return D!==null&&typeof D=="object"&&!Array.isArray(D)}function a(D){return typeof D=="function"}function s(D){return D==null}function h(D){return D==null||D===""}function u(D){return typeof D!="function"?!1:/^class[\\s{]/.test(Function.prototype.toString.call(D))?!0:!!(D.prototype&&Object.getOwnPropertyNames(D.prototype).length>1)}const t=new Map;function l(D){let x=t.get(D);if(x)return x;if(!D.includes("."))x=fe=>fe?.[D];else{const fe=D.split("."),p=fe.length;x=Q=>{let X=Q;for(let ce=0;ce<p;ce++){if(X==null)return;X=X[fe[ce]]}return X}}return t.set(D,x),x}const m=new Map;function e(D){let x=m.get(D);if(x)return x;if(!D.includes("."))x=(fe,p)=>{fe!=null&&(fe[D]=p)};else{const fe=D.split("."),p=fe.length-1;x=(Q,X)=>{let ce=Q;for(let le=0;le<p;le++){if(ce==null)return;const ge=fe[le];ce[ge]==null&&(ce[ge]={}),ce=ce[ge]}ce!=null&&(ce[fe[p]]=X)}}return m.set(D,x),x}function d(D,x){return l(x)(D)}function f(D,x,fe){e(x)(D,fe)}function r(D){return D?(D.includes(".")?D.slice(D.lastIndexOf(".")+1):D).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(/^./,fe=>fe.toUpperCase()):""}const n={"&":"&","<":"<",">":">",\'"\':""","\'":"'"};function c(D){const x=D==null?"":String(D);return/[&<>"\']/.test(x)?x.replace(/[&<>"\']/g,fe=>n[fe]):x}function g(D){return String(D).replace(/\\w\\S*/g,x=>x[0].toUpperCase()+x.slice(1).toLowerCase())}function A(D,x,fe){if(D!==void 0)return D===!0?{enabled:!0,...fe}:D===!1?{enabled:!1}:i(D)?D:{[x]:D,enabled:!0}}function P(D){return D==null?[]:Array.isArray(D)?D:[D]}const q=Object.freeze(new Set(["__proto__","constructor","prototype"]));function L(D,x){if(!i(D))return i(x)?{...x}:x;if(!i(x))return x===void 0?D:x;const fe={...D};for(const p of Object.keys(x)){if(q.has(p))continue;const Q=x[p];Q!==void 0&&(fe[p]=i(Q)&&i(fe[p])?L(fe[p],Q):Q)}return fe}function v(D,x){if(!i(D)||!i(x)||D===x)return x;const fe=Object.create(Object.getPrototypeOf(D));return Object.assign(fe,D,x),fe}class G{#t;#e=new Map;#n;constructor(x=256,fe=null){this.#t=x,this.#n=fe}get size(){return this.#e.size}get max(){return this.#t}set max(x){this.#t=x,this.#r()}has(x){return this.#e.has(x)}get(x){const fe=this.#e;if(!fe.has(x))return;const p=fe.get(x);return fe.delete(x),fe.set(x,p),p}peek(x){return this.#e.get(x)}set(x,fe){const p=this.#e;return p.has(x)&&p.delete(x),p.set(x,fe),this.#r(),fe}delete(x){const fe=this.#e.get(x);return this.#e.delete(x)&&this.#n&&this.#n(fe,x),fe}clear(){if(this.#n)for(const[x,fe]of this.#e)this.#n(fe,x);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const x=this.#e;for(;x.size>this.#t;){const fe=x.keys().next().value,p=x.get(fe);x.delete(fe),this.#n&&this.#n(p,fe)}}}const S=new Map;function N(D,x){const fe=`${D||""}|${x?JSON.stringify(x):""}`;let p=S.get(fe);return p||(p=new Intl.Collator(D||void 0,{numeric:!0,sensitivity:"variant",...x}),S.set(fe,p)),p}function I(D,x){if(D===x)return 0;if(D==null)return 1;if(x==null)return-1;if(typeof D=="number"&&typeof x=="number")return Number.isNaN(D)?Number.isNaN(x)?0:1:Number.isNaN(x)||D<x?-1:D>x?1:0;const fe=String(D),p=String(x);return fe<p?-1:fe>p?1:0}function K(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const B=typeof requestAnimationFrame=="function";function ee(D){return B?requestAnimationFrame(D):setTimeout(()=>D(K()),16)}function J(D){D!=null&&(B?cancelAnimationFrame(D):clearTimeout(D))}function ue(D){let x=null,fe=null;const p=()=>{x=null;const X=fe;fe=null,D(...X||[])},Q=(...X)=>{fe=X,x===null&&(x=ee(p))};return Q.cancel=()=>{J(x),x=null,fe=null},Q.flush=()=>{x!==null&&(J(x),p())},Q}function de(D,x){let fe=null,p=null;const Q=()=>{if(fe=null,p===null)return;const le=p;p=null,D(...le),X()},X=()=>{fe=setTimeout(Q,x),typeof fe?.unref=="function"&&fe.unref()},ce=(...le)=>{fe===null?(D(...le),X()):(p=le,clearTimeout(fe),X())};return ce.flush=()=>{if(fe!==null&&clearTimeout(fe),fe=null,p===null)return;const le=p;p=null,D(...le)},ce.cancel=()=>{fe!==null&&clearTimeout(fe),fe=null,p=null},ce.pending=()=>fe!==null||p!==null,ce}function Oe(D,x=50){return typeof requestIdleCallback=="function"?requestIdleCallback(D,{timeout:x}):setTimeout(()=>D({timeRemaining:()=>0,didTimeout:!0}),1)}let Ae=0;function Se(D="l"){return`${D}${(++Ae).toString(36)}`}}),Ce("packages/worker/src/transport.js",function(o,me){"use strict";Object.defineProperty(o,"PROTOCOL",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"OPS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"CONTROL",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"ERRORS",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"packHandle",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"packHandles",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"TransportedDictionary",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"unpackHandle",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"unpackHandles",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"createMaskPool",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"isTransferable",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"collectTransfers",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isPortable",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"filterColumnIds",{enumerable:!0,get:function(){return i}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.isFunction,U=1,_=Object.freeze({SORT_COLUMN:"sortColumn",SORT_MULTI:"sortMulti",EVALUATE_FILTERS:"evaluateFilters",COMPACT:"compact",GROUP_BY_COLUMNS:"groupByColumns",TOTAL:"total",PIVOT:"pivot",FACET:"facet",COLUMNIZE:"columnize",COLLATE_STRING_RANKS:"collateStringRanks"}),Z=Object.freeze({READY:"ready",CANCEL:"cancel",PING:"ping"}),E=Object.freeze({NO_COMPUTE:"E_NO_COMPUTE",NO_KERNEL:"E_NO_KERNEL",ABORTED:"E_ABORTED",KERNEL:"E_KERNEL",PROTOCOL:"E_PROTOCOL"});function z(a){if(a==null)return null;const s=a.presence;return{id:a.id,kind:a.kind,nullable:!!a.nullable,values:a.values??null,presence:s?s.words??s:null,presenceBits:s?s.size??(s.words??s).length*8:0,dict:a.dict?re(a.dict):null,offsets:a.offsets??null,version:a.version??0}}function re(a){return Array.isArray(a)?a:W(a.values)?a.values():[]}function Y(a){const s=new Array(a.length);for(let h=0;h<a.length;h++)s[h]=z(a[h]);return s}class se{#t;#e;constructor(s,h){this.#t=s,this.#e=h}get words(){return this.#t}get size(){return this.#e}get(s){return(this.#t[s>>>3]&1<<(s&7))!==0}count(){const s=this.#t;let h=0;for(let u=0;u<s.length;u++){let t=s[u];for(;t;)t&=t-1,h++}return h}}class te{#t;#e=null;#n=0;#r=new Map;constructor(s){this.#t=s||[]}get size(){return this.#t.length}get version(){return this.#n}codeOf(s){if(this.#e===null){this.#e=new Map;for(let t=0;t<this.#t.length;t++)this.#e.set(this.#t[t],t)}const h=this.#e.get(s);if(h!==void 0)return h;const u=this.#t.length;return this.#t.push(s),this.#e.set(s,u),this.#n++,u}valueOf(s){return this.#t[s]}values(){return this.#t}ranks(s){const h=s||"",u=this.#r.get(h);if(u&&u.version===this.#n)return u.ranks;const t=this.#t.length,l=new Uint32Array(t);for(let r=0;r<t;r++)l[r]=r;const m=he(s).compare,e=this.#t,d=Array.from(l).sort((r,n)=>{const c=e[r],g=e[n];return c===g?0:c==null?1:g==null?-1:m(String(c),String(g))}),f=new Uint32Array(t);for(let r=0;r<d.length;r++)f[d[r]]=r;return this.#r.set(h,{version:this.#n,ranks:f}),f}}function H(a){if(a==null)return null;const s=a.presence?new se(a.presence,a.presenceBits||a.presence.length*8):null,h=a.dict?new te(a.dict):null,u=a.values,t=a.offsets??null,l=a.kind,m=e=>{if(s&&!s.get(e))return null;switch(l){case"dictionary":return h?h.valueOf(u[e]):u[e];case"bitset":return(u[e>>>3]&1<<(e&7))!==0;case"multi":{if(!t)return null;const d=t[e],f=t[e+1],r=new Array(f-d);for(let n=d;n<f;n++)r[n-d]=h?h.valueOf(u[n]):u[n];return r}default:return u[e]}};return{id:a.id,kind:l,nullable:a.nullable,values:u,presence:s,dict:h,offsets:t,get:m,version:a.version}}function T(a){const s=new Array(a.length);for(let h=0;h<a.length;h++)s[h]=H(a[h]);return s}function V(){const a=[],s=[];return{mask(h){for(let u=0;u<a.length;u++)if(a[u].length>=h){const t=a.splice(u,1)[0].subarray(0,h);return t.fill(0),t}return new Uint8Array(h)},indices(h){for(let u=0;u<s.length;u++)if(s[u].length>=h)return s.splice(u,1)[0].subarray(0,h);return new Uint32Array(h)},release(h){h&&(h instanceof Uint8Array?a.push(h):h instanceof Uint32Array&&s.push(h))},clear(){a.length=0,s.length=0}}}function ne(a){if(!ArrayBuffer.isView(a))return!1;const s=a.buffer;return s?typeof SharedArrayBuffer>"u"||!(s instanceof SharedArrayBuffer):!1}function R(a,s=[]){const h=u=>{if(!ne(u))return;const t=u.buffer;s.includes(t)||s.push(t)};if(a==null)return s;if(ArrayBuffer.isView(a))return h(a),s;if(Array.isArray(a)){for(const u of a)h(u);return s}if(typeof a=="object")for(const u of Object.keys(a)){const t=a[u];if(Array.isArray(t))for(const l of t)h(l);else h(t)}return s}function j(a,s=0){if(a==null)return!0;const h=typeof a;if(h==="function"||h==="symbol")return!1;if(h!=="object"||s>4||ArrayBuffer.isView(a)||a instanceof ArrayBuffer||a instanceof Date)return!0;if(Array.isArray(a)){for(const u of a)if(!j(u,s+1))return!1;return!0}for(const u of Object.keys(a))if(!j(a[u],s+1))return!1;return!0}function i(a,s=new Set){if(!a||typeof a!="object")return s;const h=a;typeof h.col=="string"&&s.add(h.col);const u=h.conditions;if(Array.isArray(u))for(const t of u)i(t,s);return s}}),Ce("packages/core/src/store/bitset.js",function(o,me){"use strict";Object.defineProperty(o,"Bitset",{enumerable:!0,get:function(){return he}});const ae=8;class he{static#t=new Uint8Array(256);static{for(let U=1;U<256;U++)he.#t[U]=he.#t[U>>1]+(U&1)}#e;#n;constructor(U=0){const _=Math.max(0,U|0);this.#n=_,this.#e=new Uint8Array(Math.ceil(_/ae))}get size(){return this.#n}get words(){return this.#e}get bytes(){return this.#e?this.#e.byteLength:0}get(U){return U<0||U>=this.#n?0:this.#e[U>>3]>>(U&7)&1}set(U){return U>=0&&U<this.#n&&(this.#e[U>>3]|=1<<(U&7)),this}clear(U){return U>=0&&U<this.#n&&(this.#e[U>>3]&=~(1<<(U&7))),this}assign(U,_){return _?this.set(U):this.clear(U)}fill(U=!1){return this.#e.fill(U?255:0),U&&this.#r(),this}grow(U){const _=Math.max(0,U|0);if(_<=this.#n)return this;const Z=Math.ceil(_/ae);if(Z>this.#e.length){const E=new Uint8Array(Z);E.set(this.#e),this.#e=E}return this.#n=_,this}count(){const U=this.#e,_=he.#t;let Z=0;for(let E=0;E<U.length;E++)Z+=_[U[E]];return Z}and(U){const _=U instanceof he?U.words:U,Z=this.#e,E=Math.min(Z.length,_.length);for(let z=0;z<E;z++)Z[z]&=_[z];for(let z=E;z<Z.length;z++)Z[z]=0;return this}or(U){const _=U instanceof he?U.words:U,Z=this.#e,E=Math.min(Z.length,_.length);for(let z=0;z<E;z++)Z[z]|=_[z];return this}not(){const U=this.#e;for(let _=0;_<U.length;_++)U[_]=~U[_]&255;return this.#r(),this}clone(){const U=new he(this.#n);return U.words.set(this.#e.subarray(0,U.words.length)),U}release(){this.#e=new Uint8Array(0),this.#n=0}#r(){const U=this.#n&7;if(U===0)return;const _=this.#n>>3;_<this.#e.length&&(this.#e[_]&=(1<<U)-1)}static from(U){const _=Array.isArray(U)?U:Array.from(U),Z=new he(_.length);for(let E=0;E<_.length;E++)_[E]&&Z.set(E);return Z}}}),Ce("packages/core/src/store/dictionary.js",function(o,me){"use strict";Object.defineProperty(o,"Dictionary",{enumerable:!0,get:function(){return U}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.defaultCompare;class U{#t;#e=new Map;#n=0;#r=null;#i=-1;#s="\\0";constructor(Z=[]){this.#t=[];for(let E=0;E<Z.length;E++){const z=Z[E];this.#e.has(z)||(this.#e.set(z,this.#t.length),this.#t.push(z))}}get size(){return this.#t.length}get version(){return this.#n}get bytes(){let Z=this.#t.length*8;for(let E=0;E<this.#t.length;E++){const z=this.#t[E];typeof z=="string"&&(Z+=z.length*2),Z+=16}return Z}codeOf(Z){const E=this.#e.get(Z);if(E!==void 0)return E;const z=this.#t.length;return this.#t.push(Z),this.#e.set(Z,z),this.#n++,z}lookup(Z){const E=this.#e.get(Z);return E===void 0?-1:E}has(Z){return this.#e.has(Z)}valueOf(Z){return this.#t[Z]}values(){return this.#t}ranks(Z){const E=Z||"";if(this.#r&&this.#i===this.#n&&this.#s===E)return this.#r;const z=this.#t.length,re=new Array(z);for(let H=0;H<z;H++)re[H]=H;const Y=he(Z).compare,se=this.#t;re.sort((H,T)=>this.#h(se[H],se[T],Y));const te=new Uint32Array(z);for(let H=0;H<z;H++)te[re[H]]=H;return this.#r=te,this.#i=this.#n,this.#s=E,te}#h(Z,E,z){return typeof Z=="string"&&typeof E=="string"?z(Z,E):W(Z,E)}}}),Ce("packages/core/src/store/multivalue.js",function(o,me){"use strict";Object.defineProperty(o,"MultiValue",{enumerable:!0,get:function(){return ae}});class ae{#t;#e;#n=0;#r=0;constructor(W={}){const U=Math.max(1,W.rows??16),_=Math.max(1,W.values??U);this.#t=new Int32Array(_),this.#e=new Uint32Array(U+1)}get values(){return this.#t}get offsets(){return this.#e}get rows(){return this.#n}get length(){return this.#r}get bytes(){return this.#t.byteLength+this.#e.byteLength}count(W){return W<0||W>=this.#n?0:this.#e[W+1]-this.#e[W]}at(W){return W<0||W>=this.#n?this.#t.subarray(0,0):this.#t.subarray(this.#e[W],this.#e[W+1])}has(W,U){if(W<0||W>=this.#n)return!1;const _=this.#t,Z=this.#e[W+1];for(let E=this.#e[W];E<Z;E++)if(_[E]===U)return!0;return!1}hasAny(W,U){for(let _=0;_<U.length;_++)if(this.has(W,U[_]))return!0;return!1}hasAll(W,U){for(let _=0;_<U.length;_++)if(!this.has(W,U[_]))return!1;return!0}hasNone(W,U){return!this.hasAny(W,U)}push(W){const U=this.#n,_=W.length;this.#i(U+1),this.#s(this.#r+_);const Z=this.#r;for(let E=0;E<_;E++)this.#t[Z+E]=W[E]|0;return this.#r+=_,this.#n=U+1,this.#e[U]=Z,this.#e[U+1]=this.#r,U}write(W,U){if(W===this.#n){this.push(U);return}if(W<0||W>this.#n)return;const _=this.#e[W],Z=this.#e[W+1],E=U.length;if(Z-_===E){for(let z=0;z<E;z++)this.#t[_+z]=U[z]|0;return}this.#h(W,U)}compact(W,U,_){const Z=this.#t,E=this.#e,z=this.#n,re=new Int32Array(Math.max(1,this.#r)),Y=new Uint32Array(U+1);let se=0;for(let te=0;te<z;te++){if(W[te]===_)continue;const H=E[te],T=E[te+1];Y[W[te]]=se;for(let V=H;V<T;V++)re[se++]=Z[V];Y[W[te]+1]=se}this.#t=re,this.#e=Y,this.#n=U,this.#r=se}release(){this.#t=new Int32Array(0),this.#e=new Uint32Array(1),this.#n=0,this.#r=0}#i(W){if(W+1<=this.#e.length)return;let U=this.#e.length-1;for(;U<W;)U=U*2||16;const _=new Uint32Array(U+1);_.set(this.#e),this.#e=_}#s(W){if(W<=this.#t.length)return;let U=this.#t.length;for(;U<W;)U=U*2||16;const _=new Int32Array(U);_.set(this.#t),this.#t=_}#h(W,U){const _=this.#t,Z=this.#e,E=this.#n,z=U.length-(Z[W+1]-Z[W]),re=new Int32Array(Math.max(1,this.#r+z)),Y=new Uint32Array(Z.length);let se=0;for(let te=0;te<E;te++){if(Y[te]=se,te===W)for(let H=0;H<U.length;H++)re[se++]=U[H]|0;else for(let H=Z[te];H<Z[te+1];H++)re[se++]=_[H];Y[te+1]=se}this.#t=re,this.#e=Y,this.#r=se}}}),Ce("packages/core/src/compute/handle.js",function(o,me){"use strict";Object.defineProperty(o,"identity",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"rowCount",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"bitReader",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"presenceReader",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"dictSize",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"dictValue",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"multiValue",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"valueReader",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"numericTotalOrder",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"valueComparator",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"dictRanks",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isMissing",{enumerable:!0,get:function(){return j}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.defaultCompare,U=ae.warnOnce;function _(i){const a=new Uint32Array(i);for(let s=0;s<i;s++)a[s]=s;return a}function Z(i,a){if(a&&typeof a.count=="number")return a.count;if(!i)return 0;if(typeof i.count=="number")return i.count;if(typeof i.length=="number")return i.length;const s=i.values;return i.kind==="multi"&&i.offsets?Math.max(0,i.offsets.length-1):s?i.kind==="bitset"?typeof s.size=="number"?s.size:i.presence&&typeof i.presence.size=="number"?i.presence.size:(U(`count:${i.id}`,`column "${i.id}" is bitset-backed with no declared row count; assuming ${s.length*8}`),s.length*8):s.length:i.presence&&typeof i.presence.size=="number"?i.presence.size:0}const E=new WeakMap;function z(i){const a=i.constructor;if(!a)return"unknown";const s=E.get(a);if(s)return s;let h="unknown";try{let u=null;typeof a.from=="function"?u=a.from([!1,!0]):(u=new a(8),u.set(1));const t=u&&u.words;t&&t.length&&(t[0]===2?h="lsb":t[0]===64&&(h="msb"))}catch{h="unknown"}return E.set(a,h),h}function re(i){if(!i)return()=>0;const a=i instanceof Uint8Array?i:i.words;if(a instanceof Uint8Array){const s=i instanceof Uint8Array?"lsb":z(i);if(s==="lsb")return h=>a[h>>>3]>>>(h&7)&1;if(s==="msb")return h=>a[h>>>3]>>>7-(h&7)&1}return typeof i.get=="function"?s=>i.get(s)?1:0:()=>0}function Y(i){return!i||!i.presence?null:re(i.presence)}function se(i){return i?typeof i.size=="number"?i.size:typeof i.values=="function"?i.values().length:0:0}function te(i,a){return i?typeof i.valueOf=="function"?i.valueOf(a):typeof i.values=="function"?i.values()[a]:null:null}function H(i,a){const s=i.offsets,h=i.values;if(!s||!h)return[];const u=s[a],t=s[a+1];if(!(t>u))return[];const l=i.dict,m=new Array(t-u);for(let e=u;e<t;e++)m[e-u]=l?te(l,h[e]):h[e];return m}function T(i){if(!i)return()=>{};const a=i.values,s=Y(i),h=i.kind;if(h==="dictionary"){const u=i.dict;return s?t=>s(t)?te(u,a[t]):null:t=>te(u,a[t])}if(h==="bitset"){const u=re(a);return s?t=>s(t)?u(t)===1:null:t=>u(t)===1}if(h==="multi")return s?u=>s(u)?H(i,u):null:u=>H(i,u);if(!a&&typeof i.get=="function"){const u=i.get.bind(i);return t=>{const l=u(t);return l===void 0?null:l}}return s?u=>{if(!s(u))return null;const t=a[u];return t===void 0?null:t}:u=>{const t=a[u];return t===void 0?null:t}}function V(i,a){if(i<a)return-1;if(i>a)return 1;if(i===a){const u=Object.is(i,-0),t=Object.is(a,-0);return u===t?0:u?-1:1}const s=Number.isNaN(i),h=Number.isNaN(a);return s&&h?0:s?1:-1}function ne(i){const a=he(i);return(s,h)=>{if(s===h)return 0;const u=typeof s,t=typeof h;if(u==="string"&&t==="string")return a.compare(s,h);if(u==="number"&&t==="number")return V(s,h);if(u==="boolean"&&t==="boolean")return s===h?0:s?1:-1;if(s instanceof Date||h instanceof Date){const l=s instanceof Date?s.getTime():Number(s),m=h instanceof Date?h.getTime():Number(h);return V(l,m)}return W(s,h)}}function R(i,a){if(i&&typeof i.ranks=="function")return i.ranks(a);const s=i&&typeof i.values=="function"?i.values():[],h=s.length,u=ne(a),t=new Array(h);for(let m=0;m<h;m++)t[m]=m;t.sort((m,e)=>u(s[m],s[e])||m-e);const l=new Uint32Array(h);for(let m=0;m<h;m++)l[t[m]]=m;return l}function j(i){return i==null||typeof i=="number"&&Number.isNaN(i)}}),Ce("packages/core/src/compute/sort.js",function(o,me){"use strict";Object.defineProperty(o,"radixSortFloat64",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"radixSortInt32",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"rankSortDictionary",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"mergeSortComparator",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"rankSortStrings",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"collateStringRanks",{enumerable:!0,get:function(){return n}}),Object.defineProperty(o,"sortColumn",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"sortMulti",{enumerable:!0,get:function(){return v}});const ae=me("packages/core/src/compute/handle.js"),he=ae.bitReader,W=ae.dictRanks,U=ae.dictSize,_=ae.identity,Z=ae.isMissing,E=ae.presenceReader,z=ae.rowCount,re=ae.valueComparator,Y=ae.valueReader,se=new Uint32Array(0),te=new ArrayBuffer(8),H=new Float64Array(te),T=new Uint32Array(te),V=(H[0]=-1,(T[1]&2147483648)!==0?1:0),ne=V===1?0:1;function R(S,N){H[0]=S;let I=T[V],K=T[ne];(I&2147483648)!==0?(I=~I>>>0,K=~K>>>0):I=(I^2147483648)>>>0,N[0]=K,N[1]=I}function j(S,N,I,K){if(K<2)return S;const B=new Uint32Array(256*8);for(let D=0;D<K;D++){const x=N[D],fe=I[D];B[x&255]++,B[256+(x>>>8&255)]++,B[512+(x>>>16&255)]++,B[768+(x>>>24&255)]++,B[1024+(fe&255)]++,B[1280+(fe>>>8&255)]++,B[1536+(fe>>>16&255)]++,B[1792+(fe>>>24&255)]++}let ee=S,J=N,ue=I,de=new Uint32Array(K),Oe=new Uint32Array(K),Ae=new Uint32Array(K);const Se=new Uint32Array(256);for(let D=0;D<8;D++){const x=D<<8,fe=(D&3)<<3,p=D>=4;let Q=!1;for(let le=0;le<256;le++)if(B[x+le]===K){Q=!0;break}if(Q)continue;let X=0;for(let le=0;le<256;le++)Se[le]=X,X+=B[x+le];for(let le=0;le<K;le++){const ge=J[le],Me=ue[le],be=(p?Me:ge)>>>fe&255,ye=Se[be]++;de[ye]=ee[le],Oe[ye]=ge,Ae[ye]=Me}let ce=ee;ee=de,de=ce,ce=J,J=Oe,Oe=ce,ce=ue,ue=Ae,Ae=ce}return ee}function i(S,N,I){if(I<2)return S;const K=new Uint32Array(256*4);for(let Oe=0;Oe<I;Oe++){const Ae=N[Oe];K[Ae&255]++,K[256+(Ae>>>8&255)]++,K[512+(Ae>>>16&255)]++,K[768+(Ae>>>24&255)]++}let B=S,ee=N,J=new Uint32Array(I),ue=new Uint32Array(I);const de=new Uint32Array(256);for(let Oe=0;Oe<4;Oe++){const Ae=Oe<<8,Se=Oe<<3;let D=!1;for(let p=0;p<256;p++)if(K[Ae+p]===I){D=!0;break}if(D)continue;let x=0;for(let p=0;p<256;p++)de[p]=x,x+=K[Ae+p];for(let p=0;p<I;p++){const Q=ee[p],X=de[Q>>>Se&255]++;J[X]=B[p],ue[X]=Q}let fe=B;B=J,J=fe,fe=ee,ee=ue,ue=fe}return B}function a(S,N,I,K){const B=new Uint32Array(K+1);for(let ue=0;ue<I;ue++)B[N[ue]]++;let ee=0;for(let ue=0;ue<=K;ue++){const de=B[ue];B[ue]=ee,ee+=de}const J=new Uint32Array(I);for(let ue=0;ue<I;ue++)J[B[N[ue]]++]=S[ue];return J}function s(S,N,I,K){return I<2?S:K<=65536||K<=I*2?a(S,N,I,K):i(S,N,I)}function h(S,N){return S.length===N&&S.byteOffset===0?S:Uint32Array.prototype.slice.call(S,0,N)}function u(S,N,I=!1){const K=N||_(S.length),B=K.length;if(B<2)return Uint32Array.from(K);const ee=new Uint32Array(B),J=new Uint32Array(B),ue=new Uint32Array(B),de=new Uint32Array(B),Oe=new Uint32Array(2);let Ae=0,Se=0;for(let fe=0;fe<B;fe++){const p=K[fe],Q=S[p];if(Number.isNaN(Q)){de[Se++]=p;continue}R(Q,Oe),I?(J[Ae]=~Oe[0]>>>0,ue[Ae]=~Oe[1]>>>0):(J[Ae]=Oe[0],ue[Ae]=Oe[1]),ee[Ae++]=p}const D=j(ee.subarray(0,Ae),J.subarray(0,Ae),ue.subarray(0,Ae),Ae);if(Se===0)return h(D,Ae);const x=new Uint32Array(B);return x.set(D.subarray(0,Ae),0),x.set(de.subarray(0,Se),Ae),x}function t(S,N,I=!1){const K=N||_(S.length),B=K.length;if(B<2)return Uint32Array.from(K);const ee=Uint32Array.from(K),J=new Uint32Array(B);for(let ue=0;ue<B;ue++){const de=(S[ee[ue]]^2147483648)>>>0;J[ue]=I?~de>>>0:de}return h(i(ee,J,B),B)}function l(S,N,I={}){const K=N||_(z(S,I)),B=K.length;if(B<2)return Uint32Array.from(K);const ee=W(S.dict,I.locale),J=S.values,ue=E(S),de=Math.max(U(S.dict),ee.length),Oe=de,Ae=Uint32Array.from(K),Se=new Uint32Array(B),D=!!I.descending;for(let x=0;x<B;x++){const fe=Ae[x];let p=ue&&ue(fe)===0?Oe:ee[J[fe]];p===void 0&&(p=Oe),Se[x]=D?Oe-p:p}return h(s(Ae,Se,B,de+1),B)}function m(S,N,I){const K=N.length;let B=Uint32Array.from(N);if(K<2)return B;let ee=new Uint32Array(K);for(let J=1;J<K;J<<=1){for(let de=0;de<K;de+=J<<1){const Oe=Math.min(de+J,K),Ae=Math.min(de+(J<<1),K);let Se=de,D=Oe,x=de;for(;Se<Oe&&D<Ae;)ee[x++]=I(S[B[Se]],S[B[D]])<=0?B[Se++]:B[D++];for(;Se<Oe;)ee[x++]=B[Se++];for(;D<Ae;)ee[x++]=B[D++]}const ue=B;B=ee,ee=ue}return B}function e(S,N,I){const K=he(S.values),B=N.length,ee=new Uint32Array(B),J=I?1:0;let ue=0;for(let de=0;de<B;de++)K(N[de])===J&&(ee[ue++]=N[de]);for(let de=0;de<B;de++)K(N[de])!==J&&(ee[ue++]=N[de]);return ee}function d(S,N){const I=S.values,K=S.kind;if((K==="object"||K===void 0)&&(Array.isArray(I)||ArrayBuffer.isView(I))&&!S.presence)return I;const ee=Y(S),J=new Array(z(S)||0);for(let ue=0;ue<N.length;ue++){const de=N[ue];J[de]=ee(de)}return J}function f(S,N){for(let I=0;I<N.length;I++)if(typeof S[N[I]]!="string")return!1;return!0}function r(S,N,I,K,B){const ee=S.length,J=Uint32Array.from(S);if(ee<2||K<1)return J;const ue=new Uint32Array(ee),de=K-1;for(let Oe=0;Oe<ee;Oe++){const Ae=I[N[Oe]];ue[Oe]=B?de-Ae:Ae}return h(s(J,ue,ee,K),ee)}function n(S,N,I){const K=re(I),B=new Array(N);for(let J=0;J<N;J++)B[J]=J;B.sort((J,ue)=>K(S[J],S[ue])||J-ue);const ee=new Uint32Array(N);for(let J=0;J<N;J++)ee[B[J]]=J;return ee}function c(S,N,I){const K=N.length,B=new Map,ee=[],J=new Uint32Array(K);for(let Oe=0;Oe<K;Oe++){const Ae=S[N[Oe]];let Se=B.get(Ae);Se===void 0&&(Se=ee.length,B.set(Ae,Se),ee.push(Ae)),J[Oe]=Se}const ue=ee.length,de=n(ee,ue,I.locale);return r(N,J,de,ue,!!I.descending)}function g(S,N,I){const K=d(S,N);if(N.length>=2&&f(K,N)){const J=S.stringRank;return J&&J.version===S.version&&J.usable(N,K,I.locale)?J.sort(N,I):c(K,N,I)}const B=re(I.locale),ee=I.descending?(J,ue)=>B(ue,J):B;return m(K,N,ee)}function A(S,N,I){const K=d(S,N),B=I.compare,J=!!I.descending?(ue,de)=>-B(ue,de,void 0,void 0,!0):(ue,de)=>B(ue,de,void 0,void 0,!1);return m(K,N,J)}function P(S,N){const I=N.length,K=E(S),B=S.values,ee=S.kind==="float64"&&!!B,J=S.kind==="object"||S.kind==="multi"||S.kind===void 0;if(!K&&!ee&&!J)return{present:N,absent:se};const ue=new Uint32Array(I),de=new Uint32Array(I);let Oe=0,Ae=0;if(K&&ee)for(let Se=0;Se<I;Se++){const D=N[Se];K(D)===1&&!Number.isNaN(B[D])?ue[Oe++]=D:de[Ae++]=D}else if(ee&&!K)for(let Se=0;Se<I;Se++){const D=N[Se];Number.isNaN(B[D])?de[Ae++]=D:ue[Oe++]=D}else if(K&&!J)for(let Se=0;Se<I;Se++){const D=N[Se];K(D)===1?ue[Oe++]=D:de[Ae++]=D}else{const Se=Y(S);for(let D=0;D<I;D++){const x=N[D];Z(Se(x))?de[Ae++]=x:ue[Oe++]=x}}return Ae===0?{present:N,absent:se}:{present:ue.subarray(0,Oe),absent:de.subarray(0,Ae)}}function q(S,N,I){if(N.length===0)return S;const K=new Uint32Array(S.length+N.length);return I?(K.set(N,0),K.set(S,N.length)):(K.set(S,0),K.set(N,S.length)),K}function L(S,N,I={}){const K=N||_(z(S,I));if(!S||K.length<2)return Uint32Array.from(K);const{present:B,absent:ee}=P(S,K);if(B.length===0)return Uint32Array.from(K);const J=!!I.descending;let ue;if(typeof I.compare=="function")ue=A(S,B,I);else switch(S.kind){case"float64":ue=u(S.values,B,J);break;case"int32":ue=t(S.values,B,J);break;case"dictionary":ue=l(S,B,I);break;case"bitset":ue=e(S,B,J);break;default:ue=g(S,B,I);break}return q(ue,ee,!!I.nullsFirst)}function v(S,N,I,K={}){const B=N||[],ee=B.length&&(B[0].handle||G(S,B[0].col))||S&&S[0];let J=I||_(z(ee,K));for(let ue=B.length-1;ue>=0;ue--){const de=B[ue],Oe=de.handle||G(S,de.col)||S&&S[ue];Oe&&(J=L(Oe,J,{descending:de.descending!==void 0?!!de.descending:de.dir==="desc",nullsFirst:!!de.nullsFirst,locale:de.locale!==void 0?de.locale:K.locale,compare:de.compare}))}return J instanceof Uint32Array?J:Uint32Array.from(J)}function G(S,N){if(!(!S||N===void 0)){for(let I=0;I<S.length;I++)if(S[I]&&S[I].id===N)return S[I]}}}),Ce("packages/core/src/store/stringrank.js",function(o,me){"use strict";Object.defineProperty(o,"DEFAULT_MAX_DISTINCT",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"StringRankIndex",{enumerable:!0,get:function(){return _}});const ae=me("packages/core/src/compute/sort.js"),he=ae.collateStringRanks,W=ae.rankSortStrings,U=1e5;class _{#t=[];#e=new Map;#n;#r=0;#i=0;#s=-1;#h;#u=!1;#o=null;#c=-1;#l="\\0";constructor(E=U){this.#h=E>0?E:U,this.#n=new Uint32Array(0)}get version(){return this.#s}set version(E){this.#s=E}get generation(){return this.#i}get size(){return this.#t.length}get capped(){return this.#u}get length(){return this.#r}get bytes(){let E=this.#n.byteLength;const z=this.#t;for(let re=0;re<z.length;re++)E+=z[re].length*2+24;return E}#a(E,z){const re=this.#e.get(E);if(re!==void 0)return re;if(this.#u)return-1;if(z&&this.#t.length>=this.#h)return this.#u=!0,-1;const Y=this.#t.length;return this.#t.push(E),this.#e.set(E,Y),this.#i++,Y}build(E,z){const re=z|0;this.#t=[],this.#e=new Map,this.#i=0,this.#u=!1,this.#o=null,this.#c=-1,this.#n=new Uint32Array(re);for(let Y=0;Y<re;Y++){const se=E[Y],te=typeof se=="string"?this.#a(se,!1):-1;this.#n[Y]=te<0?0:te}this.#r=re}append(E,z,re){const Y=(z|0)+(re|0);if(Y>this.#n.length){const se=new Uint32Array(Y);se.set(this.#n.subarray(0,this.#r)),this.#n=se}for(let se=z|0;se<Y;se++){const te=E[se],H=typeof te=="string"?this.#a(te,!0):-1;this.#n[se]=H<0?0:H}this.#r=Math.max(this.#r,Y)}ranks(E){const z=E||"";if(this.#o&&this.#c===this.#i&&this.#l===z)return this.#o;const re=he(this.#t,this.#t.length,E);return this.#o=re,this.#c=this.#i,this.#l=z,re}usable(E,z,re){if(this.#u||this.#t.length===0)return!1;const Y=this.#n,se=this.#t,te=this.#r;for(let H=0;H<E.length;H++){const T=E[H];if(T>=te||se[Y[T]]!==z[T])return!1}return!0}sort(E,z){const re=this.ranks(z.locale),Y=this.#t.length,se=E.length,te=new Uint32Array(se),H=this.#n;for(let T=0;T<se;T++)te[T]=H[E[T]];return W(E,te,re,Y,!!z.descending)}}}),Ce("packages/core/src/store/columnstore.js",function(o,me){"use strict";Object.defineProperty(o,"REMOVED",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"toFloat",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"ColumnHandle",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"ColumnStore",{enumerable:!0,get:function(){return l}});const ae=me("packages/core/src/internal/util.js"),he=ae.warnOnce,W=ae.isFunction,U=ae.pathGetter,Z=me("packages/core/src/store/bitset.js").Bitset,z=me("packages/core/src/store/dictionary.js").Dictionary,Y=me("packages/core/src/store/multivalue.js").MultiValue,te=me("packages/core/src/store/stringrank.js").StringRankIndex,H=4294967295,T=1024,V=5e3,ne=.2,R=new Set(["float64","int32","bitset","dictionary","object","multi"]);function j(m){return m==null}function i(m){if(typeof m=="number")return m;if(m instanceof Date)return m.getTime();if(typeof m=="boolean")return m?1:0;const e=Number(m);return Number.isNaN(e)&&typeof m=="string"?Date.parse(m):e}function a(m){const e=i(m);return Number.isFinite(e)?e|0:0}function s(m){return j(m)?[]:Array.isArray(m)?m:[m]}function h(m,e){switch(m.kind){case"float64":case"int32":return m.buf[e];case"bitset":return m.bits.get(e)===1;case"dictionary":return m.dict.valueOf(m.buf[e]);case"multi":{const d=m.mv.at(e),f=new Array(d.length);for(let r=0;r<d.length;r++)f[r]=m.dict.valueOf(d[r]);return f}default:return m.buf[e]}}function u(m,e){switch(m.kind){case"float64":case"int32":return m.values[e];case"bitset":return(m.values[e>>3]&1<<(e&7))!==0;case"dictionary":return(m.table||[])[m.values[e]];case"multi":{const d=m.offsets[e],f=m.offsets[e+1],r=m.table||[],n=new Array(f-d);for(let c=d;c<f;c++)n[c-d]=r[m.values[c]];return n}default:return m.values[e]}}class t{#t;#e;#n;#r;#i;#s;#h;#u=!1;#o=null;#c=null;#l=null;#a=null;#d=null;#w;#b;#k=-1;#m=null;#p=0;#f=0;#y=null;#O=null;#g=!1;constructor(e,d){this.#t=e.id;const f=R.has(e.kind)?e.kind:"object";e.kind&&!R.has(e.kind)&&he(`store.kind.${e.id}`,`column "${e.id}" declares unknown storage kind "${e.kind}"; falling back to object`),this.#n=f,this.#e=f,this.#r=e.nullable!==!1,this.#h=e.dictionary??null,this.#s=d,this.#i=W(e.read)?e.read:U(e.field||e.id),this.#w=e.stringRankIndex!=="off",this.#b=typeof e.stringRankMaxDistinct=="number"?e.stringRankMaxDistinct:0,this.#y=new Map}get id(){return this.#t}get kind(){return this.#u?this.#e:"object"}get target(){return this.#n}get nullable(){return this.#r}get values(){return this.#g?null:this.#u?this.#e==="bitset"?this.#c.words:this.#e==="multi"?this.#l.values:this.#o:this.#N().values}get presence(){return this.#g||!this.#r?null:this.#u?this.#m:this.#N().presence}get dict(){return this.#g||!this.#u?null:this.#e==="dictionary"||this.#e==="multi"?this.#a:null}get stringRank(){if(this.#g||!this.#w||this.kind!=="object")return null;const e=this.values,d=this.#s.physical();if(!e||d===0)return null;if(this.#d===null){if(typeof e[0]!="string")return null;const f=new te(this.#S());return f.build(e,d),f.version=this.#f,this.#d=f,this.#k=this.#f,f.capped?null:f}return this.#d.length<d&&this.#d.append(e,this.#d.length,d-this.#d.length),this.#d.version=this.#f,this.#k=this.#f,this.#d.capped?null:this.#d}#S(){return this.#b}#j(){this.#d=null,this.#k=-1}get offsets(){return this.#g||!this.#u||this.#e!=="multi"?null:this.#l.offsets}get version(){return this.#f}get bytes(){let e=0;return this.#o&&(e+=this.#o.byteLength??this.#o.length*8),this.#c&&(e+=this.#c.bytes),this.#l&&(e+=this.#l.bytes),this.#m&&(e+=this.#m.bytes),this.#a&&(e+=this.#a.bytes),this.#y&&(e+=this.#y.size*24),e}get(e){if(!this.#g&&!(e<0||e>=this.#s.physical())){if(!this.#u)return this.#M(e);if(this.#r&&this.#m.get(e)===0)return null;switch(this.#e){case"float64":case"int32":return this.#o[e];case"bitset":return this.#c.get(e)===1;case"dictionary":return this.#a.valueOf(this.#o[e]);case"multi":{const d=this.#l.at(e),f=new Array(d.length);for(let r=0;r<d.length;r++)f[r]=this.#a.valueOf(d[r]);return f}default:return this.#o[e]}}}set(e,d){this.#g||(this.#u?this.#A(e,d):this.#y.set(e,d===void 0?null:d),this.#d&&this.#j(),this.#f++)}read(e){return this.#i(e)}appendColumn(e,d,f){if(this.#g||f<=0)return;if(!this.#u){this.#f++;return}const r=this.#i,n=this.#r,c=this.#m;let g=!1;switch(this.#e){case"float64":{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]);if(typeof q=="number"){n&&c.set(d+P),A[d+P]=q;continue}const L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?NaN:i(q)}break}case"int32":{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?0:a(q)}break}case"bitset":{const A=this.#c;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A.assign(d+P,!L&&!!q)}break}case"dictionary":{const A=this.#o,P=this.#a;for(let q=0;q<f;q++){const L=r(e[q]),v=L==null;n?c.assign(d+q,!v):v&&(g=!0),A[d+q]=v?0:P.codeOf(L)}break}case"multi":{const A=this.#l,P=this.#a;for(let q=0;q<f;q++){const L=r(e[q]),v=L==null;n?c.assign(d+q,!v):v&&(g=!0);const G=s(L),S=new Array(G.length);for(let N=0;N<G.length;N++)S[N]=P.codeOf(G[N]);A.write(d+q,S)}break}default:{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?null:q}break}}g&&he(`store.null.${this.#t}`,`column "${this.#t}" is declared non-nullable but received null; storing a filler value`),this.#d&&this.#e==="object"&&(this.#d.append(this.#o,d,f),this.#d.version=this.#f+1,this.#k=this.#f+1),this.#f++}appendPacked(e,d,f){if(this.#g||f<=0||!e)return;if(!this.#u){this.#f++;return}const r=this.#m,n=e.presence;if(r)if(n)for(let g=0;g<f;g++)r.assign(d+g,(n[g>>3]&1<<(g&7))!==0);else for(let g=0;g<f;g++)r.set(d+g);const c=e.kind===this.#e;if(c&&(this.#e==="float64"||this.#e==="int32")){this.#o.set(e.values,d),this.#f++;return}if(c&&this.#e==="bitset"){const g=e.values;for(let A=0;A<f;A++)this.#c.assign(d+A,(g[A>>3]&1<<(A&7))!==0);this.#f++;return}if(c&&this.#e==="dictionary"){const g=e.table||[],A=new Uint32Array(g.length);for(let v=0;v<g.length;v++)A[v]=this.#a.codeOf(g[v]);const P=e.values,q=this.#o,L=r;for(let v=0;v<f;v++){if(L&&(n&&(n[v>>3]&1<<(v&7))===0)){q[d+v]=0;continue}q[d+v]=A[P[v]]??0}this.#f++;return}if(c&&this.#e==="multi"){const g=e.table||[],A=new Uint32Array(g.length);for(let L=0;L<g.length;L++)A[L]=this.#a.codeOf(g[L]);const P=e.values,q=e.offsets;for(let L=0;L<f;L++){const v=q[L],G=q[L+1],S=new Array(G-v);for(let N=v;N<G;N++)S[N-v]=A[P[N]]??0;this.#l.write(d+L,S)}this.#f++;return}for(let g=0;g<f;g++){const A=n?(n[g>>3]&1<<(g&7))===0:e.kind==="object"?e.values[g]===null:!1;this.#A(d+g,A?null:u(e,g))}this.#f++}touch(){this.#f++}columnarise(e,d){if(this.#u||this.#g)return;const f=new Array(d);for(let r=0;r<d;r++)f[r]=this.#M(r);this.#e=this.#n,this.#u=!0,this.#P(e);for(let r=0;r<d;r++)this.#A(r,f[r]);this.#y.clear(),this.#O=null,this.#j(),this.#f++}grow(e){if(!(!this.#u||this.#g||e<=this.#p)){switch(this.#e){case"float64":case"int32":case"dictionary":{const d=new this.#o.constructor(e);d.set(this.#o),this.#o=d;break}case"bitset":this.#c.grow(e);break;case"multi":break;default:this.#o.length=e;break}this.#m&&this.#m.grow(e),this.#p=e,this.#f++}}convert(e){if(this.#g||!R.has(e)||(this.#n=e,!this.#u||e===this.#e))return!1;const d={kind:this.#e,buf:this.#o,bits:this.#c,mv:this.#l,dict:this.#a},f=this.#s.physical(),r=this.#m;this.#e=e,this.#P(this.#p);for(let n=0;n<f;n++){const c=r!==null&&r.get(n)===0;c&&e!=="multi"||this.#A(n,c?null:h(d,n))}return this.#j(),this.#f++,!0}compact(e,d,f){if(!this.#g){if(this.#j(),!this.#u){const r=this.#y;if(r.size){const n=new Map;for(const[c,g]of r)e[c]!==H&&n.set(e[c],g);this.#y=n}this.#O=null,this.#f++;return}switch(this.#e){case"float64":case"int32":case"dictionary":case"object":{const r=this.#o;for(let n=0;n<d;n++)e[n]!==H&&(r[e[n]]=r[n]);if(this.#e==="object")for(let n=f;n<d;n++)r[n]=void 0;break}case"bitset":{const r=this.#c;for(let n=0;n<d;n++)e[n]!==H&&r.assign(e[n],r.get(n)===1);for(let n=f;n<d;n++)r.clear(n);break}case"multi":this.#l.compact(e,f,H);break;default:break}if(this.#m){const r=this.#m;for(let n=0;n<d;n++)e[n]!==H&&r.assign(e[n],r.get(n)===1);for(let n=f;n<d;n++)r.clear(n)}this.#f++}}release(){this.#g||(this.#g=!0,this.#o=null,this.#c&&this.#c.release(),this.#c=null,this.#l&&this.#l.release(),this.#l=null,this.#m&&this.#m.release(),this.#m=null,this.#a=null,this.#d=null,this.#y=new Map,this.#O=null,this.#p=0,this.#f++)}#P(e){const d=Math.max(1,e);switch(this.#o=null,this.#c=null,this.#l=null,this.#e){case"float64":this.#o=new Float64Array(d);break;case"int32":this.#o=new Int32Array(d);break;case"bitset":this.#c=new Z(d);break;case"dictionary":this.#o=new Uint32Array(d),this.#a=this.#a??new z(this.#h??[]);break;case"multi":this.#l=new Y({rows:d,values:d}),this.#a=this.#a??new z(this.#h??[]);break;default:this.#o=new Array(d);break}this.#e!=="dictionary"&&this.#e!=="multi"&&(this.#a=null),this.#r&&(this.#m?this.#m.grow(d):this.#m=new Z(d)),this.#p=d}#A(e,d){const f=j(d);switch(this.#r?this.#m.assign(e,!f):f&&he(`store.null.${this.#t}`,`column "${this.#t}" is declared non-nullable but received null; storing a filler value`),this.#e){case"float64":this.#o[e]=f?NaN:i(d);break;case"int32":this.#o[e]=f?0:a(d);break;case"bitset":this.#c.assign(e,!f&&!!d);break;case"dictionary":this.#o[e]=f?0:this.#a.codeOf(d);break;case"multi":{const r=s(d),n=new Array(r.length);for(let c=0;c<r.length;c++)n[c]=this.#a.codeOf(r[c]);this.#l.write(e,n);break}default:this.#o[e]=f?null:d;break}}#M(e){if(this.#y.has(e))return this.#y.get(e);const d=this.#i(this.#s.rowAt(e));return d===void 0?null:d}#N(){if(this.#O&&this.#O.version===this.#f)return this.#O;const e=this.#s.physical(),d=new Array(e),f=this.#r?new Z(e):null;for(let r=0;r<e;r++){const n=this.#M(r);d[r]=n,f&&!j(n)&&f.set(r)}return this.#O={version:this.#f,values:d,presence:f},this.#O}}class l{#t;#e=new Map;#n=[];#r=[];#i=0;#s=0;#h=0;#u=0;#o=new Z(0);#c=!1;#l=!0;#a;#d;#w;#b=!1;constructor(e,d={}){this.#t=Array.isArray(e)?e:[],this.#d=Math.max(1,d.initialCapacity??T),this.#l=d.retainSource!==!1,this.#a=this.#l?d.columnarBelow??V:0,this.#w=d.compactRatio??ne;const f={rowAt:r=>this.#r[r],physical:()=>this.#i};for(const r of this.#t){if(!r||!r.id)continue;if(this.#e.has(r.id)){he(`store.dup.${r.id}`,`duplicate column id "${r.id}" in the store schema; ignoring the second`);continue}const n=new t(r,f);this.#e.set(r.id,n),this.#n.push(n)}this.#a<=0&&this.#p()}get count(){return this.#h}get physical(){return this.#i}get capacity(){return this.#c?this.#s:this.#r.length}get tombstones(){return this.#u}get columnar(){return this.#c}get destroyed(){return this.#b}get bytes(){let e=this.#o.bytes+this.#r.length*8;for(const d of this.#n)e+=d.bytes;return e}append(e){const d=this.#i;if(this.#b||!e)return{from:d,to:d};const f=e.length|0;if(f===0)return{from:d,to:d};if(this.#l)for(let n=0;n<f;n++)this.#r[d+n]=e[n];if(this.#i=d+f,this.#h+=f,this.#o.grow(this.#i),!this.#c){if(this.#i>=this.#a)this.#p();else for(const n of this.#n)n.touch();return{from:d,to:this.#i}}this.#k(this.#i);const r=this.#n;for(let n=0;n<r.length;n++)r[n].appendColumn(e,d,f);return{from:d,to:this.#i}}appendPacked(e,d){const f=this.#i;if(this.#b||!e)return{from:f,to:f};const r=e.count|0;if(r===0)return{from:f,to:f};if(this.#l&&d)for(let c=0;c<r;c++)this.#r[f+c]=d[c];this.#i=f+r,this.#h+=r,this.#o.grow(this.#i),this.#c||this.#p(),this.#k(this.#i);const n=new Map;for(const c of e.columns)n.set(c.id,c);for(const c of this.#n){const g=n.get(c.id);g?c.appendPacked(g,f,r):c.grow(this.#s)}return{from:f,to:this.#i}}source(e){if(this.#l)return this.#r[e];if(!(e<0||e>=this.#i))return this.#m(e)}setSource(e,d){this.#b||e<0||e>=this.#i||this.#l&&(this.#r[e]=d)}get(e,d){const f=this.#e.get(e);return f?f.get(d):void 0}set(e,d,f){if(this.#b||d<0||d>=this.#i)return;const r=this.#e.get(e);if(!r){he(`store.set.${e}`,`set() on unknown column "${e}"`);return}r.set(d,f)}remove(e){return this.#b||e<0||e>=this.#i||this.#o.get(e)===1?!1:(this.#o.set(e),this.#u++,this.#h--,!0)}live(e){return e<0||e>=this.#i?!1:this.#o.get(e)===0}compact(e={}){if(this.#b||this.#u===0||!e.force&&this.#u/this.#i<this.#w)return null;const d=this.#i,f=new Uint32Array(d);let r=0;for(let n=0;n<d;n++)f[n]=this.#o.get(n)===1?H:r++;for(const n of this.#n)n.compact(f,d,r);if(this.#l){const n=this.#r;for(let c=0;c<d;c++)f[c]!==H&&(n[f[c]]=n[c]);n.length=r}return this.#i=r,this.#h=r,this.#u=0,this.#o=new Z(Math.max(this.#s,r)),f}column(e){return this.#e.get(e)}columns(){return this.#n.slice()}liveIndices(){const e=new Uint32Array(this.#h);if(this.#u===0){for(let f=0;f<this.#i;f++)e[f]=f;return e}let d=0;for(let f=0;f<this.#i;f++)this.#o.get(f)===0&&(e[d++]=f);return e}convert(e,d){const f=this.#e.get(e);return f?f.convert(d):!1}destroy(){if(!this.#b){this.#b=!0;for(const e of this.#n)e.release();this.#e.clear(),this.#n.length=0,this.#r.length=0,this.#o.release(),this.#i=0,this.#h=0,this.#u=0,this.#s=0}}#k(e){if(e<=this.#s)return;let d=this.#s||this.#d;for(;d<e;)d*=2;for(const f of this.#n)f.grow(d);this.#o.grow(d),this.#s=d}#m(e){const d={};for(const f of this.#n)d[f.id]=f.get(e);return d}#p(){if(this.#c)return;let e=this.#d;for(;e<this.#i;)e*=2;this.#c=!0,this.#s=e,this.#o.grow(e);for(const d of this.#n)d.columnarise(e,this.#i)}}}),Ce("packages/core/src/store/ingest.js",function(o,me){"use strict";Object.defineProperty(o,"INGEST_DEFAULTS",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"inferKind",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"decideText",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"createReaders",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"Ingest",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"ingest",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"ingestSync",{enumerable:!0,get:function(){return R}});const ae=me("packages/core/src/internal/util.js"),he=ae.now,W=ae.nextFrame,U=ae.infoOnce,_=ae.warnOnce,Z=ae.isFunction,E=ae.pathGetter,re=me("packages/core/src/store/columnstore.js").ColumnStore,Y=Object.freeze({chunkMs:8,chunkRows:512,sampleSize:100,dictionaryRatio:.1,columnarBelow:5e3,initialCapacity:1024});function se(j,i={}){if(i.multi)return"multi";if(j.length===0)return"object";let a=0,s=0,h=0,u=0,t=0;for(let m=0;m<j.length;m++){const e=j[m];typeof e=="number"?a++:typeof e=="boolean"?s++:typeof e=="string"?h++:e instanceof Date?u++:Array.isArray(e)&&t++}const l=j.length;return a===l?"float64":s===l?"bitset":u===l?"float64":h===l?"text":t===l?"multi":"object"}function te(j,i,a){return i<=0||j<a*i?"dictionary":"object"}function H(j,i,a){const s=new Map,h=new Map;for(const c of j){if(c.computed)continue;const g=Z(c.read)?c.read:E(c.field||c.id);h.set(c.id,g),s.set(c.id,g)}const u=i?.order??[],t=i?.fns??{},l=i?.deps??{},m=i?.wrapDeps??null,e=u.filter(c=>Z(t[c])),d=e.some(c=>l[c]==="*");let f=new WeakMap;const r=c=>{const g={};if(d)for(const[A,P]of h)g[A]=P(c);for(const A of e){const P=l[A];let q;if(P==="*")q=g;else{q={};const L=P||[];for(let v=0;v<L.length;v++){const G=L[v];q[G]=G in g?g[G]:h.get(G)?.(c)}}g[A]=t[A](m?m(q,A):q,{data:c,row:null,column:null,grid:null,context:a})}return g},n=c=>{if(c===null||typeof c!="object"&&typeof c!="function")return r(c);let g=f.get(c);return g===void 0&&(g=r(c),f.set(c,g)),g};for(const c of e)s.set(c,g=>n(g)[c]);return{readers:s,reset(){f=new WeakMap}}}class T{spec;read;kind;inferred;nullable;candidate=!1;distinct=null;change=null;reason="";constructor(i,a){this.spec=i,this.read=a,this.kind="object",this.inferred=!1,this.nullable=i.nullable!==!1}}class V{#t;#e=[];#n=null;#r;#i=0;#s;#h=!1;#u=!1;#o=0;#c;constructor(i,a={},s={}){this.#t=Array.isArray(i)?i:Array.from(i||[]),this.#s={...Y,...s};const h=a.columns??[];this.#r=H(h,a.computed??null,a.context),this.#c=this.#t.length>=this.#s.columnarBelow,this.#l(h,a.computed??null),this.#n=new re(this.#e.map(u=>({id:u.spec.id,kind:u.kind,nullable:u.nullable,read:u.read,dictionary:u.spec.dictionary})),{initialCapacity:this.#s.initialCapacity,columnarBelow:this.#s.columnarBelow})}get store(){return this.#n}get done(){return this.#h||this.#u}get progress(){return this.#i}slice(){if(this.done)return!1;if(this.#s.signal?.aborted)return this.#u=!0,!1;const i=he(),{chunkMs:a,chunkRows:s}=this.#s,h=this.#t.length;do{const u=Math.min(this.#i+s,h);this.#n.append(this.#t.slice(this.#i,u)),this.#a(this.#i,u),this.#i=u,this.#r.reset(),this.#w(!1)}while(this.#i<h&&he()-i<a);return this.#o+=he()-i,this.#s.onProgress?.({loaded:this.#i,total:h}),this.#i>=h?(this.#w(!0),this.#h=!0,!1):!0}cancel(){this.#u=!0}result(){return{store:this.#n,schema:this.#e.map(i=>({id:i.spec.id,kind:i.kind,nullable:i.nullable,read:i.read,dictionary:i.spec.dictionary})),decisions:this.#e.map(i=>({id:i.spec.id,kind:i.kind,nullable:i.nullable,inferred:i.inferred,distinct:i.candidate||i.change?this.#d(i):null,change:i.change,reason:i.reason})),count:this.#n.count,elapsed:this.#o,cancelled:this.#u}}#l(i,a){const s=this.#t,h=Math.min(this.#s.sampleSize,s.length),u=this.#s.dictionaryRatio,t=a?.pure instanceof Set?a.pure:new Set(a?.pure??a?.order??[]);for(const l of i){if(!l||!l.id)continue;if(l.computed&&(l.pure===!1||a&&!t.has(l.id))){_(`ingest.impure.${l.id}`,`column "${l.id}" is an impure computed column and is not materialised into the store`);continue}const m=this.#r.readers.get(l.id)??(Z(l.read)?l.read:E(l.field||l.id)),e=new T(l,m);if(l.kind)e.kind=l.kind,e.reason="declared by the caller";else if(l.dictionary)e.kind=l.multi?"multi":"dictionary",e.reason="value table supplied (lookup column)";else{const d=[];for(let r=0;r<h&&d.length<this.#s.sampleSize;r++){const n=m(s[r]);n!=null&&d.push(n)}e.inferred=!0;const f=se(d,{multi:l.multi});if(f==="text"){const r=new Set(d).size;e.kind=te(r,d.length,u),e.candidate=this.#c,e.reason=`sampled ${r} distinct in ${d.length}`}else e.kind=f,e.reason=`inferred from ${d.length} sampled values`,f==="object"&&d.length&&U(`ingest.mixed.${l.id}`,`column "${l.id}" holds mixed or unrecognised value types; storing as an object array. Declare a type to avoid this.`);e.kind==="object"&&e.candidate&&(e.distinct=new Set(d))}this.#e.push(e)}}#a(i,a){const s=this.#t;for(const h of this.#e){if(!h.candidate||!h.distinct)continue;const u=h.distinct;for(let t=i;t<a;t++){const l=h.read(s[t]);l!=null&&u.add(l)}}}#d(i){if(i.distinct)return i.distinct.size;const a=this.#n.column(i.spec.id);return a?.dict?a.dict.size:0}#w(i){const a=this.#s.dictionaryRatio,s=this.#t.length;for(const h of this.#e){if(!h.candidate)continue;const u=this.#d(h);if(h.kind==="dictionary"&&u>=a*s){const t=this.#n.column(h.spec.id);h.distinct=new Set(t?.dict?t.dict.values():[]),this.#n.convert(h.spec.id,"object"),h.kind="object",h.change="demoted",h.reason=`${u} distinct values is at or above ${a*100}% of ${s} rows`;continue}if(h.kind==="object"&&u>=a*s){h.candidate=!1,h.distinct=null,h.reason=`${u} distinct values is at or above ${a*100}% of ${s} rows`;continue}i&&h.kind==="object"&&u<a*s&&(this.#n.convert(h.spec.id,"dictionary"),h.kind="dictionary",h.change=h.change==="demoted"?null:"promoted",h.reason=`${u} distinct values is below ${a*100}% of ${s} rows`,h.distinct=null),i&&(h.candidate=!1)}}}async function ne(j,i={},a={}){const s=new V(j,i,a),h=a.scheduler?.frame??W;for(;s.slice();)await new Promise(u=>{h(u)});return s.result()}function R(j,i={},a={}){const s=new V(j,i,{...a,chunkMs:1/0});for(;s.slice(););return s.result()}}),Ce("packages/core/src/store/columnpack.js",function(o,me){"use strict";Object.defineProperty(o,"isPortableSchema",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"packChunk",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"packedTransfers",{enumerable:!0,get:function(){return V}});const he=me("packages/core/src/internal/util.js").pathGetter,W=me("packages/core/src/store/ingest.js"),U=W.inferKind,_=W.decideText,Z=W.INGEST_DEFAULTS,z=me("packages/core/src/store/columnstore.js").toFloat,re=new Set(["float64","int32","bitset","dictionary","object","multi"]);function Y(ne){if(!Array.isArray(ne)||ne.length===0)return!1;for(const R of ne)if(!R||typeof R.id!="string"||typeof R.field!="string"||R.field===""||R.kind&&!re.has(R.kind))return!1;return!0}function se(ne){const R=z(ne);return Number.isFinite(R)?R|0:0}function te(ne){return ne==null?[]:Array.isArray(ne)?ne:[ne]}function H(ne,R,j,i){if(ne.kind)return ne.kind;const a=[];for(let u=0;u<R.length&&a.length<Z.sampleSize;u++){const t=R[u];t!=null&&a.push(t)}const s=U(a,{multi:ne.multi});if(s!=="text")return s;const h=new Set(a).size;return _(h,a.length,i)}function T(ne,R,j={}){const i=R.length|0,a=j.dictionaryRatio??Z.dictionaryRatio,s=[];for(const h of ne){const u=he(h.field||h.id),t=h.nullable!==!1,l=new Array(i);for(let r=0;r<i;r++){const n=u(R[r]);l[r]=n===void 0?null:n}const m=H(h,l,i,a),e=t?new Uint8Array(i+7>>3):null,d=r=>{e&&(e[r>>3]|=1<<(r&7))};let f;switch(m){case"float64":{const r=new Float64Array(i);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),r[n]=g?NaN:z(c)}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"int32":{const r=new Int32Array(i);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),r[n]=g?0:se(c)}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"bitset":{const r=new Uint8Array(i+7>>3);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),!g&&c&&(r[n>>3]|=1<<(n&7))}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"dictionary":{const r=new Uint32Array(i),n=[],c=new Map;for(let g=0;g<i;g++){const A=l[g];if(A===null){r[g]=0;continue}d(g);let P=c.get(A);P===void 0&&(P=n.length,n.push(A),c.set(A,P)),r[g]=P}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:n};break}case"multi":{const r=[],n=new Map,c=new Uint32Array(i+1),g=[];for(let A=0;A<i;A++){const P=l[A];c[A]=g.length,P===null||d(A);const L=te(P);for(let v=0;v<L.length;v++){const G=L[v];let S=n.get(G);S===void 0&&(S=r.length,r.push(G),n.set(G,S)),g.push(S)}}c[i]=g.length,f={id:h.id,kind:m,nullable:t,values:Int32Array.from(g),presence:e,offsets:c,table:r};break}default:{const r=new Array(i);for(let n=0;n<i;n++){const c=l[n];c!==null&&d(n),r[n]=c}f={id:h.id,kind:"object",nullable:t,values:r,presence:e,offsets:null,table:null};break}}s.push(f)}return{count:i,columns:s}}function V(ne){const R=[];if(!ne||!Array.isArray(ne.columns))return R;const j=i=>{ArrayBuffer.isView(i)&&i.buffer&&!R.includes(i.buffer)&&R.push(i.buffer)};for(const i of ne.columns)j(i.values),j(i.presence),j(i.offsets);return R}}),Ce("packages/core/src/compute/sortspec.js",function(o,me){"use strict";Object.defineProperty(o,"collationDescriptor",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"isPortableSort",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"isPortableSortSet",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"describeSortEntry",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"describeSort",{enumerable:!0,get:function(){return _}});function ae(Z){return{locale:Z===void 0?void 0:String(Z),numeric:!0,sensitivity:"variant"}}function he(Z){return!!Z&&typeof Z.compare!="function"}function W(Z){if(!Z)return!0;for(let E=0;E<Z.length;E++)if(!he(Z[E]))return!1;return!0}function U(Z,E){const z=Z.col!==void 0?Z.col:Z.handle&&Z.handle.id,re=Z.locale!==void 0?Z.locale:E;return{col:z,descending:Z.descending!==void 0?!!Z.descending:Z.dir==="desc",nullsFirst:!!Z.nullsFirst,collation:ae(re)}}function _(Z,E){const z=Z||[],re=new Array(z.length);for(let Y=0;Y<z.length;Y++)re[Y]=U(z[Y],E);return re}}),Ce("packages/core/src/format/date.js",function(o,me){"use strict";Object.defineProperty(o,"scanPattern",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"toDate",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"compilePattern",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"compileDate",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"toIsoDate",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"toIsoDateTime",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"compareIso",{enumerable:!0,get:function(){return R}});const ae=me("packages/core/src/internal/util.js"),he=ae.isNil,W=ae.warnOnce,U=["yyyy","yy","MMMM","MMM","MM","M","dd","d","EEEE","EEE","HH","H","hh","h","mm","m","ss","s","SSS","a"];function _(j){const i=[];let a=0,s="";const h=()=>{s&&(i.push({token:null,text:s}),s="")};for(;a<j.length;){const u=j[a];if(u==="\'"){if(j[a+1]==="\'"){s+="\'",a+=2;continue}const l=j.indexOf("\'",a+1);if(l===-1){s+=j.slice(a+1),a=j.length;continue}s+=j.slice(a+1,l),a=l+1;continue}const t=U.find(l=>j.startsWith(l,a));if(t){h(),i.push({token:t,text:t}),a+=t.length;continue}/[A-Za-z]/.test(u)&&W(`date.pattern.token:${u}`,`the date pattern "${j}" contains \'${u}\', which is not a supported token, so it is rendered as text. Quote it as a literal to silence this. Supported: ${U.join(" ")}.`),s+=u,a+=1}return h(),i}const Z=/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.\\d+)?)?$/;function E(j){if(he(j)||j==="")return null;if(j instanceof Date)return Number.isNaN(j.getTime())?null:j;if(typeof j=="number")return Number.isNaN(j)?null:new Date(j);if(typeof j=="string"){const i=Z.exec(j.trim());if(i){const[,s,h,u,t="0",l="0",m="0"]=i;return new Date(+s,+h-1,+u,+t,+l,+m)}const a=new Date(j);return Number.isNaN(a.getTime())?null:a}return null}function z(j,i){return String(j).padStart(i,"0")}function re(j){if(!j)return s=>({year:s.getFullYear(),month:s.getMonth()+1,day:s.getDate(),hour:s.getHours(),minute:s.getMinutes(),second:s.getSeconds(),ms:s.getMilliseconds(),weekday:s.getDay()});const i=new Intl.DateTimeFormat("en-US",{timeZone:j,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,weekday:"short"}),a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return s=>{const h={year:0,month:1,day:1,hour:0,minute:0,second:0,ms:s.getMilliseconds(),weekday:0};for(const u of i.formatToParts(s))switch(u.type){case"year":h.year=Number(u.value);break;case"month":h.month=Number(u.value);break;case"day":h.day=Number(u.value);break;case"hour":h.hour=Number(u.value)%24;break;case"minute":h.minute=Number(u.value);break;case"second":h.second=Number(u.value);break;case"weekday":h.weekday=a[u.value]??0;break;default:break}return h}}function Y(j,i,a){const s=_(j),h=re(a),u=new Set(s.filter(d=>d.token).map(d=>d.token)),t=u.has("MMM")?new Intl.DateTimeFormat(i,{month:"short",timeZone:a}):null,l=u.has("MMMM")?new Intl.DateTimeFormat(i,{month:"long",timeZone:a}):null,m=u.has("EEE")?new Intl.DateTimeFormat(i,{weekday:"short",timeZone:a}):null,e=u.has("EEEE")?new Intl.DateTimeFormat(i,{weekday:"long",timeZone:a}):null;return d=>{const f=h(d);let r="";for(const n of s){if(!n.token){r+=n.text;continue}switch(n.token){case"yyyy":r+=z(f.year,4);break;case"yy":r+=z(f.year%100,2);break;case"MMMM":r+=l.format(d);break;case"MMM":r+=t.format(d);break;case"MM":r+=z(f.month,2);break;case"M":r+=String(f.month);break;case"dd":r+=z(f.day,2);break;case"d":r+=String(f.day);break;case"EEEE":r+=e.format(d);break;case"EEE":r+=m.format(d);break;case"HH":r+=z(f.hour,2);break;case"H":r+=String(f.hour);break;case"hh":r+=z(f.hour%12===0?12:f.hour%12,2);break;case"h":r+=String(f.hour%12===0?12:f.hour%12);break;case"mm":r+=z(f.minute,2);break;case"m":r+=String(f.minute);break;case"ss":r+=z(f.second,2);break;case"s":r+=String(f.second);break;case"SSS":r+=z(f.ms,3);break;case"a":r+=f.hour<12?"AM":"PM";break;default:r+=n.text;break}}return r}}const se=[["year",365*24*36e5],["month",720*36e5],["week",168*36e5],["day",24*36e5],["hour",36e5],["minute",6e4],["second",1e3]];function te(j,i){const a=j||{},s=a.locale||i||void 0,h=a.nullDisplay??"",u=a.timeZone;let t;if(a.pattern)t=Y(a.pattern,s,u);else if(a.dateStyle||a.timeStyle){const f={timeZone:u};a.dateStyle&&(f.dateStyle=a.dateStyle),a.timeStyle&&(f.timeStyle=a.timeStyle);const r=new Intl.DateTimeFormat(s,f);t=n=>r.format(n)}else{const f=new Intl.DateTimeFormat(s,{dateStyle:"medium",timeZone:u});t=r=>f.format(r)}const l=a.relative?new Intl.RelativeTimeFormat(s,{numeric:"auto"}):null,e=(typeof a.relative=="object"&&a.relative?a.relative.threshold??7:7)*24*36e5,d=(f,r)=>{const n=E(f);if(!n)return h;if(l){const c=r&&typeof r.now=="number"?r.now:Date.now(),g=n.getTime()-c;if(Math.abs(g)<e){for(const[A,P]of se)if(Math.abs(g)>=P||A==="second")return l.format(Math.round(g/P),A)}}return t(n)};return d.spec=a,d}function H(j){if(he(j)||j==="")return null;if(typeof j=="string"){const s=/^(\\d{4}-\\d{2}-\\d{2})/.exec(j.trim());if(s)return s[1];const h=E(j);return h?H(h):null}const i=E(j);if(!i)return null;const a=s=>String(s).padStart(2,"0");return`${i.getFullYear()}-${a(i.getMonth()+1)}-${a(i.getDate())}`}function T(j,i){if(he(j)||j==="")return null;if(typeof j=="string"){const s=j.trim();if(V.test(s)){const t=E(s);return t?ne(t,i):null}const h=/^(\\d{4}-\\d{2}-\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?/.exec(s);if(h){const[,t,l,m,e]=h;return`${t}T${l}:${m}${e&&e!=="00"?`:${e}`:""}`}if(/^\\d{4}-\\d{2}-\\d{2}$/.test(s))return`${s}T00:00`;const u=E(s);return u?T(u):null}const a=E(j);return a?ne(a,i):null}const V=/(?:Z|[+-]\\d{2}:?\\d{2})$/i;function ne(j,i){const a=t=>String(t).padStart(2,"0");if(i)try{const t=new Intl.DateTimeFormat("en-CA",{timeZone:i,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(j).reduce((e,d)=>(d.type!=="literal"&&(e[d.type]=d.value),e),{}),l=t.hour==="24"?"00":t.hour,m=Number(t.second);return`${t.year}-${t.month}-${t.day}T${l}:${t.minute}`+(m?`:${t.second}`:"")}catch{}const s=`${j.getFullYear()}-${a(j.getMonth()+1)}-${a(j.getDate())}`,h=j.getSeconds(),u=`${a(j.getHours())}:${a(j.getMinutes())}${h?`:${a(h)}`:""}`;return`${s}T${u}`}function R(j,i){const a=he(j)||j===""?null:String(j),s=he(i)||i===""?null:String(i);return a===null?s===null?0:1:s===null||a<s?-1:a>s?1:0}}),Ce("packages/core/src/compute/filter.js",function(o,me){"use strict";Object.defineProperty(o,"releaseMask",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"compilePredicate",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"wallMs",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"testValue",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"itemwisePredicate",{enumerable:!0,get:function(){return S}}),Object.defineProperty(o,"evaluateCondition",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"evaluateFilters",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"pruneColumn",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(o,"mentionsColumn",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(o,"compact",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(o,"declareOperators",{enumerable:!0,get:function(){return x}}),Object.defineProperty(o,"declaredOperator",{enumerable:!0,get:function(){return fe}});const ae=me("packages/core/src/internal/util.js"),he=ae.isBlank,W=ae.toArray,U=ae.warnOnce,_=me("packages/core/src/format/date.js"),Z=_.toDate,E=_.toIsoDate,z=me("packages/core/src/compute/handle.js"),re=z.bitReader,Y=z.dictSize,se=z.dictValue,te=z.presenceReader,H=z.valueComparator,T=z.valueReader,V=/^\\d{4}-\\d{2}-\\d{2}$/,ne="\\0null\\0";function R(p,Q){const X=p&&p.pool;if(X){const ce=X.mask||X.acquireMask||X.acquire||X.take;if(typeof ce=="function"){const le=ce.call(X,Q);if(le&&le.length>=Q)return le}}return new Uint8Array(Q)}function j(p,Q){const X=p&&p.pool;if(!X||!Q)return;const ce=X.release||X.releaseMask||X.free||X.recycle;typeof ce=="function"&&ce.call(X,Q)}function i(p,Q,X){return p.fill(X,0,Q),p}function a(p){return p==null||typeof p=="number"&&Number.isNaN(p)}function s(p,Q){if(p==null)return p;if(Q==="number")return typeof p=="number"?p:Number(p);if(Q==="date"||Q==="dateString"){const X=E(p);return X===null?h(p):X}return Q==="boolean"?typeof p=="boolean"?p:p==="true"||p===1?!0:p==="false"||p===0?!1:!!p:p}function h(p){return p instanceof Date?p.getTime():typeof p=="number"?p:Date.parse(String(p))}function u(p){return typeof p=="number"?p:p instanceof Date?p.getTime():p==null||p===""?NaN:Number(p)}function t(p,Q){const X=typeof p=="string"?p:String(p);return Q?X:X.toLowerCase()}function l(p,Q){return p==null?ne:typeof p=="string"?Q?p:p.toLowerCase():p instanceof Date?p.getTime():p}function m(p,Q,X){const ce=new Set;for(const le of W(p)){const ge=s(le,X);ce.add(l(ge,Q)),typeof ge=="string"&&ge!==""&&Number.isFinite(Number(ge))?ce.add(Number(ge)):typeof ge=="number"&&Number.isFinite(ge)&&ce.add(l(String(ge),Q))}return ce}function e(p,Q,X){if(p==null||Q===null||Q===void 0)return p==null&&Q==null;const ce=typeof p,le=typeof Q;return ce==="string"&&le==="string"?X?p===Q:p.toLowerCase()===Q.toLowerCase():p instanceof Date||Q instanceof Date?h(p)===h(Q):ce==="number"&&le==="number"?p===Q||Number.isNaN(p)&&Number.isNaN(Q):ce==="number"&&le==="string"?p===Number(Q):ce==="string"&&le==="number"?Number(p)===Q:ce==="boolean"||le==="boolean"?p===Q:Array.isArray(p)&&Array.isArray(Q)?p.length===Q.length&&p.every((ge,Me)=>e(ge,Q[Me],X)):p===Q}function d(p,Q){try{if(p instanceof RegExp){const X=p.flags.replace(/[gy]/g,"");return new RegExp(p.source,Q||X.includes("i")?X:`${X}i`)}return new RegExp(String(p),Q?"":"i")}catch(X){return U(`regex:${String(p)}`,`filter operator "matches" received an invalid pattern: ${String(p)}`,X),null}}function f(p,Q){if(p&&p.type==="datetime"&&r.has(p.op))return P(p,Q);const X=q(p,Q),ce=p&&p.type;return ce!=="date"&&ce!=="dateString"?X:le=>X(typeof le=="string"&&V.test(le)?le:E(le)??le)}const r=new Set(["eq","ne","lt","lte","gt","gte","between","notBetween","in","notIn"]),n=/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3})\\d*)?)?)?$/,c=new Map;function g(p,Q){let X=c.get(Q);if(X===void 0){try{X=new Intl.DateTimeFormat("en-CA",{timeZone:Q,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{X=null}c.set(Q,X)}if(!X)return null;const ce={};for(const le of X.formatToParts(p))le.type!=="literal"&&(ce[le.type]=le.value);return ce}function A(p,Q){if(p==null||p==="")return null;if(typeof p=="string"){const ge=n.exec(p.trim());if(ge)return Date.UTC(+ge[1],+ge[2]-1,+ge[3],+(ge[4]||0),+(ge[5]||0),+(ge[6]||0),+(ge[7]||"0").padEnd(3,"0"))}const X=Z(p);if(!X)return null;const ce=X.getUTCMilliseconds(),le=Q?g(X,Q):null;return le?Date.UTC(+le.year,+le.month-1,+le.day,le.hour==="24"?0:+le.hour,+le.minute,+le.second,ce):Date.UTC(X.getFullYear(),X.getMonth(),X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),ce)}function P(p,Q){const X=typeof p.timeZone=="string"&&p.timeZone?p.timeZone:void 0,ce=Me=>A(Me,X),le=Array.isArray(p.value)?p.value.map(ce):ce(p.value),ge=q({...p,type:"number",value:le},Q);return Me=>ge(A(Me))}function q(p,Q){const X=p&&p.op,ce=!!(p&&p.caseSensitive),le=p&&p.type,ge=H(Q),Me=be=>ye=>!be(ye);switch(X){case"eq":{const be=s(p.value,le);return ye=>e(ye,be,ce)}case"ne":{const be=s(p.value,le);return ye=>!e(ye,be,ce)}case"lt":case"lte":case"gt":case"gte":{const be=s(p.value,le);if(a(be))return()=>!1;const ye=X==="lt"?-1:X==="lte"?0:X==="gt"?1:2;return Re=>{if(a(Re))return!1;const Ne=ge(Re,be);return ye===-1?Ne<0:ye===0?Ne<=0:ye===1?Ne>0:Ne>=0}}case"between":case"notBetween":{const be=W(p.value),ye=s(be[0],le),Re=s(be[1],le),Ne=p.bounds||"[]",Ee=Ne.charAt(0)!=="(",Be=Ne.charAt(1)!==")";if(a(ye)||a(Re))return X==="between"?()=>!1:()=>!0;const ze=We=>{if(a(We))return!1;const Xe=ge(We,ye),Ye=ge(We,Re);return(Ee?Xe>=0:Xe>0)&&(Be?Ye<=0:Ye<0)};return X==="between"?ze:Me(ze)}case"in":case"notIn":{const be=m(p.value,ce,le),ye=Re=>be.has(l(Re,ce));return X==="in"?ye:Me(ye)}case"contains":case"notContains":{const be=t(s(p.value,le),ce),ye=Re=>Re==null?!1:t(Re,ce).includes(be);return X==="contains"?ye:Me(ye)}case"startsWith":{const be=t(s(p.value,le),ce);return ye=>ye==null?!1:t(ye,ce).startsWith(be)}case"endsWith":{const be=t(s(p.value,le),ce);return ye=>ye==null?!1:t(ye,ce).endsWith(be)}case"matches":{const be=d(p.value,ce);return be?ye=>ye==null?!1:be.test(String(ye)):()=>!1}case"blank":return be=>he(be)||Array.isArray(be)&&be.length===0;case"notBlank":return be=>!(he(be)||Array.isArray(be)&&be.length===0);case"containsAny":case"containsNone":{const be=m(p.value,ce,le),ye=Re=>{const Ne=Re==null?[]:W(Re);for(let Ee=0;Ee<Ne.length;Ee++)if(be.has(l(Ne[Ee],ce)))return!0;return!1};return X==="containsAny"?ye:Me(ye)}case"containsAll":{const be=W(p.value).map(ye=>l(s(ye,le),ce));return ye=>{const Re=ye==null?[]:W(ye);if(be.length===0)return!0;const Ne=new Set(Re.map(Ee=>l(Ee,ce)));for(let Ee=0;Ee<be.length;Ee++)if(!Ne.has(be[Ee]))return!1;return!0}}default:{const be=fe(X);return be?be.compile(p.value):(U(`op:${String(X)}`,`unknown filter operator "${String(X)}"; the condition is refused rather than matching every row`),()=>!1)}}}function L(p,Q,X){return f(Q,X)(p)}const v=Object.freeze({ne:"eq",notIn:"in",notBetween:"between",notContains:"contains"}),G=new Set(["containsAny","containsAll","containsNone"]);function S(p,Q,X){const ce=p&&p.op,le=v[ce]||ce,ge=f({...p,op:le,type:Q.type},X),Me=Q.items,be=ye=>{const Re=Me(ye);if(!Re)return!1;for(let Ne=0;Ne<Re.length;Ne++)if(ge(Re[Ne]))return!0;return!1};return v[ce]?ye=>!be(ye):be}function N(p,Q,X,ce){const le=te(p);if(le){const be=Q?1:0;for(let ye=0;ye<ce;ye++)X[ye]=le(ye)===be?1:0;return X}const ge=p.kind;if(ge==="float64"||ge==="int32"||ge==="bitset")return i(X,ce,Q?1:0);const Me=T(p);for(let be=0;be<ce;be++){const ye=Me(be),Re=he(ye)||Array.isArray(ye)&&ye.length===0;X[be]=Re===Q?0:1}return X}function I(p,Q,X,ce){const le=p.dict,ge=Y(le),Me=new Uint8Array(ge);for(let Ne=0;Ne<ge;Ne++)Me[Ne]=Q(se(le,Ne))?1:0;const be=p.values,ye=te(p);if(!ye){for(let Ne=0;Ne<ce;Ne++)X[Ne]=Me[be[Ne]];return X}const Re=Q(null)?1:0;for(let Ne=0;Ne<ce;Ne++)X[Ne]=ye(Ne)===1?Me[be[Ne]]:Re;return X}function K(p,Q,X,ce){const le=re(p.values),ge=Q(!0)?1:0,Me=Q(!1)?1:0,be=te(p);if(!be){for(let Re=0;Re<ce;Re++)X[Re]=le(Re)===1?ge:Me;return X}const ye=Q(null)?1:0;for(let Re=0;Re<ce;Re++)X[Re]=be(Re)===0?ye:le(Re)===1?ge:Me;return X}function B(p,Q,X,ce,le){const ge=p.values,Me=Q.type,be=Q.op;let ye=!0;switch(be){case"eq":case"ne":{const Ne=u(s(Q.value,Me)),Ee=typeof Q.value=="number"&&Number.isNaN(Q.value),Be=be==="ne"?1:0;if(Ee)for(let ze=0;ze<le;ze++)ce[ze]=(Number.isNaN(ge[ze])?1:0)^Be;else for(let ze=0;ze<le;ze++)ce[ze]=(ge[ze]===Ne?1:0)^Be;break}case"lt":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]<Ne?1:0;break}case"lte":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]<=Ne?1:0;break}case"gt":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]>Ne?1:0;break}case"gte":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]>=Ne?1:0;break}case"between":case"notBetween":{const Ne=W(Q.value),Ee=u(s(Ne[0],Me)),Be=u(s(Ne[1],Me)),ze=Q.bounds||"[]",We=ze.charAt(0)!=="(",Xe=ze.charAt(1)!==")",Ye=be==="notBetween"?1:0;if(We&&Xe)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>=Ee&ge[Ie]<=Be?1:0)^Ye;else if(We)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>=Ee&ge[Ie]<Be?1:0)^Ye;else if(Xe)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>Ee&ge[Ie]<=Be?1:0)^Ye;else for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>Ee&ge[Ie]<Be?1:0)^Ye;break}case"in":case"notIn":{const Ne=new Set;for(const Be of W(Q.value)){const ze=u(s(Be,Me));Number.isNaN(ze)||Ne.add(ze)}const Ee=be==="notIn"?1:0;for(let Be=0;Be<le;Be++)ce[Be]=(Ne.has(ge[Be])?1:0)^Ee;break}default:ye=!1;break}if(!ye)return!1;const Re=te(p);if(Re){const Ne=X(null)?1:0;for(let Ee=0;Ee<le;Ee++)Re(Ee)===0&&(ce[Ee]=Ne)}return!0}function ee(p,Q,X,ce){const le=T(p);for(let ge=0;ge<ce;ge++)X[ge]=Q(le(ge))?1:0;return X}function J(p,Q,X){const ce=Q.count|0,le=X||R(Q,ce);if(!p)return i(le,ce,1);const ge=typeof Q.handle=="function"?Q.handle(p.col):void 0,Me=typeof Q.custom=="function"?Q.custom:null;if(!ge){if(Me){for(let Ne=0;Ne<ce;Ne++)le[Ne]=Me(p,Ne)?1:0;return le}return U(`filter:col:${String(p.col)}`,`filter references unknown column "${String(p.col)}"; the condition is refused rather than matching every row`),i(le,ce,0)}const be=p.op;if(be==="blank"||be==="notBlank")return N(ge,be==="notBlank",le,ce);const ye=typeof Q.itemwise=="function"?Q.itemwise(p.col):null;if(ye&&!fe(be)&&!G.has(be))return ee(ge,S(p,ye,Q.locale),le,ce);const Re=f(p,Q.locale);switch(ge.kind){case"dictionary":return I(ge,Re,le,ce);case"bitset":return K(ge,Re,le,ce);case"float64":case"int32":return B(ge,p,Re,le,ce)?le:ee(ge,Re,le,ce);default:return ee(ge,Re,le,ce)}}function ue(p,Q,X){if(!p)return i(R(Q,X),X,1);if(Array.isArray(p.conditions)){const ce=p.conditions.filter(Me=>Me!=null),le=p.op==="or"?"or":p.op==="not"?"not":"and";if(ce.length===0)return i(R(Q,X),X,1);const ge=ue(ce[0],Q,X);for(let Me=1;Me<ce.length;Me++){const be=ue(ce[Me],Q,X);if(le==="or")for(let ye=0;ye<X;ye++)ge[ye]|=be[ye];else for(let ye=0;ye<X;ye++)ge[ye]&=be[ye];j(Q,be)}if(le==="not")for(let Me=0;Me<X;Me++)ge[Me]^=1;return ge}return J(p,Q,R(Q,X))}function de(p,Q){return ue(p,Q,Q.count|0)}function Oe(p,Q){if(!p||!Q)return p||null;const X=p;if(Array.isArray(X.conditions)){if((X.op==="or"?"or":X.op==="not"?"not":"and")!=="and")return Ae(X,Q)?null:p;const le=[];for(const ge of X.conditions){const Me=Oe(ge,Q);Me&&le.push(Me)}return le.length?{...X,op:"and",conditions:le}:null}return X.col===Q?null:p}function Ae(p,Q){if(!p||typeof p!="object")return!1;const X=p;if(X.col===Q)return!0;if(Array.isArray(X.conditions)){for(const ce of X.conditions)if(Ae(ce,Q))return!0}return!1}function Se(p,Q,X){if(X&&X.length>=Q){let Me=0;for(let be=0;be<Q;be++)p[be]&&(X[Me++]=be);return X.subarray(0,Me)}let ce=0;for(let Me=0;Me<Q;Me++)ce+=p[Me]?1:0;const le=new Uint32Array(ce);let ge=0;for(let Me=0;Me<Q;Me++)p[Me]&&(le[ge++]=Me);return le}const D=new Map;function x(p){if(!(!p||typeof p!="object"))for(const[Q,X]of Object.entries(p))X&&typeof X.compile=="function"&&D.set(Q,X)}function fe(p){return typeof p=="string"?D.get(p):void 0}}),Ce("packages/core/src/compute/group.js",function(o,me){"use strict";Object.defineProperty(o,"packKeys",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"groupByColumns",{enumerable:!0,get:function(){return te}});const ae=me("packages/core/src/compute/handle.js"),he=ae.dictSize,W=ae.identity,U=ae.presenceReader,_=ae.rowCount,Z=ae.valueReader,E="",z="\\0",re=1<<20;function Y(H,T,V,ne){const R=H.length,j=H.map(t=>Z(t)),i=Array.isArray(ne)&&ne.some(Boolean),a=i?j.map((t,l)=>ne[l]?m=>ne[l](t(m)):t):j;if(!i&&R>0&&H.every(t=>t&&t.kind==="dictionary"&&t.dict)){const t=H.map(m=>he(m.dict)+1);let l=1;for(let m=0;m<R;m++)l*=t[m];if(l<=Number.MAX_SAFE_INTEGER){const m=H.map(r=>r.values),e=H.map(r=>U(r)),d=r=>{let n=0;for(let c=0;c<R;c++){const g=e[c],A=g&&g(r)===0?t[c]-1:m[c][r];n=n*t[c]+A}return n},f=new Float64Array(V);for(let r=0;r<V;r++)f[r]=d(T[r]);return{packed:f,strings:null,product:l,readers:a,keyOf:d}}}const h=t=>{let l="";for(let m=0;m<R;m++){const e=a[m](t);l+=(m===0?"":E)+(e==null?z:String(e))}return l},u=new Array(V);for(let t=0;t<V;t++)u[t]=h(T[t]);return{packed:null,strings:u,product:1/0,readers:a,keyOf:h}}function se(H,T,V,ne){const R=new Uint32Array(ne+1);for(let s=0;s<V;s++)R[T[s]+1]++;for(let s=0;s<ne;s++)R[s+1]+=R[s];const j=new Uint32Array(V),i=R.slice(0,ne);for(let s=0;s<V;s++)j[i[T[s]]++]=H[s];const a=new Array(ne);for(let s=0;s<ne;s++)a[s]=j.subarray(R[s],R[s+1]);return a}function te(H,T,V={}){const ne=H||[],R=T||W(_(ne[0],V)),j=R.length;if(ne.length===0||j===0)return{keys:[],buckets:[]};const{packed:i,strings:a,product:s,readers:h}=Y(ne,R,j,V.project),u=new Uint32Array(j);let t=0,l=null;if(i&&s<=Math.max(1024,Math.min(re,j*4))){const f=s,r=new Int32Array(f).fill(-1);for(let n=0;n<j;n++)r[i[n]]=0;for(let n=0;n<f;n++)r[n]===0&&(r[n]=t++);for(let n=0;n<j;n++)u[n]=r[i[n]];l=new Float64Array(t);for(let n=0;n<f;n++)r[n]>=0&&(l[r[n]]=n)}else if(i){const f=new Map;for(let r=0;r<j;r++){const n=i[r];let c=f.get(n);c===void 0&&(c=t++,f.set(n,c)),u[r]=c}l=new Float64Array(t);for(const[r,n]of f)l[n]=r}else{const f=new Map;for(let r=0;r<j;r++){const n=a[r];let c=f.get(n);c===void 0&&(c=t++,f.set(n,c)),u[r]=c}}const m=se(R,u,j,t),e=new Array(t);for(let f=0;f<t;f++){const r=m[f][0],n=new Array(h.length);for(let c=0;c<h.length;c++)n[c]=h[c](r);e[f]=n}const d={keys:e,buckets:m};return l&&(d.packed=l),d}}),Ce("packages/core/src/compute/facet.js",function(o,me){"use strict";Object.defineProperty(o,"STRATEGIES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"GRANULARITIES",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"facetKind",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"orderedReader",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"toNumeric",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"cardinalityOf",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"pickGranularity",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"floorTo",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"advance",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"computeBounds",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"countInto",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"bucketOf",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"facet",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return r}});const ae=me("packages/core/src/compute/handle.js"),he=ae.presenceReader,W=ae.valueReader,U=ae.dictSize,_=ae.dictValue,Z=Object.freeze(["equal","quantile","log"]),E=Object.freeze(["hour","day","week","month","quarter","year"]),z=20,re=50,Y=1e4;function se(n,c){if(!n)return"none";const g=c;if(g&&(g.multi===!0||typeof g.items=="function"))return"category";const A=c&&c.base;if(A==="date"||A==="datetime"||A==="time"||A==="dateString")return"date";switch(n.kind){case"bitset":return"boolean";case"float64":case"int32":return"numeric";case"dictionary":return"category";case"multi":return"category";default:return A==="number"?"numeric":A==="boolean"?"boolean":A==="text"?"category":"none"}}function te(n){const c=n.values,g=n.kind;if((g==="float64"||g==="int32")&&c)return P=>c[P];const A=W(n);return P=>H(A(P))}function H(n){if(typeof n=="number")return n;if(n instanceof Date)return n.getTime();if(n==null||n==="")return NaN;if(typeof n=="boolean")return n?1:0;if(typeof n=="string"){const c=Number(n);if(Number.isFinite(c))return c;const g=Date.parse(n);return Number.isFinite(g)?g:NaN}return NaN}function T(n,c,g,A=re){if(!n)return{cardinality:0,exact:!0};if(n.dict)return{cardinality:U(n.dict),exact:!0};if(n.kind==="bitset")return{cardinality:2,exact:!0};const P=W(n),q=c?c.length:g,L=new Set;for(let v=0;v<q;v++){const G=P(c?c[v]:v);if(G!=null&&(L.add(G),L.size>A))return{cardinality:L.size,exact:!1}}return{cardinality:L.size,exact:!0}}const V=36e5,ne=864e5;function R(n,c=z){const g=Number.isFinite(n)&&n>0?n:0,A=Math.max(1,c)*2;return g/V<=A?"hour":g/ne<=A?"day":g/(7*ne)<=A?"week":g/(30*ne)<=A?"month":g/(91*ne)<=A?"quarter":"year"}function j(n,c){if(!Number.isFinite(n))return NaN;const g=new Date(n);switch(c){case"hour":return g.setMinutes(0,0,0),g.getTime();case"day":return g.setHours(0,0,0,0),g.getTime();case"week":{g.setHours(0,0,0,0);const A=(g.getDay()+6)%7;return g.setDate(g.getDate()-A),g.getTime()}case"month":return g.setDate(1),g.setHours(0,0,0,0),g.getTime();case"quarter":return g.setMonth(Math.floor(g.getMonth()/3)*3,1),g.setHours(0,0,0,0),g.getTime();default:return g.setMonth(0,1),g.setHours(0,0,0,0),g.getTime()}}function i(n,c){const g=new Date(n);switch(c){case"hour":g.setHours(g.getHours()+1);break;case"day":g.setDate(g.getDate()+1);break;case"week":g.setDate(g.getDate()+7);break;case"month":g.setMonth(g.getMonth()+1);break;case"quarter":g.setMonth(g.getMonth()+3);break;default:g.setFullYear(g.getFullYear()+1);break}return g.getTime()}function a(n,c,g){const A=te(n),P=he(n),q=c?c.length:g;let L=1/0,v=-1/0,G=0,S=0;for(let N=0;N<q;N++){const I=c?c[N]:N;if(P&&!P(I)){G++;continue}const K=A(I);if(!Number.isFinite(K)){G++;continue}K<L&&(L=K),K>v&&(v=K),S++}return{min:L,max:v,nulls:G,finite:S}}function s(n,c,g,A){const P=te(n),q=he(n),L=c?c.length:g,v=L>A?L/A:1,G=[];for(let N=0;N<L;N+=v){const I=c?c[Math.floor(N)]:Math.floor(N);if(q&&!q(I))continue;const K=P(I);Number.isFinite(K)&&G.push(K)}const S=Float64Array.from(G);return S.sort(),S}function h(n,c,g,A={}){const P=A.kind||se(n,A.type);return P==="none"||!n?{kind:"none",buckets:[],suppressed:"type"}:P==="boolean"?u(n,c,g):P==="category"?t(n,c,g,A):l(n,c,g,P,A)}function u(n,c,g){const A=he(n);let P=0;if(A){const L=c?c.length:g;for(let v=0;v<L;v++)A(c?c[v]:v)||P++}const q=[{value:!1,label:"false"},{value:!0,label:"true"}];return P>0&&q.push({null:!0,label:"Empty"}),{kind:"boolean",buckets:q}}function t(n,c,g,A){const P=A.cardinalityLimit??re,{cardinality:q}=T(n,c,g,P);if(q>P&&(A.aboveLimit||"suppress")==="suppress")return{kind:"category",buckets:[],suppressed:"cardinality",cardinality:q};const L=W(n),v=c?c.length:g,G=new Map;let S=0;for(let ee=0;ee<v;ee++){const J=L(c?c[ee]:ee);if(J==null||J===""){S++;continue}if(Array.isArray(J)){if(!J.length){S++;continue}for(const ue of J)G.set(ue,(G.get(ue)||0)+1);continue}G.set(J,(G.get(J)||0)+1)}let N=[...G.entries()];A.order==="alpha"?N.sort((ee,J)=>String(ee[0]).localeCompare(String(J[0]))):N.sort((ee,J)=>J[1]-ee[1]);let I=0,K=0;if(N.length>P){K=N.length-P;for(let ee=P;ee<N.length;ee++)I+=N[ee][1];N=N.slice(0,P)}const B=N.map(([ee])=>({value:ee,label:String(ee)}));return I>0&&B.push({remainder:!0,label:`Other (${K} values)`}),S>0&&B.push({null:!0,label:"Empty"}),{kind:"category",buckets:B,cardinality:q}}function l(n,c,g,A,P){const{min:q,max:L,nulls:v,finite:G}=a(n,c,g);if(!G)return{kind:A,buckets:v?[{null:!0,label:"Empty"}]:[],empty:!0};const S=Math.max(1,Math.floor(P.buckets||z));let N=[];if(A==="date"){const K=E.includes(P.granularity)?P.granularity:R(L-q,S);let B=j(q,K);for(;B<=L&&N.length<4096;){const ee=i(B,K);if(!(ee>B))break;N.push({from:B,to:ee}),B=ee}return{kind:A,buckets:m(N,v),granularity:K}}const I=Z.includes(P.strategy)?P.strategy:"equal";if(I==="quantile"){const K=s(n,c,g,Y);if(K.length){const B=[K[0]];for(let ee=1;ee<S;ee++){const J=K[Math.min(K.length-1,Math.floor(ee/S*K.length))];J>B[B.length-1]&&B.push(J)}B.push(L);for(let ee=0;ee<B.length-1;ee++)N.push({from:B[ee],to:B[ee+1]})}}else if(I==="log"&&q>0){const K=Math.log10(q),ee=(Math.log10(L)-K)/S||1;for(let J=0;J<S;J++)N.push({from:10**(K+J*ee),to:10**(K+(J+1)*ee)})}if(!N.length){const K=(L-q)/S||1;for(let B=0;B<S;B++)N.push({from:q+B*K,to:q+(B+1)*K})}return N[N.length-1].to=L,{kind:A,buckets:m(N,v),strategy:I,min:q,max:L}}function m(n,c){return c>0?[...n,{null:!0,label:"Empty"}]:n}function e(n,c,g,A,P){const q=A&&A.buckets||[],L=P&&P.length>=q.length?P.subarray(0,q.length):new Uint32Array(q.length);if(L.fill(0),!n||!q.length)return L;const v=q.length-1,G=!!q[v]&&q[v].null===!0,S=c?c.length:g;if(A.kind==="boolean"){const ee=W(n);for(let J=0;J<S;J++){const ue=ee(c?c[J]:J);if(ue==null){G&&L[v]++;continue}L[ue?1:0]++}return L}if(A.kind==="category"){const ee=new Map;for(let de=0;de<q.length;de++)!q[de].null&&!q[de].remainder&&ee.set(q[de].value,de);const J=q.findIndex(de=>de.remainder),ue=W(n);for(let de=0;de<S;de++){const Oe=ue(c?c[de]:de);if(Oe==null||Oe===""){G&&L[v]++;continue}if(Array.isArray(Oe)){if(!Oe.length){G&&L[v]++;continue}for(const Se of Oe){const D=ee.get(Se);D!==void 0?L[D]++:J>=0&&L[J]++}continue}const Ae=ee.get(Oe);Ae!==void 0?L[Ae]++:J>=0&&L[J]++}return L}const N=G?q.length-1:q.length,I=new Float64Array(N+1);for(let ee=0;ee<N;ee++)I[ee]=q[ee].from;I[N]=N?q[N-1].to:0;const K=te(n),B=he(n);for(let ee=0;ee<S;ee++){const J=c?c[ee]:ee;if(B&&!B(J)){G&&L[v]++;continue}const ue=K(J);if(!Number.isFinite(ue)){G&&L[v]++;continue}const de=d(I,N,ue);de>=0&&L[de]++}return L}function d(n,c,g){if(!c||g<n[0])return-1;if(g>=n[c])return g===n[c]?c-1:-1;let A=0,P=c-1;for(;A<P;){const q=A+P+1>>>1;g>=n[q]?A=q:P=q-1}return A}function f(n,c,g,A={}){const P=A.bounds||h(n,A.boundsIndices??c,g,A);return{bounds:P,counts:e(n,c,g,P)}}const r=f}),Ce("packages/core/src/compute/special.js",function(o,me){"use strict";Object.defineProperty(o,"logGamma",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"incompleteBeta",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"normalQuantile",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"normalCdf",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"studentT",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"studentTQuantile",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"regularizedGammaP",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"chiSquareCdf",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"chiSquareUpperTail",{enumerable:!0,get:function(){return ne}});const ae=Object.freeze([676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23]),he=3e-12,W=1e-300;function U(R){if(R<.5)return Math.log(Math.PI/Math.sin(Math.PI*R))-U(1-R);const j=R-1;let i=.9999999999998099;const a=j+7.5;for(let s=0;s<ae.length;s++)i+=ae[s]/(j+s+1);return .5*Math.log(2*Math.PI)+(j+.5)*Math.log(a)-a+Math.log(i)}function _(R,j,i){const a=R+j,s=R+1,h=R-1;let u=1,t=1-a*i/s;Math.abs(t)<W&&(t=W),t=1/t;let l=t;for(let m=1;m<=300;m++){const e=2*m;let d=m*(j-m)*i/((h+e)*(R+e));t=1+d*t,Math.abs(t)<W&&(t=W),u=1+d/u,Math.abs(u)<W&&(u=W),t=1/t,l*=t*u,d=-(R+m)*(a+m)*i/((R+e)*(s+e)),t=1+d*t,Math.abs(t)<W&&(t=W),u=1+d/u,Math.abs(u)<W&&(u=W),t=1/t;const f=t*u;if(l*=f,Math.abs(f-1)<he)break}return l}function Z(R,j,i){if(!(R>0)||!(j>0)||!Number.isFinite(i))return Number.NaN;if(i<=0)return 0;if(i>=1)return 1;const a=Math.exp(U(R+j)-U(R)-U(j)+R*Math.log(i)+j*Math.log(1-i));return i<(R+1)/(R+j+2)?a*_(R,j,i)/R:1-a*_(j,R,1-i)/j}function E(R){if(!(R>0)||!(R<1))return R===0?-1/0:R===1?1/0:Number.NaN;const j=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],i=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572],a=[-.007784894002430293,-.3223964580411365,-2.400758277161838,-2.549732539343734,4.374664141464968,2.938163982698783],s=[.007784695709041462,.3224671290700398,2.445134137142996,3.754408661907416],h=.02425;let u,t,l;R<h?(u=Math.sqrt(-2*Math.log(R)),l=(((((a[0]*u+a[1])*u+a[2])*u+a[3])*u+a[4])*u+a[5])/((((s[0]*u+s[1])*u+s[2])*u+s[3])*u+1)):R<=1-h?(u=R-.5,t=u*u,l=(((((j[0]*t+j[1])*t+j[2])*t+j[3])*t+j[4])*t+j[5])*u/(((((i[0]*t+i[1])*t+i[2])*t+i[3])*t+i[4])*t+1)):(u=Math.sqrt(-2*Math.log(1-R)),l=-(((((a[0]*u+a[1])*u+a[2])*u+a[3])*u+a[4])*u+a[5])/((((s[0]*u+s[1])*u+s[2])*u+s[3])*u+1));const e=(.5*z(-l/Math.SQRT2)-R)*Math.sqrt(2*Math.PI)*Math.exp(l*l/2);return l-e/(1+l*e/2)}function z(R){const j=Math.abs(R),i=2/(2+j),a=4*i-2,s=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,15626441722e-18,-85238095915e-18,6529054439e-18,5059343495e-18,-991364156e-18,-227365122e-18,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18];let h=0,u=0,t;for(let m=s.length-1;m>0;m--)t=u,u=a*u-h+s[m],h=t;const l=i*Math.exp(-j*j+.5*(s[0]+a*u)-h);return R>=0?l:2-l}function re(R){return .5*z(-R/Math.SQRT2)}function Y(R,j){if(!(j>0)||!Number.isFinite(R))return Number.NaN;const i=.5*Z(j/2,.5,j/(j+R*R));return R>0?1-i:i}function se(R,j){if(!(R>0)||!(R<1)||!(j>0))return Number.NaN;if(j>1e7)return E(R);let i=-1e4,a=1e4,s=E(R);const h=U(j/2)+U(.5)-U((j+1)/2);for(let u=0;u<60;u++){const t=Y(s,j);t<R?i=s:a=s;const l=Math.exp(-((j+1)/2)*Math.log(1+s*s/j)-h)/Math.sqrt(j),m=l>0?(t-R)/l:0;if(Math.abs(m)<1e-12)break;const e=s-m;if(s=e>i&&e<a&&Number.isFinite(e)?e:(i+a)/2,a-i<1e-12)break}return s}function te(R,j){let i=R,a=1/R,s=a;for(let h=0;h<300&&(i+=1,s*=j/i,a+=s,!(Math.abs(s)<Math.abs(a)*he));h++);return a*Math.exp(-j+R*Math.log(j)-U(R))}function H(R,j){let i=j+1-R,a=1/W,s=1/i,h=s;for(let u=1;u<=300;u++){const t=-u*(u-R);i+=2,s=t*s+i,Math.abs(s)<W&&(s=W),a=i+t/a,Math.abs(a)<W&&(a=W),s=1/s;const l=s*a;if(h*=l,Math.abs(l-1)<he)break}return Math.exp(-j+R*Math.log(j)-U(R))*h}function T(R,j){return!(R>0)||!(j>=0)||!Number.isFinite(j)?Number.NaN:j===0?0:j<R+1?te(R,j):1-H(R,j)}function V(R,j){return j>0?T(j/2,R/2):Number.NaN}function ne(R,j){const i=V(R,j);return Number.isNaN(i)?Number.NaN:Math.min(1,Math.max(0,1-i))}}),Ce("packages/core/src/compute/linalg.js",function(o,me){"use strict";Object.defineProperty(o,"cholesky",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"choleskySolve",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"choleskyInverse",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"normalEquations",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"matVec",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"quadForm",{enumerable:!0,get:function(){return Z}});function ae(E){const z=E.length,re=Array.from({length:z},()=>new Array(z).fill(0));for(let Y=0;Y<z;Y++)for(let se=0;se<=Y;se++){let te=E[Y][se];for(let H=0;H<se;H++)te-=re[Y][H]*re[se][H];if(Y===se){if(!(te>0))return null;re[Y][se]=Math.sqrt(te)}else re[Y][se]=te/re[se][se]}return re}function he(E,z){const re=E.length,Y=new Array(re).fill(0);for(let te=0;te<re;te++){let H=z[te];for(let T=0;T<te;T++)H-=E[te][T]*Y[T];Y[te]=H/E[te][te]}const se=new Array(re).fill(0);for(let te=re-1;te>=0;te--){let H=Y[te];for(let T=te+1;T<re;T++)H-=E[T][te]*se[T];se[te]=H/E[te][te]}return se}function W(E){const z=E.length,re=Array.from({length:z},()=>new Array(z).fill(0));for(let Y=0;Y<z;Y++){const se=new Array(z).fill(0);se[Y]=1;const te=he(E,se);for(let H=0;H<z;H++)re[H][Y]=te[H]}return re}function U(E,z,re){const Y=E.length,se=Y?E[0].length:0,te=Array.from({length:se},()=>new Array(se).fill(0)),H=new Array(se).fill(0);for(let T=0;T<Y;T++){const V=re?re[T]:1,ne=E[T];for(let R=0;R<se;R++){const j=V*ne[R];H[R]+=j*z[T];for(let i=R;i<se;i++)te[R][i]+=j*ne[i]}}for(let T=0;T<se;T++)for(let V=0;V<T;V++)te[T][V]=te[V][T];return{xtwx:te,xtwy:H}}function _(E,z){return E.map(re=>re.reduce((Y,se,te)=>Y+se*z[te],0))}function Z(E,z){let re=0;for(let Y=0;Y<E.length;Y++){let se=0;for(let te=0;te<E.length;te++)se+=z[Y][te]*E[te];re+=E[Y]*se}return re}}),Ce("packages/core/src/compute/sketch.js",function(o,me){"use strict";Object.defineProperty(o,"Welford",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"Reservoir",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"hash32",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"HyperLogLog",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"SpaceSaving",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"KLL",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return te}});class ae{#t=0;#e=0;#n=0;static get errorBound(){return Object.freeze({kind:"exact",metric:"none",value:0,statement:"mean and variance match a full recompute to float rounding"})}get count(){return this.#t}add(T){if(!Number.isFinite(T))return;this.#t++;const V=T-this.#e;this.#e+=V/this.#t,this.#n+=V*(T-this.#e)}merge(T){if(T.#t===0)return;if(this.#t===0){this.#t=T.#t,this.#e=T.#e,this.#n=T.#n;return}const V=this.#t+T.#t,ne=T.#e-this.#e;this.#e+=ne*(T.#t/V),this.#n+=T.#n+ne*ne*(this.#t*T.#t/V),this.#t=V}mean(){return this.#t?this.#e:null}variance(){return this.#t>1?this.#n/(this.#t-1):null}varianceP(){return this.#t?this.#n/this.#t:null}stddev(){const T=this.variance();return T===null?null:Math.sqrt(T)}stddevP(){const T=this.varianceP();return T===null?null:Math.sqrt(T)}}class he{#t=[];#e=0;#n;#r;constructor(T,V=Math.random){if(!(T>0))throw new RangeError("reservoir capacity must be positive");this.#n=Math.floor(T),this.#r=V}static get errorBound(){return Object.freeze({kind:"probabilistic",metric:"none",value:0,statement:"uniform sample: each element included with probability capacity/n; sample statistics are unbiased estimators"})}get seen(){return this.#e}get size(){return this.#t.length}add(T){if(!Number.isFinite(T))return;if(this.#e++,this.#t.length<this.#n){this.#t.push(T);return}const V=Math.floor(this.#r()*this.#e);V<this.#n&&(this.#t[V]=T)}sample(){return this.#t.slice()}mean(){if(!this.#t.length)return null;let T=0;for(const V of this.#t)T+=V;return T/this.#t.length}quantile(T){const V=this.#t.length;if(!V)return null;const ne=this.#t.slice().sort((a,s)=>a-s);if(V===1)return ne[0];const R=(V-1)*Math.min(1,Math.max(0,T)),j=Math.floor(R),i=Math.ceil(R);return j===i?ne[j]:ne[j]+(R-j)*(ne[i]-ne[j])}}function W(H){return H^=H>>>16,H=Math.imul(H,2246822507),H^=H>>>13,H=Math.imul(H,3266489909),H^=H>>>15,H>>>0}function U(H){if(typeof H=="number"){const ne=new DataView(new ArrayBuffer(8));return ne.setFloat64(0,H===0?0:H),W(ne.getUint32(0)^ne.getUint32(4))}const T=typeof H=="string"?H:String(H);let V=2166136261;for(let ne=0;ne<T.length;ne++)V^=T.charCodeAt(ne),V=Math.imul(V,16777619);return W(V)}class _{#t;#e;#n;constructor(T=14){const V=Math.floor(T);if(V<4||V>16)throw new RangeError("HLL precision must be 4..16");this.#t=V,this.#e=1<<V,this.#n=new Uint8Array(this.#e)}static errorBoundFor(T=14){const V=1<<Math.floor(T),ne=1.04/Math.sqrt(V);return Object.freeze({kind:"probabilistic",metric:"relative",value:ne,statement:`distinct count within ~${(ne*100).toFixed(2)}% relative standard error (m=${V} buckets)`})}errorBound(){return _.errorBoundFor(this.#t)}add(T){const V=U(T),ne=V&this.#e-1,R=V>>>this.#t|1<<32-this.#t;let j=1,i=R;for(;(i&1)===0;)j++,i>>>=1;j>this.#n[ne]&&(this.#n[ne]=j)}count(){const T=this.#e,V=32-this.#t,ne=new Float64Array(V+2);for(let i=0;i<T;i++)ne[this.#n[i]]++;let R=T*z(1-ne[V+1]/T);for(let i=V;i>=1;i--)R=.5*(R+ne[i]);R+=T*E(ne[0]/T);const j=Z*T*T/R;return Math.round(j)}}const Z=.5/Math.log(2);function E(H){if(H===1)return 1/0;let T=1,V=H,ne;do H*=H,ne=V,V+=H*T,T+=T;while(V!==ne);return V}function z(H){if(H===0||H===1)return 0;let T=1,V=1-H,ne;do H=Math.sqrt(H),ne=V,T*=.5,V-=(1-H)**2*T;while(V!==ne);return V/3}class re{#t=new Map;#e;#n=0;constructor(T){if(!(T>0))throw new RangeError("Space-Saving capacity must be positive");this.#e=Math.floor(T)}errorBoundFor(T){const V=T/this.#e;return Object.freeze({kind:"deterministic",metric:"absolute",value:V,statement:`each count overestimates the truth by at most N/m = ${V.toFixed(2)} (N=${T}, m=${this.#e})`})}get seen(){return this.#n}add(T){this.#n++;const V=this.#t.get(T);if(V){V.count++;return}if(this.#t.size<this.#e){this.#t.set(T,{count:1,error:0});return}let ne,R=1/0;for(const[j,i]of this.#t)i.count<R&&(R=i.count,ne=j);this.#t.delete(ne),this.#t.set(T,{count:R+1,error:R})}top(T=this.#e){return[...this.#t.entries()].map(([ne,R])=>({item:ne,count:R.count,error:R.error})).sort((ne,R)=>R.count-ne.count).slice(0,Math.max(0,Math.floor(T)))}}class Y{#t;#e=[[]];#n=0;#r;#i;constructor(T=200,V=Math.random){this.#t=Math.max(8,Math.floor(T)),this.#r=V,this.#i=2/3}static errorBoundFor(T=200){const V=1/Math.max(8,Math.floor(T));return Object.freeze({kind:"probabilistic",metric:"rank",value:V,statement:`queried quantile\'s true rank within ~${(V*100).toFixed(2)}% of N of the requested rank (k=${T})`})}errorBound(){return Y.errorBoundFor(this.#t)}get count(){return this.#n}#s(T){const ne=this.#e.length-1-T,R=Math.ceil(this.#t*this.#i**ne);return Math.max(2,R)}add(T){Number.isFinite(T)&&(this.#n++,this.#e[0].push(T),this.#e[0].length>=this.#s(0)&&this.#h(0))}#h(T){const V=this.#e[T];V.sort((j,i)=>j-i),T+1>=this.#e.length&&this.#e.push([]);const ne=this.#e[T+1],R=this.#r()<.5?0:1;for(let j=R;j<V.length;j+=2)ne.push(V[j]);this.#e[T]=[];for(let j=0;j<this.#e.length;j++)if(this.#e[j].length>=this.#s(j)){this.#h(j);return}}#u(){const T=[];for(let V=0;V<this.#e.length;V++){const ne=1<<V;for(const R of this.#e[V])T.push({v:R,w:ne})}return T}quantile(T){const V=this.#u();if(!V.length)return null;V.sort((i,a)=>i.v-a.v);let ne=0;for(const i of V)ne+=i.w;const R=Math.min(1,Math.max(0,T))*ne;let j=0;for(const i of V)if(j+=i.w,j>=R)return i.v;return V[V.length-1].v}rank(T){let V=0;for(let ne=0;ne<this.#e.length;ne++){const R=1<<ne;for(const j of this.#e[ne])j<=T&&(V+=R)}return V}}const se=Object.freeze({distinct:_.errorBoundFor(14),median:Y.errorBoundFor(200),p25:Y.errorBoundFor(200),p75:Y.errorBoundFor(200),p90:Y.errorBoundFor(200),p95:Y.errorBoundFor(200),p99:Y.errorBoundFor(200),iqr:Y.errorBoundFor(200),topK:Object.freeze({kind:"deterministic",metric:"absolute",value:0,statement:"each count overestimates the truth by at most N/m; top-K exact when the K-th item exceeds N/m"})}),te={Welford:ae,Reservoir:he,HyperLogLog:_,SpaceSaving:re,KLL:Y,hash32:U,SKETCH_BOUNDS:se}}),Ce("packages/core/src/compute/statistics.js",function(o,me){"use strict";Object.defineProperty(o,"KENDALL_LIMIT",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"MAINTENANCE",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"APPROXIMATE",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"maintenanceOf",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"numbers",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"frequencies",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"herfindahl",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"entropy",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"evenness",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"topShare",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"gini",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"moments",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"quantileSorted",{enumerable:!0,get:function(){return n}}),Object.defineProperty(o,"quantile",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"STAT_FNS",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"STAT_LABELS",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"weightedAverage",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"extremeRow",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"correlation",{enumerable:!0,get:function(){return v}}),Object.defineProperty(o,"trimmedMean",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"winsorizedMean",{enumerable:!0,get:function(){return S}}),Object.defineProperty(o,"modifiedZOutliers",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"jarqueBera",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"weightedQuantile",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"pairs",{enumerable:!0,get:function(){return B}}),Object.defineProperty(o,"covariance",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"regression",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"fitLinearModel",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"ADF_CT_CRITICAL",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(o,"augmentedDickeyFuller",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(o,"autocorrelations",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"spearman",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"kendall",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(o,"seriesStats",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(o,"D2_N2",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(o,"D4_N2",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(o,"movingRanges",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(o,"withinSigma",{enumerable:!0,get:function(){return We}}),Object.defineProperty(o,"capability",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(o,"controlLimits",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(o,"westernElectricViolations",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(o,"nelsonViolations",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(o,"CONTROL_RULE_SETS",{enumerable:!0,get:function(){return jt}}),Object.defineProperty(o,"controlViolations",{enumerable:!0,get:function(){return At}}),Object.defineProperty(o,"countOutside",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(o,"histogram",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(o,"DEFAULT_CONFIDENCE",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(o,"meanInterval",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(o,"proportionInterval",{enumerable:!0,get:function(){return St}}),Object.defineProperty(o,"slopeInterval",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(o,"capabilityInterval",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(o,"standardizedMeanDifference",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(o,"normalTotalVariation",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(o,"frequencyMap",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(o,"categoricalDistance",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(o,"SUBSET_RELIABILITY_FLOOR",{enumerable:!0,get:function(){return st}}),Object.defineProperty(o,"compareColumn",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(o,"isNumericColumn",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(o,"populationRead",{enumerable:!0,get:function(){return Rt}});const ae=me("packages/core/src/compute/handle.js"),he=ae.presenceReader,W=ae.valueReader,U=me("packages/core/src/compute/special.js"),_=U.studentTQuantile,Z=U.studentT,E=U.normalQuantile,z=U.normalCdf,re=U.chiSquareUpperTail,Y=me("packages/core/src/compute/linalg.js"),se=Y.cholesky,te=Y.choleskySolve,H=Y.choleskyInverse,T=Y.normalEquations,V=Y.quadForm,R=me("packages/core/src/compute/sketch.js").SKETCH_BOUNDS,j=5e3,i=Object.freeze({variance:"rescan",varianceP:"rescan",stddev:"rescan",stddevP:"rescan",sumSquares:"rescan",weightedAvg:"rescan",median:"rescan",p25:"rescan",p75:"rescan",p90:"rescan",p95:"rescan",p99:"rescan",iqr:"rescan",mode:"rescan",distinct:"rescan",range:"rescan",skewness:"rescan",kurtosis:"rescan",geomean:"rescan",harmean:"rescan",mad:"rescan",argmin:"rescan",argmax:"rescan",hhi:"rescan",entropy:"rescan",evenness:"rescan",top3Share:"rescan",top10Share:"rescan",gini:"rescan",trimmedMean:"rescan",winsorizedMean:"rescan",robustOutliers:"rescan",jarqueBera:"rescan",passRate:"rescan",failureCount:"rescan"}),a=Object.freeze({distinct:Object.freeze({sketch:"HyperLogLog",bound:R.distinct}),median:Object.freeze({sketch:"KLL",bound:R.median}),p25:Object.freeze({sketch:"KLL",bound:R.p25}),p75:Object.freeze({sketch:"KLL",bound:R.p75}),p90:Object.freeze({sketch:"KLL",bound:R.p90}),p95:Object.freeze({sketch:"KLL",bound:R.p95}),p99:Object.freeze({sketch:"KLL",bound:R.p99}),iqr:Object.freeze({sketch:"KLL",bound:R.iqr}),top3Share:Object.freeze({sketch:"SpaceSaving",bound:R.topK}),top10Share:Object.freeze({sketch:"SpaceSaving",bound:R.topK})});function s(b){const k=b==="sum"||b==="avg"||b==="countValues"||b==="min"||b==="max"?"maintained":Object.prototype.hasOwnProperty.call(i,b)?i[b]:null,y=Object.prototype.hasOwnProperty.call(a,b)?a[b]:null;return{stat:b,exact:k,approximate:y}}function h(b,k){const y=k.length,w=new Float64Array(y);let O=0;if(b&&(b.kind==="float64"||b.kind==="int32")){const F=b.values,C=he(b);for(let ie=0;ie<y;ie++){const oe=k[ie];if(C&&C(oe)!==1)continue;const ke=F[oe];Number.isNaN(ke)||(w[O++]=ke)}return w.subarray(0,O)}const $=W(b);for(let F=0;F<y;F++){const C=$(k[F]);if(C==null||C==="")continue;const ie=typeof C=="number"?C:Number(C);Number.isFinite(ie)&&(w[O++]=ie)}return w.subarray(0,O)}function u(b,k){const y=new Map,w=W(b);let O=0;for(let $=0;$<k.length;$++){const F=w(k[$]);if(F==null||F===""||typeof F=="number"&&Number.isNaN(F))continue;const C=typeof F=="object"?String(F):F;y.set(C,(y.get(C)||0)+1),O++}const M=[...y.values()].sort(($,F)=>F-$);return{counts:M,total:O,distinct:M.length}}function t(b){return b.total>0?b.counts.map(k=>k/b.total):[]}function l(b,k){const y=u(b,k);if(!y.total)return null;let w=0;for(const O of t(y))w+=O*O;return w}function m(b,k){const y=u(b,k);if(!y.total)return null;let w=0;for(const O of t(y))O>0&&(w-=O*Math.log2(O));return w}function e(b,k){const y=u(b,k);if(!y.total||y.distinct<2)return y.total?1:null;let w=0;for(const O of t(y))O>0&&(w-=O*Math.log2(O));return w/Math.log2(y.distinct)}function d(b,k,y=3){const w=u(b,k);if(!w.total)return null;const O=Math.max(1,Math.floor(y));let M=0;for(let $=0;$<Math.min(O,w.counts.length);$++)M+=w.counts[$];return M/w.total}function f(b,k){const y=h(b,k),w=y.length;if(!w)return null;const O=y.slice().sort();if(O[0]<0)return null;let M=0,$=0;for(let F=0;F<w;F++)M+=O[F],$+=(F+1)*O[F];return M===0?0:2*$/(w*M)-(w+1)/w}function r(b){let k=0,y=0,w=0;for(let O=0;O<b.length;O++){const M=b[O];k++;const $=M-y;y+=$/k,w+=$*(M-y)}return{n:k,mean:y,m2:w}}function n(b,k){const y=b.length;if(!y)return NaN;if(y===1)return b[0];const w=(y-1)*Math.min(1,Math.max(0,k)),O=Math.floor(w),M=Math.ceil(w);return O===M?b[O]:b[O]+(w-O)*(b[M]-b[O])}function c(b,k){if(!b.length)return NaN;const y=b.slice().sort();return n(y,k)}function g(b,k){const y=W(b);let w=0,O=0,M=0;for(let $=0;$<k.length;$++){const F=y(k[$]);if(F==null||F==="")continue;const C=String(F).toUpperCase();C==="PASS"?w++:C==="FAIL"?O++:C==="WARN"&&M++}return{pass:w+M,fail:O,warn:M,judged:w+M+O}}const A=Object.freeze({hhi:(b,k)=>l(b,k),entropy:(b,k)=>m(b,k),evenness:(b,k)=>e(b,k),top3Share:(b,k)=>d(b,k,3),top10Share:(b,k)=>d(b,k,10),gini:(b,k)=>f(b,k),trimmedMean:(b,k)=>G(h(b,k),.1),winsorizedMean:(b,k)=>S(h(b,k),.1),robustOutliers:(b,k)=>N(h(b,k),3.5),jarqueBera:(b,k)=>I(h(b,k)),variance:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>1?w/(y-1):null},varianceP:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>0?w/y:null},stddev:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>1?Math.sqrt(w/(y-1)):null},stddevP:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>0?Math.sqrt(w/y):null},median:(b,k)=>{const y=h(b,k);return y.length?c(y,.5):null},p25:(b,k)=>{const y=h(b,k);return y.length?c(y,.25):null},p75:(b,k)=>{const y=h(b,k);return y.length?c(y,.75):null},p90:(b,k)=>{const y=h(b,k);return y.length?c(y,.9):null},p95:(b,k)=>{const y=h(b,k);return y.length?c(y,.95):null},p99:(b,k)=>{const y=h(b,k);return y.length?c(y,.99):null},iqr:(b,k)=>{const y=h(b,k);if(!y.length)return null;const w=y.slice().sort();return n(w,.75)-n(w,.25)},mad:(b,k)=>{const y=h(b,k);if(!y.length)return null;const w=c(y,.5),O=new Float64Array(y.length);for(let M=0;M<y.length;M++)O[M]=Math.abs(y[M]-w);return c(O,.5)},range:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=1/0,O=-1/0;for(let M=0;M<y.length;M++)y[M]<w&&(w=y[M]),y[M]>O&&(O=y[M]);return O-w},distinct:(b,k)=>{const y=W(b),w=new Set;for(let O=0;O<k.length;O++){const M=y(k[O]);M==null||M===""||w.add(M instanceof Date?M.getTime():M)}return w.size},mode:(b,k)=>{const y=W(b),w=new Map;for(let $=0;$<k.length;$++){const F=y(k[$]);if(F==null||F==="")continue;const C=F instanceof Date?F.getTime():F;w.set(C,(w.get(C)||0)+1)}let O=null,M=1;for(const[$,F]of w)F>M&&(M=F,O=$);return O},skewness:(b,k)=>{const y=h(b,k),{n:w,mean:O,m2:M}=r(y);if(w<3||M<=0)return null;const $=Math.sqrt(M/(w-1));let F=0;for(let C=0;C<y.length;C++)F+=((y[C]-O)/$)**3;return w/((w-1)*(w-2))*F},kurtosis:(b,k)=>{const y=h(b,k),{n:w,mean:O,m2:M}=r(y);if(w<4||M<=0)return null;const $=Math.sqrt(M/(w-1));let F=0;for(let oe=0;oe<y.length;oe++)F+=((y[oe]-O)/$)**4;const C=w*(w+1)/((w-1)*(w-2)*(w-3)),ie=3*(w-1)**2/((w-2)*(w-3));return C*F-ie},geomean:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=0;for(let O=0;O<y.length;O++){if(y[O]<=0)return null;w+=Math.log(y[O])}return Math.exp(w/y.length)},harmean:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=0;for(let O=0;O<y.length;O++){if(y[O]===0)return null;w+=1/y[O]}return y.length/w},sumSquares:(b,k)=>{const y=h(b,k);let w=0;for(let O=0;O<y.length;O++)w+=y[O]*y[O];return w},passRate:(b,k)=>{const{pass:y,judged:w}=g(b,k);return w?y/w:null},failureCount:(b,k)=>g(b,k).fail}),P=Object.freeze({hhi:"Concentration (HHI)",entropy:"Entropy",evenness:"Evenness",top3Share:"Top 3 share",top10Share:"Top 10 share",gini:"Gini coefficient",trimmedMean:"Trimmed mean",winsorizedMean:"Winsorized mean",robustOutliers:"Outliers (robust)",jarqueBera:"Jarque–Bera",median:"Median",p25:"25th percentile",p75:"75th percentile",p90:"90th percentile",p95:"95th percentile",p99:"99th percentile",iqr:"Interquartile range",mad:"Median absolute deviation",variance:"Variance",varianceP:"Variance (population)",stddev:"Standard deviation",stddevP:"Standard deviation (population)",range:"Range",distinct:"Distinct",mode:"Mode",skewness:"Skewness",kurtosis:"Kurtosis",geomean:"Geometric mean",harmean:"Harmonic mean",sumSquares:"Sum of squares",weightedAvg:"Weighted average",argmin:"Lowest by",argmax:"Highest by",passRate:"Pass rate",failureCount:"Failures"});function q(b,k,y){const w=W(b),O=W(k);let M=0,$=0;for(let F=0;F<y.length;F++){const C=y[F],ie=Number(w(C)),oe=Number(O(C));!Number.isFinite(ie)||!Number.isFinite(oe)||(M+=ie*oe,$+=oe)}return $===0?null:M/$}function L(b,k,y){const w=W(b);let O=null,M=y?-1/0:1/0;for(let $=0;$<k.length;$++){const F=k[$],C=Number(w(F));Number.isFinite(C)&&(y?C>M:C<M)&&(M=C,O=F)}return O}function v(b,k,y){const w=W(b),O=W(k);let M=0,$=0,F=0,C=0,ie=0,oe=0;for(let pe=0;pe<y.length;pe++){const ve=y[pe],Le=Number(w(ve)),we=Number(O(ve));!Number.isFinite(Le)||!Number.isFinite(we)||(M++,$+=Le,F+=we,C+=Le*Le,ie+=we*we,oe+=Le*we)}if(M<2)return null;const ke=M*oe-$*F,je=Math.sqrt((M*C-$*$)*(M*ie-F*F));if(je===0)return null;const Pe=ke/je;return Math.max(-1,Math.min(1,Pe))}function G(b,k=.1){const y=b.length;if(!y)return null;const w=Array.from(b).sort((F,C)=>F-C),O=Math.floor(y*Math.min(.49,Math.max(0,k))),M=w.slice(O,y-O);if(!M.length)return n(w,.5);let $=0;for(const F of M)$+=F;return $/M.length}function S(b,k=.1){const y=b.length;if(!y)return null;const w=Array.from(b).sort((C,ie)=>C-ie),O=Math.floor(y*Math.min(.49,Math.max(0,k))),M=w[O],$=w[y-1-O];let F=0;for(const C of w)F+=Math.min($,Math.max(M,C));return F/y}function N(b,k=3.5){if(!b.length)return null;const w=Array.from(b).sort((C,ie)=>C-ie),O=n(w,.5),M=w.map(C=>Math.abs(C-O)).sort((C,ie)=>C-ie),$=n(M,.5);if($===0)return null;let F=0;for(const C of w)Math.abs(.6745*(C-O)/$)>k&&F++;return F}function I(b){const k=b.length;if(k<8)return null;let y=0;for(const C of b)y+=C;y/=k;let w=0,O=0,M=0;for(const C of b){const ie=C-y;w+=ie*ie,O+=ie*ie*ie,M+=ie*ie*ie*ie}if(w/=k,O/=k,M/=k,w===0)return null;const $=O/w**1.5,F=M/(w*w)-3;return k/6*($*$+F*F/4)}function K(b,k,y){const w=[];let O=0;for(let C=0;C<b.length;C++){const ie=Number(b[C]),oe=Number(k[C]);!Number.isFinite(ie)||!Number.isFinite(oe)||oe<=0||(w.push([ie,oe]),O+=oe)}if(!w.length||O<=0)return null;if(w.sort((C,ie)=>C[0]-ie[0]),w.length===1)return w[0][0];const M=[];let $=0;for(const[,C]of w)M.push(($+C/2)/O),$+=C;const F=Math.max(0,Math.min(1,y));if(F<=M[0])return w[0][0];if(F>=M[M.length-1])return w[w.length-1][0];for(let C=1;C<M.length;C++){if(F>M[C])continue;const ie=M[C]-M[C-1],oe=ie>0?(F-M[C-1])/ie:0;return w[C-1][0]+(w[C][0]-w[C-1][0])*oe}return w[w.length-1][0]}function B(b,k,y){const w=W(b),O=W(k),M=new Float64Array(y.length),$=new Float64Array(y.length);let F=0;for(let C=0;C<y.length;C++){const ie=y[C],oe=Number(w(ie)),ke=Number(O(ie));!Number.isFinite(oe)||!Number.isFinite(ke)||(M[F]=oe,$[F]=ke,F++)}return{xs:M.subarray(0,F),ys:$.subarray(0,F),n:F}}function ee(b,k,y,w=!1){const{xs:O,ys:M,n:$}=B(b,k,y);if($<2)return null;let F=0,C=0;for(let oe=0;oe<$;oe++)F+=O[oe],C+=M[oe];F/=$,C/=$;let ie=0;for(let oe=0;oe<$;oe++)ie+=(O[oe]-F)*(M[oe]-C);return ie/(w?$:$-1)}function J(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2)return null;let $=0,F=0;for(let Le=0;Le<M;Le++)$+=w[Le],F+=O[Le];$/=M,F/=M;let C=0,ie=0,oe=0;for(let Le=0;Le<M;Le++){const we=w[Le]-$,De=O[Le]-F;C+=we*we,ie+=we*De,oe+=De*De}if(C===0)return null;const ke=ie/C,je=F-ke*$,Pe=oe===0?1:Math.max(0,Math.min(1,ie*ie/(C*oe))),pe=Math.max(0,oe-ke*ie),ve=M>2?Math.sqrt(pe/(M-2)/C):0;return{slope:ke,intercept:je,r2:Pe,stdError:ve,n:M}}const ue=new Set(["ols","wls","robust"]),de=new Set(["quantile"]),Oe=new Set(["ridge","lasso","elasticnet","mixed","gls"]),Ae=1.345;function Se(b,k,y){const{xtwx:w,xtwy:O}=T(b,k,y),M=se(w);if(!M)return null;const $=te(M,O),F=H(M),C=D(b,$),ie=k.map((oe,ke)=>oe-C[ke]);return{beta:$,cov:F,fitted:C,residuals:ie}}function D(b,k){return b.map(y=>y.reduce((w,O,M)=>w+O*k[M],0))}function x(b,k){const y=b.length,w=b.map(ie=>ie[k]),O=b.map(ie=>[1,...ie.filter((oe,ke)=>ke!==k)]),M=Se(O,w,null);if(!M)return 1;const $=w.reduce((ie,oe)=>ie+oe,0)/y;let F=0,C=0;for(let ie=0;ie<y;ie++)F+=M.residuals[ie]**2,C+=(w[ie]-$)**2;return C===0?1:Math.max(0,Math.min(1,1-F/C))}function fe(b){const k=[...b].sort((O,M)=>O-M),y=p(k),w=b.map(O=>Math.abs(O-y)).sort((O,M)=>O-M);return p(w)/.6745}function p(b){const k=b.length;if(!k)return 0;const y=Math.floor(k/2);return k%2?b[y]:(b[y-1]+b[y])/2}function Q(b,k,y={}){const w=y.method||"ols";if(Oe.has(w))throw new Error(`[lattice] regression method "${w}" is out of scope; use ols, wls or robust.`);if(de.has(w))throw new Error("[lattice] quantile regression is coming next and not yet available; use ols, wls or robust.");if(!ue.has(w))throw new Error(`[lattice] unknown regression method "${w}"; use ols, wls or robust.`);const O=Array.isArray(k)?k.length:0,M=O&&Array.isArray(b[0])?b[0].length:0,$=M+1;if(!(O>$))return null;for(let Te=0;Te<O;Te++){if(!Number.isFinite(k[Te])||!Array.isArray(b[Te])||b[Te].length!==M)return null;for(let Fe=0;Fe<M;Fe++)if(!Number.isFinite(b[Te][Fe]))return null}let F=null;if(w==="wls"){if(F=y.weights,!Array.isArray(F)||F.length!==O)return null;for(let Te=0;Te<O;Te++)if(!(F[Te]>0)||!Number.isFinite(F[Te]))return null}const C=b.map(Te=>[1,...Te]);let ie,oe=null;if(w==="robust"){if(ie=Se(C,k,null),!ie)return null;for(let Te=0;Te<50;Te++){const Fe=fe(ie.residuals);if(!(Fe>0))break;const Ue=ie.residuals.map(Ge=>{const xe=Math.abs(Ge/Fe);return xe<=Ae?1:Ae/xe}),qe=Se(C,k,Ue);if(!qe)return null;const Je=qe.beta.reduce((Ge,xe,it)=>Math.max(Ge,Math.abs(xe-ie.beta[it])),0);if(ie=qe,oe=Ue,Je<1e-10)break}}else if(ie=Se(C,k,F),!ie)return null;const ke=w==="robust"?oe:F,{beta:je,cov:Pe,fitted:pe,residuals:ve}=ie;let Le=0,we=0,De=0;for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1;Le+=Fe*ve[Te]**2,we+=Fe,De+=Fe*k[Te]}const $e=De/we;let Ke=0;for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1;Ke+=Fe*(k[Te]-$e)**2}const He=O-$,Qe=Le/He,Ve=Ke===0?1:Math.max(0,Math.min(1,1-Le/Ke)),ut=1-(1-Ve)*(O-1)/He,nt=Array.isArray(y.names)&&y.names.length===M?y.names:b[0].map((Te,Fe)=>`x${Fe+1}`),Ze=tt(y.confidence),rt=He>0?_(1-(1-Ze)/2,He):1/0,Lt=je.map((Te,Fe)=>{const Ue=Math.sqrt(Math.max(0,Qe*Pe[Fe][Fe])),qe=Ue>0?Te/Ue:Te===0?0:1/0,Je=Number.isFinite(qe)?2*(1-Z(Math.abs(qe),He)):0,Ge=Number.isFinite(rt)?rt*Ue:null;return{name:Fe===0?"(intercept)":nt[Fe-1],estimate:Te,stdError:Ue,t:qe,p:Math.max(0,Math.min(1,Je)),lower:Ge===null?null:Te-Ge,upper:Ge===null?null:Te+Ge}}),bt=new Array(O),yt=new Array(O);for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1,Ue=Math.max(0,Math.min(1,Fe*V(C[Te],Pe)));bt[Te]=Ue;const qe=(1-Ue)**2;yt[Te]=qe>0&&Qe>0?ve[Te]**2/($*Qe)*(Ue/qe):null}const Ft=b[0].map((Te,Fe)=>{if(M<2)return 1;const Ue=x(b,Fe);return Ue>=1?1/0:1/(1-Ue)});let pt=null;{const Te=ve.map(Ue=>Ue*Ue),Fe=Se(C,Te,null);if(Fe){const Ue=Te.reduce((et,Ct)=>et+Ct,0)/O;let qe=0,Je=0;for(let et=0;et<O;et++)qe+=Fe.residuals[et]**2,Je+=(Te[et]-Ue)**2;const Ge=Je===0?0:Math.max(0,Math.min(1,1-qe/Je)),xe=O*Ge,it=re(xe,M);pt={statistic:xe,df:M,p:it,heteroscedastic:it<.05}}}let wt=null;if(M===1){const Te=b.map((Fe,Ue)=>Ue).sort((Fe,Ue)=>b[Fe][0]-b[Ue][0]);wt={confidence:Ze,points:Te.map(Fe=>{const Ue=C[Fe],qe=Math.sqrt(Math.max(0,Qe*V(Ue,Pe)));return{x:b[Fe][0],yhat:pe[Fe],lower:pe[Fe]-rt*qe,upper:pe[Fe]+rt*qe}})}}return{method:w,coefficients:Lt,r2:Ve,adjR2:ut,n:O,df:He,sigma2:Qe,fitted:pe,residuals:ve,leverage:bt,cooksD:yt,vif:Ft,heteroscedasticity:pt,band:wt,weights:ke?[...ke]:null}}function X(b){const k=b.length,y=Array.from({length:k},(M,$)=>$).sort((M,$)=>b[M]-b[$]),w=new Float64Array(k);let O=0;for(;O<k;){let M=O;for(;M+1<k&&b[y[M+1]]===b[y[O]];)M++;const $=(O+M)/2+1;for(let F=O;F<=M;F++)w[y[F]]=$;O=M+1}return w}const ce=Object.freeze({"1%":-3.9638,"5%":-3.4126,"10%":-3.1279});function le(b){const k=[.01,.05,.1],y=[ce["1%"],ce["5%"],ce["10%"]];if(b<=y[0]){const M=(Math.log(k[1])-Math.log(k[0]))/(y[1]-y[0]);return Math.max(1e-4,Math.min(.01,Math.exp(Math.log(k[0])+M*(b-y[0]))))}if(b>=y[2]){const M=(Math.log(k[2])-Math.log(k[1]))/(y[2]-y[1]);return Math.max(.1,Math.min(.999,Math.exp(Math.log(k[2])+M*(b-y[2]))))}const w=b<y[1]?0:1,O=(b-y[w])/(y[w+1]-y[w]);return Math.exp(Math.log(k[w])+O*(Math.log(k[w+1])-Math.log(k[w])))}function ge(b,k,y,w){const O=y-w,M=w+3,$=new Array(O),F=new Array(O);let C=!0,ie=w;for(let pe=0;pe<O;pe++){const ve=w+pe,Le=new Float64Array(M);Le[0]=1,Le[1]=pe+1,Le[2]=b[ve];for(let we=1;we<=w;we++)Le[2+we]=k[ve-we];for(let we=1;we<M;we++)Number.isFinite(Le[we])||(ie=Math.min(ie,we-3));$[pe]=Le,F[pe]=k[ve],Number.isFinite(F[pe])||(C=!1)}if(!C)return 0;const{xtwx:oe,xtwy:ke}=T($,F,null);let je=0,Pe=1/0;for(let pe=0;pe<=ie;pe++){const ve=pe+3;if(!(O>ve))continue;const Le=new Array(ve);for(let Ve=0;Ve<ve;Ve++)Le[Ve]=oe[Ve].slice(0,ve);const we=se(Le);if(!we)continue;const De=te(we,ke.slice(0,ve));let $e=0;for(let Ve=0;Ve<O;Ve++){const ut=$[Ve];let nt=0;for(let Ze=0;Ze<ve;Ze++)nt+=ut[Ze]*De[Ze];$e+=(F[Ve]-nt)**2}const He=$e/(O-ve)*(O-ve);if(!(He>0))continue;const Qe=O*Math.log(He/O)+2*ve;Qe<Pe&&(Pe=Qe,je=pe)}return je}function Me(b,k={}){const y=[];for(let Pe=0;Pe<b.length;Pe++){const pe=Number(b[Pe]);Number.isFinite(pe)&&y.push(pe)}const w=y.length,O=w-1;if(w<8||O<6)return null;const M=new Array(O);for(let Pe=0;Pe<O;Pe++)M[Pe]=y[Pe+1]-y[Pe];let $=Number.isFinite(k.maxlag)?Math.floor(k.maxlag):Math.ceil(12*(w/100)**.25);$=Math.max(0,Math.min($,Math.floor((O-5)/2)));const F=(Pe,pe)=>{const ve=[],Le=[];for(let we=pe;we<O;we++){const De=[we-pe+1,y[we]];for(let $e=1;$e<=Pe;$e++)De.push(M[we-$e]);ve.push(De),Le.push(M[we])}return Q(ve,Le,{method:"ols"})},C=ge(y,M,O,$),ie=F(C,C);if(!ie||!ie.coefficients[2])return null;const oe=ie.coefficients[2].t,ke=le(oe),je=oe<ce["5%"];return{statistic:oe,usedLag:C,nobs:O-C,criticalValues:{...ce},pValue:ke,pApproximate:!0,stationary:je,verdict:je?"stationary":"non-stationary",regression:"ct"}}function be(b,k={}){const y=[];for(let je=0;je<b.length;je++){const Pe=Number(b[je]);Number.isFinite(Pe)&&y.push(Pe)}const w=y.length;if(w<3)return null;let O=Number.isFinite(k.maxlag)?Math.floor(k.maxlag):Math.min(10,w-1);O=Math.max(1,Math.min(O,w-1));let M=0;for(const je of y)M+=je;M/=w;const $=y.map(je=>je-M);let F=0;for(const je of $)F+=je*je;F/=w;const C=new Array(O+1).fill(0);C[0]=1;for(let je=1;je<=O;je++){let Pe=0;for(let pe=je;pe<w;pe++)Pe+=$[pe]*$[pe-je];C[je]=F>0?Pe/w/F:0}const ie=new Array(O+1).fill(0);ie[0]=1;let oe=[];for(let je=1;je<=O;je++){let Pe=C[je];for(let we=1;we<je;we++)Pe-=oe[we-1]*C[je-we];let pe=1;for(let we=1;we<je;we++)pe-=oe[we-1]*C[we];const ve=pe!==0?Pe/pe:0,Le=new Array(je);for(let we=1;we<je;we++)Le[we-1]=oe[we-1]-ve*oe[je-1-we];Le[je-1]=ve,ie[je]=ve,oe=Le}const ke=1.96/Math.sqrt(w);return{acf:C,pacf:ie,bounds:{upper:ke,lower:-ke},n:w,nlags:O,approximate:!0}}function ye(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2)return null;const $=X(w),F=X(O);let C=0,ie=0;for(let Pe=0;Pe<M;Pe++)C+=$[Pe],ie+=F[Pe];C/=M,ie/=M;let oe=0,ke=0,je=0;for(let Pe=0;Pe<M;Pe++){const pe=$[Pe]-C,ve=F[Pe]-ie;oe+=pe*ve,ke+=pe*pe,je+=ve*ve}return ke===0||je===0?null:Math.max(-1,Math.min(1,oe/Math.sqrt(ke*je)))}function Re(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2||M>j)return null;let $=0,F=0,C=0,ie=0;for(let je=0;je<M;je++)for(let Pe=je+1;Pe<M;Pe++){const pe=Math.sign(w[je]-w[Pe]),ve=Math.sign(O[je]-O[Pe]),Le=pe*ve;Le>0?$++:Le<0?F++:pe===0&&ve===0||(pe===0?C++:ie++)}const oe=$+F+ie,ke=$+F+C;return oe===0||ke===0?null:($-F)/Math.sqrt(oe*ke)}function Ne(b,k={}){const y=b.length;if(y<2)return null;const w=b[0],O=b[y-1],M=[];for(let we=1;we<y;we++){const De=b[we-1];De!==0&&M.push((b[we]-De)/Math.abs(De))}let $=null;if(M.length>1){let we=0;for(const $e of M)we+=$e;we/=M.length;let De=0;for(const $e of M)De+=($e-we)**2;$=Math.sqrt(De/(M.length-1))}const F=Number(k.periodsPerYear)>0?Number(k.periodsPerYear):null;let C=b[0],ie=0,oe=0,ke=0,je=0;for(let we=1;we<y;we++){if(b[we]>C){C=b[we],ie=we;continue}if(C<=0)continue;const De=(C-b[we])/C;De>oe&&(oe=De,ke=ie,je=we)}let Pe=null;if(y>2){let we=0;for(let Ke=0;Ke<y;Ke++)we+=b[Ke];we/=y;let De=0,$e=0;for(let Ke=0;Ke<y;Ke++){const He=b[Ke]-we;$e+=He*He,Ke>0&&(De+=He*(b[Ke-1]-we))}Pe=$e>0?De/$e:null}let pe=0,ve=0;for(const we of M)we>0?pe++:we<0&&ve++;let Le=null;if(w>0&&O>0){const we=(O/w)**(1/(y-1))-1;Le=F?(1+we)**F-1:we}return{n:y,first:w,last:O,change:O-w,changePercent:w===0?null:(O-w)/Math.abs(w)*100,volatility:$,annualisedVolatility:$!==null&&F?$*Math.sqrt(F):null,growth:Le,maxDrawdown:oe,maxDrawdownFrom:ke,maxDrawdownTo:je,autocorrelation:Pe,upDays:pe,downDays:ve}}const Ee=1.128,Be=3.267;function ze(b){const k=b.length;if(k<2)return null;const y=[];for(let O=1;O<k;O++)y.push(Math.abs(b[O]-b[O-1]));const w=y.reduce((O,M)=>O+M,0)/y.length;return{ranges:y,centre:w,upper:Be*w,lower:0}}function We(b){const k=b.length;if(k<2)return null;let y=0;for(let O=1;O<k;O++)y+=Math.abs(b[O]-b[O-1]);const w=y/(k-1);return{sigma:w/Ee,meanRange:w}}function Xe(b,k){const y=b.length;if(y<2||!k)return null;const w=Number.isFinite(Number(k.lower))?Number(k.lower):null,O=Number.isFinite(Number(k.upper))?Number(k.upper):null;if(w===null&&O===null)return null;let M=0;for(let pe=0;pe<y;pe++)M+=b[pe];M/=y;let $=0;for(let pe=0;pe<y;pe++)$+=(b[pe]-M)**2;const F=Math.sqrt($/(y-1)),C=We(b),ie=C?C.sigma:null,oe=pe=>{if(!pe||pe<=0)return{index:null,k:null};const Le=w!==null&&O!==null?(O-w)/(6*pe):null,we=O!==null?(O-M)/(3*pe):1/0,De=w!==null?(M-w)/(3*pe):1/0;return{index:Le,k:Math.min(we,De)}},ke=oe(ie),je=oe(F);let Pe=0;for(let pe=0;pe<y;pe++){if(w!==null&&b[pe]<w){Pe++;continue}O!==null&&b[pe]>O&&Pe++}return{n:y,mean:M,lower:w,upper:O,target:Number.isFinite(Number(k.target))?Number(k.target):null,sigmaWithin:ie,sigmaOverall:F,cp:ke.index,cpk:ke.k,pp:je.index,ppk:je.k,outOfSpec:Pe,defectRate:y?Pe/y:null}}function Ye(b){const k=b.length;if(k<2)return null;const y=We(b);if(!y||!(y.sigma>0))return null;let w=0;for(let O=0;O<k;O++)w+=b[O];return w/=k,{centre:w,sigma:y.sigma,upper:w+3*y.sigma,lower:w-3*y.sigma}}function Ie(b,k){if(!k||!(k.sigma>0))return[];const y=b.length,{centre:w,sigma:O}=k,M=F=>(b[F]-w)/O,$=[];for(let F=0;F<y;F++){if(Math.abs(M(F))>3&&$.push({index:F,rule:1,description:"beyond three sigma"}),F>=2)for(const C of[1,-1]){let ie=0;for(let oe=F-2;oe<=F;oe++)M(oe)*C>2&&ie++;if(ie>=2){$.push({index:F,rule:2,description:"two of three past two sigma"});break}}if(F>=4)for(const C of[1,-1]){let ie=0;for(let oe=F-4;oe<=F;oe++)M(oe)*C>1&&ie++;if(ie>=4){$.push({index:F,rule:3,description:"four of five past one sigma"});break}}if(F>=7)for(const C of[1,-1]){let ie=!0;for(let oe=F-7;oe<=F;oe++)if(M(oe)*C<=0){ie=!1;break}if(ie){$.push({index:F,rule:4,description:"eight in a row on one side"});break}}}return $}function ft(b,k){if(!k||!(k.sigma>0))return[];const y=b.length,{centre:w,sigma:O}=k,M=C=>(b[C]-w)/O,$=(C,ie,oe,ke)=>{for(const je of[1,-1]){let Pe=0;for(let pe=C;pe<=ie;pe++)M(pe)*je>oe&&Pe++;if(Pe>=ke)return!0}return!1},F=[];for(let C=0;C<y;C++){if(Math.abs(M(C))>3&&F.push({index:C,rule:1,description:"beyond three sigma"}),C>=8)for(const ie of[1,-1]){let oe=!0;for(let ke=C-8;ke<=C;ke++)if(M(ke)*ie<=0){oe=!1;break}if(oe){F.push({index:C,rule:2,description:"nine in a row on one side"});break}}if(C>=5)for(const ie of[1,-1]){let oe=!0;for(let ke=C-4;ke<=C;ke++)if((b[ke]-b[ke-1])*ie<=0){oe=!1;break}if(oe){F.push({index:C,rule:3,description:ie>0?"six rising":"six falling"});break}}if(C>=13){let ie=!0;for(let oe=C-12;oe<=C;oe++){const ke=b[oe]-b[oe-1],je=b[oe+1<=C?oe+1:oe]-b[oe];if(oe+1>C)break;if(ke===0||je===0||ke>0==je>0){ie=!1;break}}ie&&F.push({index:C,rule:4,description:"fourteen alternating"})}if(C>=2&&$(C-2,C,2,2)&&F.push({index:C,rule:5,description:"two of three past two sigma"}),C>=4&&$(C-4,C,1,4)&&F.push({index:C,rule:6,description:"four of five past one sigma"}),C>=14){let ie=!0;for(let oe=C-14;oe<=C;oe++)if(Math.abs(M(oe))>=1){ie=!1;break}ie&&F.push({index:C,rule:7,description:"fifteen within one sigma"})}if(C>=7){let ie=!0;for(let oe=C-7;oe<=C;oe++)if(Math.abs(M(oe))<=1){ie=!1;break}ie&&F.push({index:C,rule:8,description:"eight beyond one sigma"})}}return F}const jt=Object.freeze(["westernElectric","nelson"]);function At(b,k,y="westernElectric"){return String(y)==="nelson"?ft(b,k):Ie(b,k)}function Mt(b,k,y){let w=0;for(let O=0;O<b.length;O++)(b[O]<k||b[O]>y)&&w++;return w}function Pt(b,k,y,w=20){const O=b.length;if(!O)return[];const M=b[0],$=b[O-1];if($===M)return[{from:M,to:$,count:O}];const F=y-k,C=1.5*F;let ie=F>0?Math.max(M,k-C):M,oe=F>0?Math.min($,y+C):$;oe>ie||(ie=M,oe=$);const ke=F>0?2*F/Math.cbrt(O):(oe-ie)/(Math.ceil(Math.log2(O))+1),je=ke>0?Math.min(w,Math.max(1,Math.ceil((oe-ie)/ke))):1,Pe=(oe-ie)/je,pe=[];for(let ve=0;ve<je;ve++)pe.push({from:ie+ve*Pe,to:ie+(ve+1)*Pe,count:0});for(let ve=0;ve<O;ve++){const Le=Math.min(je-1,Math.max(0,Math.floor((b[ve]-ie)/Pe)));pe[Le].count++}return pe[0].from=M,pe[je-1].to=$,pe}const _e=.95;function tt(b){const k=Number(b);return Number.isFinite(k)&&k>0&&k<1?k:_e}function Nt(b,k=_e){const y=b.length;if(y<2)return null;let w=0;for(let oe=0;oe<y;oe++)w+=b[oe];const O=w/y;let M=0;for(let oe=0;oe<y;oe++){const ke=b[oe]-O;M+=ke*ke}const $=Math.sqrt(M/(y-1)),F=tt(k),ie=_(1-(1-F)/2,y-1)*$/Math.sqrt(y);return{mean:O,lower:O-ie,upper:O+ie,margin:ie,n:y,confidence:F}}function St(b,k,y=_e){const w=Number(b),O=Number(k);if(!(O>0)||!(w>=0)||w>O)return null;const M=tt(y),$=E(1-(1-M)/2),F=w/O,C=$*$,ie=1+C/O,oe=(F+C/(2*O))/ie,ke=$/ie*Math.sqrt(F*(1-F)/O+C/(4*O*O));return{proportion:F,lower:Math.max(0,oe-ke),upper:Math.min(1,oe+ke),n:O,confidence:M}}function vt(b,k=_e){if(!b||!(b.n>2)||!Number.isFinite(b.stdError))return null;const y=tt(k),O=_(1-(1-y)/2,b.n-2)*b.stdError;return{slope:b.slope,lower:b.slope-O,upper:b.slope+O,margin:O,confidence:y}}function Tt(b,k,y=_e){const w=Number(b),O=Number(k);if(!Number.isFinite(w)||!(O>1))return null;const M=tt(y),F=E(1-(1-M)/2)*Math.sqrt(1/(9*O)+w*w/(2*(O-1)));return{index:w,lower:w-F,upper:w+F,margin:F,n:O,confidence:M}}function ht(b,k){return!b||!(b.sd>0)||!Number.isFinite(k)||!Number.isFinite(b.mean)?null:(k-b.mean)/b.sd}function dt(b){return Number.isFinite(b)?Math.min(1,Math.max(0,2*z(Math.abs(b)/2)-1)):0}function ot(b,k){const y=new Map,w=W(b);let O=0;for(let M=0;M<k.length;M++){const $=w(k[M]);if($==null||$===""||typeof $=="number"&&Number.isNaN($))continue;const F=$ instanceof Date?$.getTime():typeof $=="object"?String($):$;y.set(F,(y.get(F)||0)+1),O++}return{map:y,total:O}}function mt(b,k,y,w){if(!(k>0)||!(w>0))return null;let O=0;const M=new Set(b.keys());for(const $ of y.keys())M.add($);for(const $ of M){const F=(b.get($)||0)/k,C=(y.get($)||0)/w;O+=Math.abs(F-C)}return O/2}const st=10;function Et(b,k,y){if(y&&y.numeric){const F=h(b,k),{n:C,mean:ie}=r(F),oe=C>0?ht({mean:y.mean,sd:y.sd},ie):null;return{measure:"standardizedMeanDifference",magnitude:oe,distance:oe===null?0:dt(oe),direction:oe===null?0:Math.sign(oe),subsetN:C,populationN:y.n||0,reliable:C>=st}}const{map:O,total:M}=ot(b,k),$=mt(O,M,y.map,y.total);return{measure:"categoricalTotalVariation",magnitude:$,distance:$===null?0:$,direction:0,subsetN:M,populationN:y.total||0,reliable:M>=st}}function gt(b,k){if(b&&(b.kind==="float64"||b.kind==="int32"))return!0;const y=W(b);let w=0,O=0;for(let M=0;M<k.length&&w<200;M++){const $=y(k[M]);if($==null||$==="")continue;if($ instanceof Date)return!1;w++;const F=typeof $=="number"?$:Number($);Number.isFinite(F)&&O++}return w===0?!1:O/w>=.9}function Rt(b,k){if(gt(b,k)){const O=h(b,k),{n:M,mean:$,m2:F}=r(O);return{numeric:!0,mean:$,sd:M>0?Math.sqrt(F/M):0,n:M}}const{map:y,total:w}=ot(b,k);return{numeric:!1,map:y,total:w}}}),Ce("packages/core/src/compute/total.js",function(o,me){"use strict";Object.defineProperty(o,"TOTAL_FNS",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"TOTAL_LABELS",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"totalLabel",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"aggregatesFor",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"aggregateAllowed",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"collectValues",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"total",{enumerable:!0,get:function(){return f}});const ae=me("packages/core/src/internal/util.js"),he=ae.isFunction,W=ae.warnOnce,U=me("packages/core/src/compute/handle.js"),_=U.presenceReader,Z=U.valueComparator,E=U.valueReader,z=me("packages/core/src/compute/statistics.js"),re=z.STAT_FNS,Y=z.STAT_LABELS;function se(r){return!!r&&(r.kind==="float64"||r.kind==="int32")}function te(r,n){const c=n.length;let g=0;if(se(r)){const P=r.values,q=_(r);if(!q){for(let L=0;L<c;L++){const v=P[n[L]];Number.isNaN(v)||(g+=v)}return g}for(let L=0;L<c;L++){const v=n[L];if(q(v)===1){const G=P[v];Number.isNaN(G)||(g+=G)}}return g}const A=E(r);for(let P=0;P<c;P++){const q=s(A(n[P]));q!==null&&(g+=q)}return g}te.kernel=!0;function H(r,n){const c=n.length;let g=0;if(se(r)){const P=r.values,q=_(r);if(!q){for(let L=0;L<c;L++)Number.isNaN(P[n[L]])||g++;return g}for(let L=0;L<c;L++){const v=n[L];q(v)===1&&!Number.isNaN(P[v])&&g++}return g}const A=E(r);for(let P=0;P<c;P++){const q=A(n[P]);q!=null&&!(typeof q=="number"&&Number.isNaN(q))&&g++}return g}H.kernel=!0;function T(r,n){return n.length}T.kernel=!0;function V(r,n){const c=H(r,n);return c===0?null:te(r,n)/c}V.kernel=!0;function ne(r,n,c,g){const A=n.length;if(se(r)){const v=r.values,G=_(r);let S=null;if(!G){for(let N=0;N<A;N++){const I=v[n[N]];Number.isNaN(I)||(S===null||(c<0?I<S:I>S))&&(S=I)}return S}for(let N=0;N<A;N++){const I=n[N];if(G(I)===0)continue;const K=v[I];Number.isNaN(K)||(S===null||(c<0?K<S:K>S))&&(S=K)}return S}const P=E(r),q=Z(g);let L=null;for(let v=0;v<A;v++){const G=P(n[v]);G==null||typeof G=="number"&&Number.isNaN(G)||(L===null||(c<0?q(G,L)<0:q(G,L)>0))&&(L=G)}return L}function R(r,n,c){return ne(r,n,-1,c&&c.locale)}R.kernel=!0;function j(r,n,c){return ne(r,n,1,c&&c.locale)}j.kernel=!0;function i(r,n){return n.length===0?null:E(r)(n[0])}i.kernel=!0;function a(r,n){return n.length===0?null:E(r)(n[n.length-1])}a.kernel=!0;function s(r){if(typeof r=="number")return Number.isNaN(r)?null:r;if(r==null||r===""||typeof r=="boolean")return null;if(r instanceof Date)return r.getTime();const n=Number(r);return Number.isNaN(n)?null:n}const h={sum:te,min:R,max:j,avg:V,count:T,first:i,last:a,countValues:H,...re},u=Object.freeze({...Y,sum:"Sum",avg:"Average",min:"Min",max:"Max",count:"Count",countValues:"Count of values",first:"First",last:"Last"});function t(r){return r?typeof r=="string"?u[r]||r:"Total":""}const l=Object.freeze(["sum","avg","min","max","count","countValues","first","last"]);function m(r){const n=r&&r.dataType&&r.dataType.totals&&r.dataType.totals.supported;if(Array.isArray(n))return n.slice();const c=l.filter(g=>g in h);for(const g of Object.keys(h))c.includes(g)||c.push(g);return c}function e(r,n){return typeof n!="string"?!0:m(r).includes(n)}function d(r,n){const c=E(r),g=[];for(let A=0;A<n.length;A++){const P=c(n[A]);P!=null&&g.push(P)}return g}function f(r,n,c,g){const A=n||[];if(typeof c=="string"){const P=h[c];return P?P(r,A,g):(W(`total:${c}`,`unknown total function "${c}"; register it in config.totalFns`),null)}return he(c)?c.kernel===!0?c(r,A,g):c(d(r,A),g||{}):null}}),Ce("packages/core/src/compute/pivot.js",function(o,me){"use strict";Object.defineProperty(o,"KEY_DELIMITER",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"pivotKey",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"joinPath",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"resolvePivotKeys",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"pivot",{enumerable:!0,get:function(){return j}});const he=me("packages/core/src/internal/util.js").warnOnce,U=me("packages/core/src/compute/handle.js").valueComparator,Z=me("packages/core/src/compute/group.js").packKeys,z=me("packages/core/src/compute/total.js").total,re="|",Y="/",se=2e3;function te(s,h,u){return`${s}${re}${h}${re}${u}`}function H(s,h){let u="";for(let t=0;t<s.length;t++){const l=s[t];u+=(t===0?"":h)+(l==null?"":String(l))}return u}function T(s,h,u={}){const t=u.separator||Y,l=h.length,{keyOf:m,readers:e}=Z(s,h,0),d=new Map,f=[],r=[];for(let L=0;L<l;L++){const v=h[L],G=m(v);if(d.has(G))continue;d.set(G,f.length),r.push(G);const S=new Array(e.length);for(let N=0;N<e.length;N++)S[N]=e[N](v);f.push(S)}const n=U(u.locale),c=f.map((L,v)=>v);c.sort((L,v)=>{const G=f[L],S=f[v];for(let N=0;N<G.length;N++){const I=V(G[N],S[N],n);if(I!==0)return I}return L-v});const g=new Array(c.length),A=new Array(c.length),P=new Map;for(let L=0;L<c.length;L++){const v=c[L];g[L]=f[v],A[L]=H(f[v],t),P.set(r[v],L)}return{keys:g,paths:A,idOf:L=>{const v=P.get(m(L));return v===void 0?-1:v}}}function V(s,h,u){const t=s==null,l=h==null;return t||l?t&&l?0:t?1:-1:u(s,h)}function ne(s){const h=s.values||s.totals||[];if(h.length&&typeof h[0]=="object"&&h[0]!==null)return h.filter(m=>m&&m.handle);const u=typeof s.handle=="function"?s.handle:null;if(!u)return h.length&&he("pivot:handles","pivot was given total column ids but no handle(colId) resolver, so no cell values were reduced. Pass values: [{ colId, handle, fn }] or opts.handle."),[];const t=typeof s.totalOf=="function"?s.totalOf:null,l=[];for(const m of h){const e=u(m);e&&l.push({colId:m,handle:e,fn:t?t(m):"sum"})}return l}function R(s,h,u){if(Array.isArray(s)){const t=u||{};return{...t,pivotHandles:s,order:h||null,groups:t.groups||null}}return s||{}}function j(s,h,u){const t=R(s,h,u),l=t.separator||Y,m=ne(t),e=t.maxColumns===void 0?se:t.maxColumns,d=t.groups&&t.groups.buckets?t.groups:null,f=d?d.buckets:[t.order||new Uint32Array(0)],r=t.groupPaths||(d?d.keys.map(G=>H(G,l)):[""]),n=a(f),{keys:c,paths:g,idOf:A}=T(t.pivotHandles||[],n,t),P=g.length*Math.max(1,m.length),q=i(g,m,l);if(e&&P>e){const G=new Map;return{keys:c,paths:g,fields:q,groupPaths:r,columns:P,values:G,cells:G,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${P} columns, above pivot.maxColumns of ${e}. Narrow the pivot columns or raise the limit.`,columns:P,maxColumns:e}}}const L=new Map,v=g.length;for(let G=0;G<f.length;G++){const S=f[G],N=r[G]===void 0?"":r[G],I=S.length;if(I===0)continue;const K=new Int32Array(I),B=new Uint32Array(v+1);for(let ue=0;ue<I;ue++){const de=A(S[ue]);K[ue]=de,de>=0&&B[de+1]++}for(let ue=0;ue<v;ue++)B[ue+1]+=B[ue];const ee=new Uint32Array(I),J=B.slice(0,v);for(let ue=0;ue<I;ue++){const de=K[ue];de>=0&&(ee[J[de]++]=S[ue])}for(let ue=0;ue<v;ue++){const de=B[ue],Oe=B[ue+1];if(Oe===de)continue;const Ae=ee.subarray(de,Oe);for(let Se=0;Se<m.length;Se++){const D=m[Se],x=z(D.handle,Ae,D.fn,t.totalContext||{locale:t.locale});L.set(te(N,g[ue],D.colId),x)}}}return{keys:c,paths:g,fields:q,groupPaths:r,columns:P,values:L,cells:L,error:null}}function i(s,h,u){if(h.length===0)return s.slice();const t=[];for(const l of s)for(const m of h)t.push(`${l}${u}${m.colId}`);return t}function a(s){if(s.length===1)return s[0]||new Uint32Array(0);let h=0;for(const l of s)h+=l?l.length:0;const u=new Uint32Array(h);let t=0;for(const l of s)!l||l.length===0||(u.set(l,t),t+=l.length);return u}}),Ce("packages/core/src/compute/pivotmatrix.js",function(o,me){"use strict";Object.defineProperty(o,"GRAND_PATH",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"resolveAxis",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"pivotMatrix",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"cellKey",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"marginKey",{enumerable:!0,get:function(){return j}});const he=me("packages/core/src/compute/handle.js").valueComparator,U=me("packages/core/src/compute/total.js").total,Z=me("packages/core/src/compute/group.js").packKeys,E=me("packages/core/src/compute/pivot.js"),z=E.joinPath,re=E.DEFAULT_PATH_SEPARATOR,Y=E.DEFAULT_MAX_COLUMNS,se="";function te(i,a,s={}){const h=s.separator||re,u=i||[],t=a instanceof Uint32Array?a:Uint32Array.from(a||[]),l=t.length;if(u.length===0)return{tuples:[[]],paths:[se],buckets:[t]};const{keyOf:m,readers:e}=Z(u,t,0),d=new Map,f=[],r=[],n=[];for(let L=0;L<l;L++){const v=t[L],G=m(v);let S=d.get(G);if(S===void 0){S=f.length,d.set(G,S),r.push(G);const N=new Array(e.length);for(let I=0;I<e.length;I++)N[I]=e[I](v);f.push(N),n.push([])}n[S].push(v)}const c=he(s.locale),g=f.map((L,v)=>v);g.sort((L,v)=>{const G=f[L],S=f[v];for(let N=0;N<G.length;N++){const I=H(G[N],S[N],c);if(I!==0)return I}return L-v});const A=new Array(g.length),P=new Array(g.length),q=new Array(g.length);for(let L=0;L<g.length;L++){const v=g[L];A[L]=f[v],P[L]=z(f[v],h),q[L]=Uint32Array.from(n[v])}return{tuples:A,paths:P,buckets:q}}function H(i,a,s){const h=i==null,u=a==null;return h||u?h&&u?0:h?1:-1:s(i,a)}function T(i,a,s){const h=[];for(let u=0;u<i.length;u++)s.has(i[u])&&h.push(i[u]);return Uint32Array.from(h)}function V(i,a,s,h){return{value:a.length?U(i,a,s,h):null,leaves:a,count:a.length}}function ne(i){const a=i&&i.opts||{},s=a.separator||re,h=a.totalContext||{locale:a.locale},u=(i.measures||[]).filter(P=>P&&P.handle),t=i.leaves instanceof Uint32Array?i.leaves:Uint32Array.from(i.leaves||[]),l=te(i.rowHandles||[],t,{...a,separator:s}),m=te(i.columnHandles||[],t,{...a,separator:s}),e=a.maxColumns===void 0?Y:a.maxColumns,d=m.paths.length*Math.max(1,u.length),f=new Map;if(e&&d>e)return{rowAxis:l,columnAxis:m,measures:u.map(P=>({colId:P.colId,fn:P.fn})),body:f,rowMargin:f,columnMargin:f,grand:f,columns:d,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${d} columns, above pivot.maxColumns of ${e}. Narrow the pivot columns or raise the limit.`,columns:d,maxColumns:e}};const r=new Map,n=new Map,c=new Map,g=new Map,A=m.buckets.map(P=>new Set(P));for(let P=0;P<m.paths.length;P++){const q=m.buckets[P],L=m.paths[P];for(const v of u)c.set(j(L,v.colId),V(v.handle,q,v.fn,h))}for(let P=0;P<l.paths.length;P++){const q=l.buckets[P],L=l.paths[P];for(const v of u)n.set(j(L,v.colId),V(v.handle,q,v.fn,h));for(let v=0;v<m.paths.length;v++){const G=T(q,m.buckets[v],A[v]);if(G.length===0)continue;const S=m.paths[v];for(const N of u)r.set(R(L,S,N.colId),V(N.handle,G,N.fn,h))}}for(const P of u)g.set(P.colId,V(P.handle,t,P.fn,h));return{rowAxis:l,columnAxis:m,measures:u.map(P=>({colId:P.colId,fn:P.fn})),body:r,rowMargin:n,columnMargin:c,grand:g,columns:d,error:null}}function R(i,a,s){return`${i}\\0${a}\\0${s}`}function j(i,a){return`${i}\\0${a}`}}),Ce("packages/core/src/compute/reference.js",function(o,me){"use strict";Object.defineProperty(o,"referenceValue",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"referenceSort",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"referenceFilter",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"referencePasses",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"referenceGroup",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"referenceTotal",{enumerable:!0,get:function(){return ne}});const he=me("packages/core/src/internal/util.js").getPath,W=me("packages/core/src/compute/handle.js"),U=W.isMissing,_=W.valueComparator,E=me("packages/core/src/compute/filter.js").testValue,z="",re="\\0";function Y(i,a){const s=a.includes(".")?he(i,a):i?.[a];return s===void 0?null:s}function se(i,a,s={}){const h=a||[];let u=i.map((t,l)=>l);if(h.length===0)return u;for(let t=h.length-1;t>=0;t--)u=te(i,u,h[t],s);return u}function te(i,a,s,h){const u=s.locale!==void 0?s.locale:h.locale,t=_(u),l=s.descending!==void 0?!!s.descending:s.dir==="desc",m=[],e=[];for(const r of a){const n=Y(i[r],s.col);U(n)?e.push(r):m.push(r)}const d=new Map;for(let r=0;r<m.length;r++)d.set(m[r],r);const f=(r,n)=>{const c=Y(i[r],s.col),g=Y(i[n],s.col);let A;return typeof s.compare=="function"?(A=s.compare(c,g,i[r],i[n],l),l&&(A=-A)):A=l?t(g,c):t(c,g),A!==0?A:d.get(r)-d.get(n)};return m.sort(f),s.nullsFirst?e.concat(m):m.concat(e)}function H(i,a,s={}){const h=[];for(let u=0;u<i.length;u++)T(i[u],a,s,u)&&h.push(u);return h}function T(i,a,s,h){if(!a)return!0;if(Array.isArray(a.conditions)){const u=a.conditions.filter(l=>l!=null);if(u.length===0)return!0;if(a.op==="or")return u.some(l=>T(i,l,s,h));const t=u.every(l=>T(i,l,s,h));return a.op==="not"?!t:t}return a.col===void 0&&typeof s.custom=="function"?!!s.custom(a,i,h):E(Y(i,a.col),a,s.locale)}function V(i,a,s,h){const u=s||i.map((e,d)=>d),t=new Map,l=[],m=[];for(const e of u){const d=a.map((n,c)=>{const g=Y(i[e],n);return h&&h[c]?h[c](g):g}),f=d.map(n=>n==null?re:String(n)).join(z);let r=t.get(f);r===void 0&&(r=l.length,t.set(f,r),l.push(d),m.push([])),m[r].push(e)}return{keys:l,buckets:m}}function ne(i,a,s={}){const h=_(s.locale),u=i.filter(l=>!U(l)),t=u.map(R).filter(l=>l!==null);switch(a){case"count":return i.length;case"countValues":return u.length;case"sum":return t.reduce((l,m)=>l+m,0);case"avg":return u.length===0?null:t.reduce((l,m)=>l+m,0)/u.length;case"min":return u.length===0?null:u.reduce((l,m)=>h(m,l)<0?m:l);case"max":return u.length===0?null:u.reduce((l,m)=>h(m,l)>0?m:l);case"first":return i.length===0?null:j(i[0]);case"last":return i.length===0?null:j(i[i.length-1]);default:return null}}function R(i){if(typeof i=="number")return Number.isNaN(i)?null:i;if(i==null||i===""||typeof i=="boolean")return null;if(i instanceof Date)return i.getTime();const a=Number(i);return Number.isNaN(a)?null:a}function j(i){return i===void 0?null:i}}),Ce("packages/core/src/compute/windowed.js",function(o,me){"use strict";Object.defineProperty(o,"Window",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"WINDOW_KINDS",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"openWindow",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return Z}});const he=me("packages/core/src/compute/sketch.js").Welford;class W{#t;#e;#n=[];#r;#i;constructor(z,re=0,Y=Date.now){if(z!=="count"&&z!=="time"&&z!=="session")throw new RangeError(`unknown window kind: ${z}`);if((z==="count"||z==="time")&&!(re>0))throw new RangeError(`a ${z} window needs a positive span`);this.#t=z,this.#e=Math.floor(re),this.#r=Y,this.#i=Y()}get size(){return this.#n.length}push(z,re=this.#r()){Number.isFinite(z)&&(this.#n.push({t:re,v:z}),this.#s(re))}#s(z){if(this.#t==="count")for(;this.#n.length>this.#e;)this.#n.shift();else if(this.#t==="time"){const re=z-this.#e;for(;this.#n.length&&this.#n[0].t<re;)this.#n.shift()}}spec(){const z=this.#t==="session"?this.#r()-this.#i:this.#e;return{kind:this.#t,span:z,size:this.#n.length}}values(){return this.#n.map(z=>z.v)}aggregate(){const z=this.spec();if(!this.#n.length)return{over:z,count:0,sum:null,mean:null,min:null,max:null,variance:null,stddev:null};const re=new he;let Y=0,se=1/0,te=-1/0;for(const{v:H}of this.#n)Y+=H,H<se&&(se=H),H>te&&(te=H),re.add(H);return{over:z,count:this.#n.length,sum:Y,mean:re.mean(),min:se,max:te,variance:re.variance(),stddev:re.stddev()}}reduce(z){const re=this.aggregate(),Y={sum:re.sum,avg:re.mean,mean:re.mean,min:re.min,max:re.max,count:re.count,variance:re.variance,stddev:re.stddev};if(!(z in Y))throw new RangeError(`unknown windowed aggregate: ${z}`);return{value:Y[z],over:re.over}}}const U=Object.freeze(["count","time","session"]);function _(E,z=Date.now){const re=E.kind==="time"&&E.minutes!=null?E.minutes*6e4:E.span??0;return new W(E.kind,re,z)}const Z={Window:W,WINDOW_KINDS:U,openWindow:_}}),Ce("packages/core/src/compute/anomaly.js",function(o,me){"use strict";Object.defineProperty(o,"MAD_SCALE",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"DEFAULT_MODIFIED_Z_THRESHOLD",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"DEFAULT_IQR_K",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_CHI_SQUARE_P",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"ANOMALY_METHODS",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"robustSpread",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"modifiedZScores",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"iqrFences",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"chiSquareCdf",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"chiSquareQuantile",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"mahalanobis",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"DEFAULT_ROLLING_WINDOW",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"rollingAnomalies",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"anomalyCondition",{enumerable:!0,get:function(){return h}});const he=me("packages/core/src/compute/statistics.js").quantileSorted,U=me("packages/core/src/compute/special.js").logGamma,_=.6745,Z=3.5,E=1.5,z=.975,re=Object.freeze(["modifiedZScore","iqr","mahalanobis"]);function Y(u){if(!u.length)return null;const l=Array.from(u,Number).sort((f,r)=>f-r),m=he(l,.5),e=l.map(f=>Math.abs(f-m)).sort((f,r)=>f-r),d=he(e,.5);return{median:m,mad:d}}function se(u,t={}){const l=Number.isFinite(t.threshold)?t.threshold:Z,m=u.length,e=new Array(m).fill(null),d=new Array(m).fill(!1),f=[];for(let c=0;c<m;c++){const g=Number(u[c]);Number.isFinite(g)&&f.push(g)}if(!f.length)return{median:null,mad:null,threshold:l,scores:e,flags:d,flagged:0};const r=Y(f);if(r.mad===0)return{median:r.median,mad:0,threshold:l,scores:e,flags:d,flagged:0};let n=0;for(let c=0;c<m;c++){const g=Number(u[c]);if(!Number.isFinite(g))continue;const A=_*(g-r.median)/r.mad;e[c]=A,Math.abs(A)>l&&(d[c]=!0,n++)}return{median:r.median,mad:r.mad,threshold:l,scores:e,flags:d,flagged:n}}function te(u,t={}){const l=Number.isFinite(t.k)?t.k:E,m=[];for(let n=0;n<u.length;n++){const c=Number(u[n]);Number.isFinite(c)&&m.push(c)}if(!m.length)return null;const e=m.sort((n,c)=>n-c),d=he(e,.25),f=he(e,.75),r=f-d;return{q1:d,q3:f,iqr:r,lower:d-l*r,upper:f+l*r,k:l}}function H(u,t){if(t<=0)return 0;const l=U(u);if(t<u+1){let c=u,g=1/u,A=g;for(let P=0;P<1e3&&(c+=1,A*=t/c,g+=A,!(Math.abs(A)<Math.abs(g)*1e-15));P++);return g*Math.exp(-t+u*Math.log(t)-l)}const m=1e-300;let e=t+1-u,d=1/m,f=1/e,r=f;for(let c=1;c<1e3;c++){const g=-c*(c-u);e+=2,f=g*f+e,Math.abs(f)<m&&(f=m),d=e+g/d,Math.abs(d)<m&&(d=m),f=1/f;const A=f*d;if(r*=A,Math.abs(A-1)<1e-15)break}return 1-Math.exp(-t+u*Math.log(t)-l)*r}function T(u,t){return u<=0?0:H(t/2,u/2)}function V(u,t=z){if(!(t>0)||!(t<1))return NaN;let l=0,m=Math.max(1,u);for(;T(m,u)<t;)m*=2;for(let e=0;e<200;e++){const d=(l+m)/2;if(T(d,u)<t?l=d:m=d,m-l<1e-10)break}return(l+m)/2}function ne(u){const t=u.length,l=u.map((m,e)=>{const d=m.slice();for(let f=0;f<t;f++)d.push(e===f?1:0);return d});for(let m=0;m<t;m++){let e=m;for(let f=m+1;f<t;f++)Math.abs(l[f][m])>Math.abs(l[e][m])&&(e=f);if(Math.abs(l[e][m])<1e-12)return null;if(e!==m){const f=l[e];l[e]=l[m],l[m]=f}const d=l[m][m];for(let f=0;f<2*t;f++)l[m][f]/=d;for(let f=0;f<t;f++){if(f===m)continue;const r=l[f][m];if(r!==0)for(let n=0;n<2*t;n++)l[f][n]-=r*l[m][n]}}return l.map(m=>m.slice(t))}function R(u,t){const l=u.length,m=new Array(t).fill(0);for(const f of u)for(let r=0;r<t;r++)m[r]+=f[r];for(let f=0;f<t;f++)m[f]/=l;const e=Array.from({length:t},()=>new Array(t).fill(0));for(const f of u)for(let r=0;r<t;r++){const n=f[r]-m[r];for(let c=r;c<t;c++)e[r][c]+=n*(f[c]-m[c])}const d=l>1?l-1:1;for(let f=0;f<t;f++)for(let r=f;r<t;r++)e[f][r]/=d,e[r][f]=e[f][r];return{mean:m,cov:e}}function j(u,t={}){const l=Number.isFinite(t.p)?t.p:z,m=Number.isFinite(t.ridge)?t.ridge:1e-6,e=u.length;if(!e)return null;const d=u[0].length;if(!d)return null;const f=new Array(e).fill(null),r=new Array(e).fill(null),n=new Array(e).fill(!1),c=[],g=[];for(let N=0;N<e;N++){const I=u[N];let K=I.length===d;const B=new Array(d);for(let ee=0;K&&ee<d;ee++){const J=Number(I[ee]);Number.isFinite(J)?B[ee]=J:K=!1}K&&(c.push(N),g.push(B))}const A=d,P=V(A,l);if(g.length<=d)return{center:[],df:A,cutoff:P,singular:!0,used:g.length,distances:f,squared:r,flags:n,flagged:0};const{mean:q,cov:L}=R(g,d);let v=ne(L),G=!1;if(!v){G=!0;let N=0;for(let B=0;B<d;B++)N+=L[B][B];const I=N/d*m||m,K=L.map((B,ee)=>B.map((J,ue)=>ee===ue?J+I:J));if(v=ne(K),!v)return{center:q,df:A,cutoff:P,singular:!0,used:g.length,distances:f,squared:r,flags:n,flagged:0}}let S=0;for(let N=0;N<g.length;N++){const I=g[N],K=new Array(d);for(let J=0;J<d;J++)K[J]=I[J]-q[J];let B=0;for(let J=0;J<d;J++){let ue=0;for(let de=0;de<d;de++)ue+=v[J][de]*K[de];B+=K[J]*ue}B<0&&(B=0);const ee=c[N];r[ee]=B,f[ee]=Math.sqrt(B),B>P&&(n[ee]=!0,S++)}return{center:q,df:A,cutoff:P,singular:G,used:g.length,distances:f,squared:r,flags:n,flagged:S}}const i=20,a=Object.freeze(["rollingModifiedZScore","rollingIqr"]);function s(u,t={}){const l=t.method==="rollingIqr"?"rollingIqr":"rollingModifiedZScore",m=Number.isFinite(t.windowLen)&&t.windowLen>=1?Math.floor(t.windowLen):i,e=Number.isFinite(t.threshold)?t.threshold:Z,d=Number.isFinite(t.k)?t.k:E,f=Number.isFinite(t.minPeriods)&&t.minPeriods>=1?Math.floor(t.minPeriods):m,r=u.length,n=new Array(r).fill(null),c=new Array(r).fill(!1);let g=0;for(let A=0;A<r;A++){const P=Number(u[A]);if(!Number.isFinite(P))continue;const q=Math.max(0,A-m+1),L=[];for(let v=q;v<=A;v++){const G=Number(u[v]);Number.isFinite(G)&&L.push(G)}if(!(L.length<f))if(l==="rollingIqr"){const v=te(L,{k:d});if(!v)continue;(P<v.lower||P>v.upper)&&(c[A]=!0,g++)}else{const v=Y(L);if(!v||v.mad===0)continue;const G=_*(P-v.median)/v.mad;n[A]=G,Math.abs(G)>e&&(c[A]=!0,g++)}}return{method:l,windowLen:m,minPeriods:f,threshold:e,k:d,scores:n,flags:c,flagged:g}}function h(u={}){const t=u||{},l=t.field;if(typeof l!="string"||!l)throw new TypeError("[lattice] anomalyCondition: a string `field` naming the numeric property to monitor is required");const m=t.method||"modifiedZScore";if(!(re.includes(m)||a.includes(m))||m==="mahalanobis")throw new RangeError(`[lattice] anomalyCondition: unknown or unsupported method \'${m}\'`);const d=typeof t.orderBy=="string"?t.orderBy:null,f=t.latest===!0,r=a.includes(m),n=c=>Number(c==null?NaN:c[l]);return c=>{const g=Array.isArray(c)?c.slice():[...c];d&&g.sort((v,G)=>{const S=v?.[d],N=G?.[d];return S===N?0:S==null?-1:N==null?1:S<N?-1:1});const A=g.map(n);let P,q;if(r)({flags:P,scores:q}=s(A,{method:m,windowLen:t.windowLen,threshold:t.threshold,k:t.k,minPeriods:t.minPeriods}));else if(m==="iqr"){const v=te(A,{k:t.k});P=A.map(G=>v?Number.isFinite(G)&&(G<v.lower||G>v.upper):!1),q=A.map(()=>null)}else({flags:P,scores:q}=se(A,{threshold:t.threshold}));if(f){const v=P.length-1;return v<0||!P[v]?!1:{method:m,field:l,flagged:[{row:g[v],score:q[v]}]}}const L=[];for(let v=0;v<P.length;v++)P[v]&&L.push({row:g[v],score:q[v]});return L.length?{method:m,field:l,flagged:L}:!1}}}),Ce("packages/core/src/compute/forecast.js",function(o,me){"use strict";Object.defineProperty(o,"FORECAST_METHODS",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"forecast",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return u}});const ae=me("packages/core/src/compute/special.js"),he=ae.normalQuantile,W=ae.studentTQuantile,_=me("packages/core/src/internal/util.js").warnOnce,Z=Object.freeze(["movingAverage","ses","holt","holtWinters","linear"]),E=1e-4,z=1-1e-4;function re(t){const l=[];for(let m=0;m<t.length;m++){const e=t[m];if(e!==null&&typeof e=="object"){const d=Number.isFinite(e.at)?e.at:m,f=Number.isFinite(e.value)?e.value:null;l.push({at:d,value:f})}else l.push({at:m,value:Number.isFinite(e)?Number(e):null})}return l}function Y(t){const l=t.filter(r=>r.value!==null),m=l[0],e=l[l.length-1],d=e.at-m.at,f=l.length>1&&d>0?d/(l.length-1):1;return{lastAt:e.at,step:f}}function se(t){return Math.min(z,Math.max(E,t))}function te(t,l=E,m=z,e=80){const d=(Math.sqrt(5)-1)/2;let f=l,r=m,n=r-d*(r-f),c=f+d*(r-f),g=t(n),A=t(c);for(let P=0;P<e;P++)g<A?(r=c,c=n,A=g,n=r-d*(r-f),g=t(n)):(f=n,n=c,g=A,c=f+d*(r-f),A=t(c));return(f+r)/2}function H(t,l){let m=null,e=0,d=0;for(let f=0;f<t.length;f++){const r=t[f];if(r!==null){if(m===null){m=r;continue}e+=(r-m)**2,d+=1,m=l*r+(1-l)*m}}return{level:m,sse:e,m:d}}function T(t,l,m){let e=null,d=null,f=0,r=0;for(let n=0;n<t.length;n++){const c=t[n];if(c===null){e!==null&&d!==null&&(e+=d);continue}if(e===null){e=c;continue}d===null&&(d=c-e);const g=e+d;f+=(c-g)**2,r+=1;const A=e;e=l*c+(1-l)*(A+d),d=m*(e-A)+(1-m)*d}return{level:e,trend:d,sse:f,m:r}}function V(t,l,m,e,d){const f=t.length;if(f<2*l)return null;const r=G=>{let S=0,N=0;for(let I=G;I<G+l&&I<f;I++)t[I]!==null&&(S+=t[I],N+=1);return N?S/N:null},n=r(0),c=r(l);if(n===null||c===null)return null;let g=n,A=(c-n)/l;const P=new Array(l).fill(0);for(let G=0;G<l;G++)P[G]=t[G]===null?0:t[G]-g;const q=P.reduce((G,S)=>G+S,0)/l;for(let G=0;G<l;G++)P[G]-=q;let L=0,v=0;for(let G=l;G<f;G++){const S=G%l,N=P[S],I=t[G];if(I===null){g+=A;continue}const K=g+A+N;L+=(I-K)**2,v+=1;const B=g;g=m*(I-N)+(1-m)*(g+A),A=e*(g-B)+(1-e)*A,P[S]=d*(I-g)+(1-d)*N}return{level:g,trend:A,season:P,phase:(f-1)%l,sse:L,count:v}}function ne(t,l,m){let e=1;for(const f of l)e+=f*f;const d=Math.sqrt(t*e);return{se:d,margin:m*d}}function R(t,l={}){if(!t||typeof t.length!="number"||t.length===0)return null;const m=Z.includes(l.method)?l.method:"linear",e=Math.max(1,Math.floor(Number(l.horizon)||1)),d=Number.isFinite(l.confidence)&&l.confidence>0&&l.confidence<1?l.confidence:.95,f=1-(1-d)/2,r=re(t),n=r.map(L=>L.value),c=n.filter(L=>L!==null),g=c.length,{lastAt:A,step:P}=g?Y(r):{lastAt:0,step:1},q=L=>A+L*P;return m==="linear"?j(r,g,e,d,f,q):m==="movingAverage"?i(c,g,e,d,f,l,q):m==="ses"?a(n,g,e,d,f,l,q):m==="holt"?s(n,g,e,d,f,l,q):h(n,g,e,d,f,l,q)}function j(t,l,m,e,d,f){if(l<2)return null;let r=0,n=0;for(const I of t)I.value!==null&&(r+=I.at,n+=I.value);r/=l,n/=l;let c=0,g=0,A=0;for(const I of t){if(I.value===null)continue;const K=I.at-r,B=I.value-n;c+=K*K,g+=K*B,A+=B*B}if(c===0)return null;const P=g/c,q=n-P*r,L=A===0?1:Math.max(0,Math.min(1,g*g/(c*A))),v=Math.max(0,A-P*g),G=l>2?Math.sqrt(v/(l-2)):null,S=l>2?W(d,l-2):null,N=[];for(let I=1;I<=m;I++){const K=f(I),B=q+P*K;let ee=null,J=null,ue=null,de=null,Oe=null;if(G!==null){const Ae=1/l+(K-r)**2/c,Se=G*Math.sqrt(1+Ae),D=G*Math.sqrt(Ae);Oe=Se,ee=B-S*Se,J=B+S*Se,ue=B-S*D,de=B+S*D}N.push({step:I,at:K,mean:B,lower:ee,upper:J,lowerMean:ue,upperMean:de,se:Oe})}return{method:"linear",horizon:m,confidence:e,n:l,sigma:G,r2:L,params:{slope:P,intercept:q},points:N}}function i(t,l,m,e,d,f,r){if(l<1)return null;const n=Math.max(1,Math.min(l,Math.floor(Number(f.windowLen)||l))),c=t.slice(l-n);let g=0;for(const G of c)g+=G;const A=g/n;let P=null,q=null;if(n>1){let G=0;for(const N of c)G+=(N-A)**2;P=Math.sqrt(G/(n-1))*Math.sqrt(1+1/n),q=W(d,n-1)}const L=P===null?null:q*P,v=[];for(let G=1;G<=m;G++)v.push({step:G,at:r(G),mean:A,lower:L===null?null:A-L,upper:L===null?null:A+L,se:P});return{method:"movingAverage",horizon:m,confidence:e,n:l,sigma:P===null?null:P,params:{windowLen:n},points:v}}function a(t,l,m,e,d,f,r){if(l<1)return null;let n=Number.isFinite(f.alpha)?se(f.alpha):null;n===null&&(n=te(q=>H(t,q).sse));const c=H(t,n),g=he(d),A=c.m>0?c.sse/c.m:null,P=[];for(let q=1;q<=m;q++){const L=c.level;let v=null,G=null,S=null;if(A!==null){const N=[];for(let K=1;K<q;K++)N.push(n);const I=ne(A,N,g);S=I.se,v=L-I.margin,G=L+I.margin}P.push({step:q,at:r(q),mean:L,lower:v,upper:G,se:S})}return{method:"ses",horizon:m,confidence:e,n:l,sigma:A===null?null:Math.sqrt(A),params:{alpha:n},points:P}}function s(t,l,m,e,d,f,r){if(l<2)return null;let n=Number.isFinite(f.alpha)?se(f.alpha):null,c=Number.isFinite(f.beta)?se(f.beta):null;if(n===null||c===null){let v=n===null?.5:n,G=c===null?.5:c;for(let S=0;S<6;S++)n===null&&(v=te(N=>T(t,N,G).sse)),c===null&&(G=te(N=>T(t,v,N).sse));n=n===null?v:n,c=c===null?G:c}const g=T(t,n,c),A=he(d),P=g.m>0?g.sse/g.m:null,q=n*c,L=[];for(let v=1;v<=m;v++){const G=g.level+v*g.trend;let S=null,N=null,I=null;if(P!==null){const K=[];for(let ee=1;ee<v;ee++)K.push(n+ee*q);const B=ne(P,K,A);I=B.se,S=G-B.margin,N=G+B.margin}L.push({step:v,at:r(v),mean:G,lower:S,upper:N,se:I})}return{method:"holt",horizon:m,confidence:e,n:l,sigma:P===null?null:Math.sqrt(P),params:{alpha:n,beta:c},points:L}}function h(t,l,m,e,d,f,r){const n=Math.floor(Number(f.period));if(!(n>=2))return _("forecast.holtWinters.period","forecast: holtWinters needs a period (opts.period >= 2)"),null;if(l<2*n)return null;let c=Number.isFinite(f.alpha)?se(f.alpha):null,g=Number.isFinite(f.beta)?se(f.beta):null,A=Number.isFinite(f.gamma)?se(f.gamma):null;const P=(I,K,B)=>{const ee=V(t,n,I,K,B);return ee?ee.sse:1/0};if(c===null||g===null||A===null){let I=c===null?.5:c,K=g===null?.5:g,B=A===null?.5:A;for(let ee=0;ee<8;ee++)c===null&&(I=te(J=>P(J,K,B))),g===null&&(K=te(J=>P(I,J,B))),A===null&&(B=te(J=>P(I,K,J)));c=c===null?I:c,g=g===null?K:g,A=A===null?B:A}const q=V(t,n,c,g,A);if(!q)return null;const L=he(d),v=q.count>0?q.sse/q.count:null,G=c*g,S=A*(1-c),N=[];for(let I=1;I<=m;I++){const K=q.season[(q.phase+I)%n],B=q.level+I*q.trend+K;let ee=null,J=null,ue=null;if(v!==null){const de=[];for(let Ae=1;Ae<I;Ae++)de.push(c+Ae*G+(Ae%n===0?S:0));const Oe=ne(v,de,L);ue=Oe.se,ee=B-Oe.margin,J=B+Oe.margin}N.push({step:I,at:r(I),mean:B,lower:ee,upper:J,se:ue})}return{method:"holtWinters",horizon:m,confidence:e,n:l,sigma:v===null?null:Math.sqrt(v),params:{alpha:c,beta:g,gamma:A,period:n},points:N}}const u={FORECAST_METHODS:Z,forecast:R}}),Ce("packages/core/src/compute/index.js",function(o,me){"use strict";const ae=me("packages/core/src/compute/sort.js");Object.defineProperty(o,"sortColumn",{enumerable:!0,get:function(){return ae.sortColumn}}),Object.defineProperty(o,"sortMulti",{enumerable:!0,get:function(){return ae.sortMulti}}),Object.defineProperty(o,"radixSortFloat64",{enumerable:!0,get:function(){return ae.radixSortFloat64}}),Object.defineProperty(o,"radixSortInt32",{enumerable:!0,get:function(){return ae.radixSortInt32}}),Object.defineProperty(o,"rankSortDictionary",{enumerable:!0,get:function(){return ae.rankSortDictionary}}),Object.defineProperty(o,"mergeSortComparator",{enumerable:!0,get:function(){return ae.mergeSortComparator}}),Object.defineProperty(o,"collateStringRanks",{enumerable:!0,get:function(){return ae.collateStringRanks}}),Object.defineProperty(o,"rankSortStrings",{enumerable:!0,get:function(){return ae.rankSortStrings}});const he=me("packages/core/src/compute/sortspec.js");Object.defineProperty(o,"collationDescriptor",{enumerable:!0,get:function(){return he.collationDescriptor}}),Object.defineProperty(o,"isPortableSort",{enumerable:!0,get:function(){return he.isPortableSort}}),Object.defineProperty(o,"isPortableSortSet",{enumerable:!0,get:function(){return he.isPortableSortSet}}),Object.defineProperty(o,"describeSortEntry",{enumerable:!0,get:function(){return he.describeSortEntry}}),Object.defineProperty(o,"describeSort",{enumerable:!0,get:function(){return he.describeSort}});const W=me("packages/core/src/compute/filter.js");Object.defineProperty(o,"evaluateFilters",{enumerable:!0,get:function(){return W.evaluateFilters}}),Object.defineProperty(o,"evaluateCondition",{enumerable:!0,get:function(){return W.evaluateCondition}}),Object.defineProperty(o,"compact",{enumerable:!0,get:function(){return W.compact}}),Object.defineProperty(o,"testValue",{enumerable:!0,get:function(){return W.testValue}}),Object.defineProperty(o,"compilePredicate",{enumerable:!0,get:function(){return W.compilePredicate}}),Object.defineProperty(o,"releaseMask",{enumerable:!0,get:function(){return W.releaseMask}}),Object.defineProperty(o,"pruneColumn",{enumerable:!0,get:function(){return W.pruneColumn}}),Object.defineProperty(o,"mentionsColumn",{enumerable:!0,get:function(){return W.mentionsColumn}});const U=me("packages/core/src/compute/group.js");Object.defineProperty(o,"groupByColumns",{enumerable:!0,get:function(){return U.groupByColumns}}),Object.defineProperty(o,"packKeys",{enumerable:!0,get:function(){return U.packKeys}});const _=me("packages/core/src/compute/facet.js");Object.defineProperty(o,"facet",{enumerable:!0,get:function(){return _.facet}}),Object.defineProperty(o,"computeBounds",{enumerable:!0,get:function(){return _.computeBounds}}),Object.defineProperty(o,"countInto",{enumerable:!0,get:function(){return _.countInto}}),Object.defineProperty(o,"bucketOf",{enumerable:!0,get:function(){return _.bucketOf}}),Object.defineProperty(o,"facetKind",{enumerable:!0,get:function(){return _.facetKind}}),Object.defineProperty(o,"cardinalityOf",{enumerable:!0,get:function(){return _.cardinalityOf}}),Object.defineProperty(o,"pickGranularity",{enumerable:!0,get:function(){return _.pickGranularity}}),Object.defineProperty(o,"floorTo",{enumerable:!0,get:function(){return _.floorTo}}),Object.defineProperty(o,"advance",{enumerable:!0,get:function(){return _.advance}}),Object.defineProperty(o,"STRATEGIES",{enumerable:!0,get:function(){return _.STRATEGIES}}),Object.defineProperty(o,"GRANULARITIES",{enumerable:!0,get:function(){return _.GRANULARITIES}}),Object.defineProperty(o,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return _.DEFAULT_BUCKETS}}),Object.defineProperty(o,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return _.DEFAULT_CARDINALITY_LIMIT}}),Object.defineProperty(o,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return _.QUANTILE_SAMPLE}});const Z=me("packages/core/src/compute/total.js");Object.defineProperty(o,"TOTAL_FNS",{enumerable:!0,get:function(){return Z.TOTAL_FNS}}),Object.defineProperty(o,"TOTAL_LABELS",{enumerable:!0,get:function(){return Z.TOTAL_LABELS}}),Object.defineProperty(o,"totalLabel",{enumerable:!0,get:function(){return Z.totalLabel}}),Object.defineProperty(o,"total",{enumerable:!0,get:function(){return Z.total}}),Object.defineProperty(o,"collectValues",{enumerable:!0,get:function(){return Z.collectValues}});const E=me("packages/core/src/compute/pivot.js");Object.defineProperty(o,"pivot",{enumerable:!0,get:function(){return E.pivot}}),Object.defineProperty(o,"resolvePivotKeys",{enumerable:!0,get:function(){return E.resolvePivotKeys}}),Object.defineProperty(o,"pivotKey",{enumerable:!0,get:function(){return E.pivotKey}}),Object.defineProperty(o,"joinPath",{enumerable:!0,get:function(){return E.joinPath}}),Object.defineProperty(o,"KEY_DELIMITER",{enumerable:!0,get:function(){return E.KEY_DELIMITER}}),Object.defineProperty(o,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return E.DEFAULT_PATH_SEPARATOR}}),Object.defineProperty(o,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return E.DEFAULT_MAX_COLUMNS}});const z=me("packages/core/src/compute/pivotmatrix.js");Object.defineProperty(o,"pivotMatrix",{enumerable:!0,get:function(){return z.pivotMatrix}}),Object.defineProperty(o,"resolveAxis",{enumerable:!0,get:function(){return z.resolveAxis}}),Object.defineProperty(o,"cellKey",{enumerable:!0,get:function(){return z.cellKey}}),Object.defineProperty(o,"marginKey",{enumerable:!0,get:function(){return z.marginKey}}),Object.defineProperty(o,"GRAND_PATH",{enumerable:!0,get:function(){return z.GRAND_PATH}});const re=me("packages/core/src/compute/reference.js");Object.defineProperty(o,"referenceSort",{enumerable:!0,get:function(){return re.referenceSort}}),Object.defineProperty(o,"referenceFilter",{enumerable:!0,get:function(){return re.referenceFilter}}),Object.defineProperty(o,"referenceGroup",{enumerable:!0,get:function(){return re.referenceGroup}}),Object.defineProperty(o,"referenceTotal",{enumerable:!0,get:function(){return re.referenceTotal}}),Object.defineProperty(o,"referencePasses",{enumerable:!0,get:function(){return re.referencePasses}}),Object.defineProperty(o,"referenceValue",{enumerable:!0,get:function(){return re.referenceValue}});const Y=me("packages/core/src/compute/handle.js");Object.defineProperty(o,"identity",{enumerable:!0,get:function(){return Y.identity}}),Object.defineProperty(o,"rowCount",{enumerable:!0,get:function(){return Y.rowCount}}),Object.defineProperty(o,"presenceReader",{enumerable:!0,get:function(){return Y.presenceReader}}),Object.defineProperty(o,"bitReader",{enumerable:!0,get:function(){return Y.bitReader}}),Object.defineProperty(o,"valueReader",{enumerable:!0,get:function(){return Y.valueReader}}),Object.defineProperty(o,"valueComparator",{enumerable:!0,get:function(){return Y.valueComparator}}),Object.defineProperty(o,"numericTotalOrder",{enumerable:!0,get:function(){return Y.numericTotalOrder}}),Object.defineProperty(o,"dictRanks",{enumerable:!0,get:function(){return Y.dictRanks}}),Object.defineProperty(o,"dictSize",{enumerable:!0,get:function(){return Y.dictSize}}),Object.defineProperty(o,"dictValue",{enumerable:!0,get:function(){return Y.dictValue}}),Object.defineProperty(o,"multiValue",{enumerable:!0,get:function(){return Y.multiValue}}),Object.defineProperty(o,"isMissing",{enumerable:!0,get:function(){return Y.isMissing}});const se=me("packages/core/src/compute/sketch.js");Object.defineProperty(o,"Welford",{enumerable:!0,get:function(){return se.Welford}}),Object.defineProperty(o,"Reservoir",{enumerable:!0,get:function(){return se.Reservoir}}),Object.defineProperty(o,"HyperLogLog",{enumerable:!0,get:function(){return se.HyperLogLog}}),Object.defineProperty(o,"SpaceSaving",{enumerable:!0,get:function(){return se.SpaceSaving}}),Object.defineProperty(o,"KLL",{enumerable:!0,get:function(){return se.KLL}}),Object.defineProperty(o,"hash32",{enumerable:!0,get:function(){return se.hash32}}),Object.defineProperty(o,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return se.SKETCH_BOUNDS}});const te=me("packages/core/src/compute/windowed.js");Object.defineProperty(o,"Window",{enumerable:!0,get:function(){return te.Window}}),Object.defineProperty(o,"WINDOW_KINDS",{enumerable:!0,get:function(){return te.WINDOW_KINDS}}),Object.defineProperty(o,"openWindow",{enumerable:!0,get:function(){return te.openWindow}});const H=me("packages/core/src/compute/statistics.js");Object.defineProperty(o,"MAINTENANCE",{enumerable:!0,get:function(){return H.MAINTENANCE}}),Object.defineProperty(o,"APPROXIMATE",{enumerable:!0,get:function(){return H.APPROXIMATE}}),Object.defineProperty(o,"maintenanceOf",{enumerable:!0,get:function(){return H.maintenanceOf}});const T=me("packages/core/src/compute/anomaly.js");Object.defineProperty(o,"ANOMALY_METHODS",{enumerable:!0,get:function(){return T.ANOMALY_METHODS}}),Object.defineProperty(o,"modifiedZScores",{enumerable:!0,get:function(){return T.modifiedZScores}}),Object.defineProperty(o,"iqrFences",{enumerable:!0,get:function(){return T.iqrFences}}),Object.defineProperty(o,"mahalanobis",{enumerable:!0,get:function(){return T.mahalanobis}}),Object.defineProperty(o,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return T.ROLLING_ANOMALY_METHODS}}),Object.defineProperty(o,"rollingAnomalies",{enumerable:!0,get:function(){return T.rollingAnomalies}}),Object.defineProperty(o,"anomalyCondition",{enumerable:!0,get:function(){return T.anomalyCondition}});const V=me("packages/core/src/compute/forecast.js");Object.defineProperty(o,"FORECAST_METHODS",{enumerable:!0,get:function(){return V.FORECAST_METHODS}}),Object.defineProperty(o,"forecast",{enumerable:!0,get:function(){return V.forecast}})}),Ce("packages/worker/src/kernel.js",function(o,me){"use strict";Object.defineProperty(o,"loadCompute",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"setCompute",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"dispatch",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"handleMessage",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"installKernel",{enumerable:!0,get:function(){return s}});const ae=me("packages/worker/src/transport.js"),he=ae.PROTOCOL,W=ae.OPS,U=ae.CONTROL,_=ae.ERRORS,Z=ae.unpackHandle,E=ae.unpackHandles,z=ae.createMaskPool,re=ae.collectTransfers,Y=me("packages/core/src/store/columnpack.js"),se=Y.packChunk,te=Y.packedTransfers;let H=null,T=null,V=null;async function ne(h){if(H)return H;if(!T){const u=h||(()=>Promise.resolve(me("packages/core/src/compute/index.js")));T=Promise.resolve().then(u).then(t=>(H=t,t)).catch(t=>(V=t,H=null,null))}return T}function R(h){H=h,T=h?Promise.resolve(h):null,V=h?null:V}function j(h,u,t){const l=new Map;for(const m of h)m&&l.set(m.id,m);return{handle(m){return l.get(m)},count:u,pool:z(),locale:t}}function i(h,u){const{op:t,args:l}=h;if(t===W.COLUMNIZE)return se(l.schema||[],l.rows||[],l.opts||{});const m=u[t];if(typeof m!="function"){const e=new Error(`[lattice] compute kernel \'${t}\' is not exported`);throw e.code=_.NO_KERNEL,e}switch(t){case W.COLLATE_STRING_RANKS:return m(l.table||[],(l.table||[]).length,l.locale);case W.SORT_COLUMN:return m(Z(l.handle),l.order??null,l.opts||{});case W.SORT_MULTI:{const e=E(l.handles||[]),d=(l.entries||[]).map(f=>({...f,handle:e[f.index]}));return m(e,d,l.order??null)}case W.EVALUATE_FILTERS:return m(l.filters,j(E(l.handles||[]),l.count,l.locale));case W.COMPACT:return m(l.mask,l.count,void 0);case W.GROUP_BY_COLUMNS:return m(E(l.handles||[]),l.order??null,l.opts||{});case W.TOTAL:return m(Z(l.handle),l.indices??null,l.fn);case W.PIVOT:return m(E(l.handles||[]),l.order??null,l.opts||{});case W.FACET:return m(Z(l.handle),l.indices??null,l.count,l.opts||{});default:{const e=new Error(`[lattice] unknown worker op \'${t}\'`);throw e.code=_.PROTOCOL,e}}}async function a(h,u={}){if(!h||h.lattice!==he)return null;const{id:t,op:l}=h;if(l===U.CANCEL)return u.cancelled?.add(h.target),null;if(l===U.PING)return{reply:{lattice:he,id:t,ok:!0,result:"pong"},transfer:[]};if(l===W.COLUMNIZE){if(u.cancelled?.has(t))return u.cancelled.delete(t),null;try{const e=se(h.args.schema||[],h.args.rows||[],h.args.opts||{});return u.cancelled?.has(t)?(u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]}):{reply:{lattice:he,id:t,ok:!0,result:e},transfer:te(e)}}catch(e){const d=e;return{reply:{lattice:he,id:t,ok:!1,error:{code:d.code||_.KERNEL,message:d.message||String(e),stack:d.stack}},transfer:[]}}}const m=await ne(u.loader);if(!m)return{reply:{lattice:he,id:t,ok:!1,error:{code:_.NO_COMPUTE,message:`[lattice] compute kernels unavailable in worker: ${V?V.message:"module not found"}`}},transfer:[]};if(u.cancelled?.has(t))return u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]};try{const e=i(h,m);return u.cancelled?.has(t)?(u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]}):{reply:{lattice:he,id:t,ok:!0,result:e},transfer:re(e)}}catch(e){const d=e;return{reply:{lattice:he,id:t,ok:!1,error:{code:d.code||_.KERNEL,message:d.message||String(e),stack:d.stack}},transfer:[]}}}function s(h,u={}){const t=new Set,l=async m=>{const e=await a(m.data,{loader:u.loader,cancelled:t});e&&h.postMessage(e.reply,e.transfer)};return h.addEventListener("message",l),ne(u.loader).then(m=>{h.postMessage({lattice:he,id:0,op:U.READY,compute:!!m})}),()=>h.removeEventListener("message",l)}});var kt=at("packages/worker/src/kernel.js");Ot.__latticeKernel=kt})(typeof globalThis<"u"?globalThis:this);\n\n__latticeKernel.installKernel(self);\n',{type:"classic"})}catch{}var xn=Rn("packages/modules/htmx/index.js");typeof module=="object"&&module.exports?module.exports=xn:typeof define=="function"&&define.amd?define(function(){return xn}):mr.LatticeGridHtmx=xn})(typeof globalThis<"u"?globalThis:this);
|
|
311
|
+
`.trim()}function D(K){const Q=K&&K.documentElement;if(!Q||Q.getAttribute($))return;Q.setAttribute($,"1");const G=K.createElement("style");G.textContent=B(),(K.head||K.body||Q).appendChild(G)}}),$e("packages/modules/calendar/view.js",function(e,W){"use strict";Object.defineProperty(e,"FALLBACK_EN",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"renderCalendar",{enumerable:!0,get:function(){return b}}),Object.defineProperty(e,"stopNowTimer",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(e,"showCardError",{enumerable:!0,get:function(){return he}}),Object.defineProperty(e,"stopReschedule",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(e,"announce",{enumerable:!0,get:function(){return we}}),Object.defineProperty(e,"renderCell",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"renderHeader",{enumerable:!0,get:function(){return i}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.escapeHtml,D=W("packages/modules/calendar/styles.js"),K=D.NS,Q=D.injectStyles,G=W("packages/modules/calendar/model.js"),H=G.fieldText,_=G.formatTime,z=G.titleFor,v=G.cssId,S=G.isTimeView,g=G.wallClock,u=G.nowAt,f=G.minutesToClock,a=G.isoWeekNumber,r=G.dayKeyOf,t=G.shiftDays,n=G.shiftMinutes,o=Object.freeze({"calendar.calendar":"Calendar","calendar.today":"Today","calendar.week":"Week","calendar.month":"Month","calendar.more":"more","calendar.prev":"‹","calendar.next":"›","calendar.allDay":"all-day","calendar.event":{one:"event",other:"events"},"calendar.moved":"moved","calendar.movedTo":"moved to {label}","calendar.reverted":"reverted"});function l(oe,pe){const Oe=o[oe];if(!Oe)return oe;const Ne=pe&&typeof pe.count=="number"?pe.count:NaN;return(typeof Oe=="string"?Oe:(Ne===1?Oe.one:Oe.other)||Oe.other).replace(/\{(\w+)\}/g,(ue,me)=>pe&&me in pe?String(pe[me]):ue)}function c(oe,pe,Oe){const Ne=oe&&oe.config?oe.config:{},de=Ne.messages&&$(Ne.messages.t)&&Ne.messages||Ne.grid&&Ne.grid.messages&&$(Ne.grid.messages.t)&&Ne.grid.messages||null;if(de){let ue;try{ue=de.t(pe,Oe)}catch{ue=null}if(typeof ue=="string"&&ue&&ue!==pe)return ue}return l(pe,Oe)}function i(oe){const{ctx:pe,doc:Oe}=oe,Ne=Oe.createElement("div");Ne.className=`${K}__header`;const de=pe.header.navigation!==!1,ue=pe.header.title!==!1,me=pe.header.views!==!1;if(de){const Ae=Oe.createElement("div");Ae.className=`${K}__nav`,Ae.appendChild(m(oe,"prev",oe.ctx.labels.prev??c(oe,"calendar.prev"))),Ae.appendChild(m(oe,"today",oe.ctx.labels.today??c(oe,"calendar.today"))),Ae.appendChild(m(oe,"next",oe.ctx.labels.next??c(oe,"calendar.next"))),Ne.appendChild(Ae)}if(ue){const Ae=Oe.createElement("div");Ae.className=`${K}__title`,Ae.setAttribute("aria-live","polite"),Ae.textContent=z(pe.locale,oe.model.range,pe.date),Ne.appendChild(Ae)}if(me){const Ae=Oe.createElement("div");Ae.className=`${K}__nav`,Ae.appendChild(d(oe,"week",oe.ctx.labels.week??c(oe,"calendar.week"))),Ae.appendChild(d(oe,"month",oe.ctx.labels.month??c(oe,"calendar.month"))),Ne.appendChild(Ae)}return Ne}function m(oe,pe,Oe){const Ne=oe.doc.createElement("button");return Ne.className=`${K}__button`,Ne.setAttribute("type","button"),Ne.setAttribute("data-action",pe),Ne.textContent=Oe,Ne}function d(oe,pe,Oe){const Ne=oe.doc.createElement("button");return Ne.className=`${K}__button`,Ne.setAttribute("type","button"),Ne.setAttribute("data-view",pe),Ne.setAttribute("aria-pressed",oe.model.range.view===pe?"true":"false"),Ne.textContent=Oe,Ne}function h(oe){const{ctx:pe,doc:Oe}=oe,Ne=Oe.createElement("div");Ne.className=`${K}__grid`,Ne.setAttribute("role","row");const de=new Intl.DateTimeFormat(pe.locale||void 0,{weekday:"short"}),ue=pe.firstDay;for(let me=0;me<7;me++){const Ae=(ue+me)%7,Me=new Date(2026,1,1+Ae),Ie=Oe.createElement("div");Ie.className=`${K}__weekday`,Ie.setAttribute("role","columnheader"),Ie.textContent=de.format(Me),Ne.appendChild(Ie)}return Ne}function s(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__cell`,de.setAttribute("role","gridcell"),de.setAttribute("data-day",pe.key),pe.inRange||de.setAttribute("data-outside","true"),w(pe.key)&&de.setAttribute("data-today","true"),de.setAttribute("aria-label",p(oe,pe));const ue=Ne.createElement("div");ue.className=`${K}__daynum`,ue.textContent=String(pe.dayNumber),de.appendChild(ue);const me=Ne.createElement("ul");me.className=`${K}__cards`,me.setAttribute("role","presentation");const Ae=Oe.dayMaxEvents===!1?1/0:Oe.dayMaxEvents,Me=pe.cards.slice(0,Ae);for(const Ie of Me)me.appendChild(A(oe,Ie,pe.key));if(de.appendChild(me),pe.cards.length>Me.length){const Ie=Ne.createElement("button");Ie.className=`${K}__more`,Ie.setAttribute("type","button"),Ie.setAttribute("data-day",pe.key),Ie.textContent=`+${pe.cards.length-Me.length} ${oe.ctx.labels.more??c(oe,"calendar.more")}`,de.appendChild(Ie)}return de}function p(oe,pe){const Oe=new Intl.DateTimeFormat(oe.ctx.locale||void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric"}).format(pe.date),Ne=pe.cards.length;return`${Oe}, ${Ne} ${oe.ctx.labels.event??c(oe,"calendar.event",{count:Ne})}`}function w(oe){const pe=new Date,Oe=pe.getFullYear(),Ne=String(pe.getMonth()+1).padStart(2,"0"),de=String(pe.getDate()).padStart(2,"0");return oe===`${Oe}-${Ne}-${de}`}function A(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);return ue||(ue=de.createElement("li"),ue.className=`${K}__card`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),pe.span?(ue.setAttribute("data-continuing","true"),ue.setAttribute("data-continues-before",pe.continuesBefore?"true":"false"),ue.setAttribute("data-continues-after",pe.continuesAfter?"true":"false")):(ue.removeAttribute("data-continuing"),ue.removeAttribute("data-continues-before"),ue.removeAttribute("data-continues-after")),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly"),P(oe,pe,ue),ue}function P(oe,pe,Oe){if(oe.ctx.renderCard){const me=oe.ctx.renderCard(pe.row,Oe,{key:pe.key,calendar:oe});typeof me=="string"?Oe.innerHTML=me:me&&me.nodeType&&Oe.replaceChildren(me);return}const Ne=[];pe.start&&Ne.push(`<span class="${K}__time">${B(_(oe.ctx.locale,pe.start))}</span>`);const de=H(oe.ctx,pe.row,pe.key,oe.ctx.card.title??"title");de&&Ne.push(`<span class="${K}__card-title">${B(de)}</span>`);const ue=H(oe.ctx,pe.row,pe.key,oe.ctx.card.subtitle);ue&&Ne.push(`<span class="${K}__card-subtitle">${B(ue)}</span>`),Oe.innerHTML=Ne.join("")}function b(oe){const{el:pe,ctx:Oe,doc:Ne}=oe;if(!pe)return;for(Q(Ne),Le(oe),pe.classList.add(K),pe.setAttribute("role","grid"),pe.setAttribute("aria-label",Oe.ariaLabel||oe.ctx.labels.calendar||c(oe,"calendar.calendar")),oe.isReadonly({})?pe.setAttribute("data-readonly","true"):pe.removeAttribute("data-readonly");pe.firstChild;)pe.removeChild(pe.firstChild);Oe.header!==!1&&pe.appendChild(i(oe));const de=S(Oe.view);oe._timeView!==de&&(oe._timeView=de,oe.cardEls.clear()),de?M(oe,pe):pe.appendChild(O(oe));const ue=Ne.createElement("div");ue.className=`${K}__live`,ue.setAttribute("aria-live","polite"),ue.setAttribute("role","status"),pe.appendChild(ue),oe.live=ue,se(oe),oe.wired||(te(oe),oe.wired=!0),ee(oe)}function O(oe){const{doc:pe}=oe,Oe=pe.createElement("div");Oe.className=`${K}__body`,Oe.appendChild(h(oe));const Ne=pe.createElement("div");Ne.className=`${K}__grid`,Ne.setAttribute("role","rowgroup");const de=x(oe);for(let ue=0;ue<oe.model.days.length;ue++){const me=s(oe,oe.model.days[ue]);me.style.gridColumn=String(ue%7+1),me.style.gridRow=String(Math.floor(ue/7)+1);const Ae=de.laneCountAt(Math.floor(ue/7));Ae&&me.style.setProperty("--lat-calendar-span-lanes",String(Ae)),Ne.appendChild(me)}for(const ue of de.items)Ne.appendChild(j(oe,ue.seg,ue.index,ue.lane));return Oe.appendChild(Ne),Oe}function x(oe){const pe=[];for(let de=0;de<oe.model.days.length;de++)for(const ue of oe.model.days[de].spans){const me=Math.floor(de/7);(pe[me]||(pe[me]=[])).push({seg:ue,index:de})}const Oe=[];for(const de of pe){if(!de)continue;de.sort((me,Ae)=>me.index%7-Ae.index%7||Ae.seg.length-me.seg.length);const ue=[];for(const me of de){const Ae=me.index%7;let Me=0;for(;Me<ue.length&&ue[Me]>Ae;)Me++;me.lane=Me,ue[Me]=Ae+me.seg.length,Oe.push(me)}}const Ne=pe.map(de=>de?de.reduce((ue,me)=>Math.max(ue,me.lane+1),0):0);return{items:Oe,laneCountAt:de=>Ne[de]||0}}function j(oe,pe,Oe,Ne=0){const{ctx:de,doc:ue}=oe,me=ue.createElement("div");me.className=`${K}__span`,me.setAttribute("role","button"),me.setAttribute("tabindex","-1"),me.setAttribute("data-key",String(pe.key)),me.style.gridColumn=`${Oe%7+1} / span ${pe.length}`,me.style.gridRow=String(Math.floor(Oe/7)+1),Ne&&me.style.setProperty("--lat-calendar-span-lane",String(Ne)),pe.continuesBefore&&me.setAttribute("data-continues-before","true"),pe.continuesAfter&&me.setAttribute("data-continues-after","true"),pe.color&&(me.setAttribute("data-accent",""),me.style.borderLeftColor=pe.color),oe.isReadonly({day:pe.day,card:pe.key})&&me.setAttribute("data-readonly","true");const Ae=H(de,pe.row,pe.key,de.card.title??"title");return me.textContent=Ae||String(pe.key),me}function F(oe){const pe=[],Oe=oe.slotDuration||1,Ne=Math.max(1,Math.ceil((oe.slotMaxTime-oe.slotMinTime)/Oe));for(let de=0;de<Ne;de++)pe.push(oe.slotMinTime+de*Oe);return pe}function C(oe,pe){const Oe=oe.ctx.slotMaxTime-oe.ctx.slotMinTime||1;return`${(pe-oe.ctx.slotMinTime)/Oe*100}%`}function M(oe,pe){const{doc:Oe}=oe,Ne=oe.model.days,de=Oe.createElement("div");de.className=`${K}__time`;const ue=Oe.createElement("div");ue.className=`${K}__time-head`,ue.appendChild(L(oe));const me=Oe.createElement("div");me.className=`${K}__time-cols`,me.style.setProperty("--cal-cols",String(Ne.length));for(const Me of Ne)me.appendChild(E(oe,Me));ue.appendChild(me),de.appendChild(ue);const Ae=I(oe,Ne);Ae&&de.appendChild(Ae),de.appendChild(k(oe,Ne)),pe.appendChild(de),V(oe)}function L(oe){const pe=oe.doc.createElement("div");return pe.className=`${K}__time-corner`,oe.ctx.weekNumbers&&(pe.textContent=String(a(oe.model.range.start))),pe}function E(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__time-colhead`,de.setAttribute("data-day",pe.key),w(pe.key)&&de.setAttribute("data-today","true");const ue=Oe.locale||void 0,me=new Intl.DateTimeFormat(ue,{weekday:"short"}).format(pe.date),Ae=String(pe.date.getDate());if(Oe.view==="day"){const Me=new Intl.DateTimeFormat(ue,{month:"short"}).format(pe.date);de.textContent=`${me} ${Ae} ${Me}`}else de.textContent=`${me} ${Ae}`;return de}function I(oe,pe){const{ctx:Oe,doc:Ne}=oe;let de=!1;for(const We of pe)if(We.allDay&&We.allDay.length||We.spans&&We.spans.length){de=!0;break}if(!de)return null;const ue=Ne.createElement("div");ue.className=`${K}__time-all`;const me=Ne.createElement("div");me.className=`${K}__time-corner`,me.textContent=Oe.labels.allDay??c(oe,"calendar.allDay"),ue.appendChild(me);const Ae=Ne.createElement("div");Ae.className=`${K}__time-cols`,Ae.style.setProperty("--cal-cols",String(pe.length));const Me=x(oe),Ie=Me.laneCountAt(0);Ie&&Ae.style.setProperty("--lat-calendar-span-lanes",String(Ie));for(const We of Me.items)Ae.appendChild(j(oe,We.seg,We.index,We.lane));for(let We=0;We<pe.length;We++){const Ue=Ne.createElement("div");Ue.className=`${K}__allcell`,Ue.style.gridColumn=String(We+1),Ue.style.gridRow="2";for(const Te of pe[We].allDay)Ue.appendChild(R(oe,Te,pe[We].key));Ae.appendChild(Ue)}return ue.appendChild(Ae),ue}function R(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);ue||(ue=de.createElement("div"),ue.className=`${K}__allcard`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly");const me=H(Ne,pe.row,pe.key,Ne.card.title??"title");return ue.textContent=me||String(pe.key),ue}function k(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__time-body`;const ue=Ne.createElement("div");ue.className=`${K}__time-axis`,ue.setAttribute("aria-hidden","true");for(const Ae of F(Oe)){const Me=Ne.createElement("div");Me.className=`${K}__slotlabel`,Me.textContent=f(Ae),ue.appendChild(Me)}de.appendChild(ue);const me=Ne.createElement("div");me.className=`${K}__time-cols`,me.style.setProperty("--cal-cols",String(pe.length));for(const Ae of pe)me.appendChild(q(oe,Ae));return de.appendChild(me),de}const y=48;function T(oe){const pe=oe.ctx.slotDuration||1;return oe.ctx.scrollTime/pe*y}function V(oe){if(!oe.el)return;const pe=oe.el.querySelector(`.${K}__time-body`);if(!pe)return;const Oe=T(oe);pe.scrollTop=Oe;const Ne=oe.doc&&oe.doc.defaultView,de=Ne&&$(Ne.requestAnimationFrame)||typeof globalThis<"u"&&$(globalThis.requestAnimationFrame);$(de)&&de(()=>{pe.scrollTop=Oe})}function q(oe,pe){const{ctx:Oe,doc:Ne}=oe,de=Ne.createElement("div");de.className=`${K}__daycol`,de.setAttribute("data-day",pe.key);const ue=Ne.createElement("div");ue.className=`${K}__slots`;const me=Oe.slotDuration||1,Ae=Math.max(1,Math.ceil((Oe.slotMaxTime-Oe.slotMinTime)/me));for(let Ie=0;Ie<Ae;Ie++){const We=Ne.createElement("div");We.className=`${K}__slot`,ue.appendChild(We)}if(Oe.businessHours&&Oe.businessHours.daysOfWeek.includes(pe.weekday)){const Ie=Ne.createElement("div");Ie.className=`${K}__busy`,Ie.style.top=C(oe,Oe.businessHours.start),Ie.style.height=`${(Oe.businessHours.end-Oe.businessHours.start)/(Oe.slotMaxTime-Oe.slotMinTime||1)*100}%`,ue.appendChild(Ie)}for(const Ie of pe.timed)ue.appendChild(Y(oe,Ie,pe.key));const Me=u(new Date,Oe.timeZone);if(Me.dayKey===pe.key){const Ie=Ne.createElement("div");Ie.className=`${K}__now`,Ie.setAttribute("data-now","true"),Ie.style.top=C(oe,Me.minutes),ue.appendChild(Ie)}return de.appendChild(ue),de}function Y(oe,pe,Oe){const{ctx:Ne,doc:de}=oe;let ue=oe.cardEls.get(pe.key);ue||(ue=de.createElement("div"),ue.className=`${K}__event`,ue.setAttribute("role","button"),ue.setAttribute("tabindex","-1"),ue.setAttribute("data-key",String(pe.key)),oe.cardEls.set(pe.key,ue),oe.fire("card:mount",{row:pe.row,key:pe.key,el:ue})),ue.setAttribute("data-day",Oe),ue.style.top=C(oe,pe.startMin),ue.style.height=`${(pe.endMin-pe.startMin)/(Ne.slotMaxTime-Ne.slotMinTime||1)*100}%`,ue.style.left=`${pe.col/pe.cols*100}%`,ue.style.width=`${1/pe.cols*100}%`,pe.color?(ue.setAttribute("data-accent",""),ue.style.borderLeftColor=pe.color):(ue.removeAttribute("data-accent"),ue.style.borderLeftColor=""),oe.isReadonly({day:Oe,card:pe.key})?ue.setAttribute("data-readonly","true"):ue.removeAttribute("data-readonly");const me=J(oe,pe.startMin,pe.endMin);ue.setAttribute("aria-label",me);const Ae=H(Ne,pe.row,pe.key,Ne.card.title??"title");return ue.innerHTML=`${B(me)} <span class="${K}__event-title">${B(Ae||String(pe.key))}</span>`,ue}function J(oe,pe,Oe){return`${f(pe)} – ${f(Oe)}`}function ee(oe){if(ne(oe),!oe.el||!S(oe.ctx.view))return;let pe=u(new Date,oe.ctx.timeZone).dayKey;oe._nowTimer=setInterval(()=>{const Oe=u(new Date,oe.ctx.timeZone);if(Oe.dayKey!==pe){pe=Oe.dayKey,b(oe);return}const Ne=oe.el.querySelector(`.${K}__daycol[data-day="${v(Oe.dayKey)}"] .${K}__now`);Ne&&(Ne.style.top=C(oe,Oe.minutes))},6e4),oe._nowTimer&&typeof oe._nowTimer.unref=="function"&&oe._nowTimer.unref()}function ne(oe){oe._nowTimer&&(clearInterval(oe._nowTimer),oe._nowTimer=null)}const ie=`.${K}__card, .${K}__event, .${K}__allcard`;function se(oe){const pe=oe.el.querySelector(ie);pe&&pe.setAttribute("tabindex","0")}function we(oe){if(!oe.live)return;const pe=z(oe.ctx.locale,oe.model.range,oe.ctx.date),Oe=oe.rows.count;oe.live.textContent=`${pe}, ${Oe} ${oe.ctx.labels.event??c(oe,"calendar.event",{count:Oe})}`}function he(oe,pe,Oe){if(!oe.el||!oe.doc)return;let Ne=oe.cardEls.get(pe);if(!Ne){const ue=String(pe).replace(/["\\]/g,me=>`\\${me}`);Ne=oe.el.querySelector(`[data-key="${ue}"]`)}if(!Ne||!Ne.parentNode)return;const de=oe.doc.createElement("div");de.className=`${K}__error`,de.setAttribute("role","status"),de.textContent=Oe,Ne.parentNode.insertBefore(de,Ne),oe.live&&(oe.live.textContent=Oe)}function te(oe){const{el:pe}=oe,Oe=[];oe._listeners=Oe;const Ne=(de,ue)=>{pe.addEventListener(de,ue),Oe.push({type:de,fn:ue})};Ne("click",de=>{if(de.target&&de.target.closest){const me=de.target.closest("[data-action]");if(me){const Ie=me.dataset.action;Ie==="prev"?oe.prev():Ie==="next"?oe.next():Ie==="today"&&oe.today();return}const Ae=de.target.closest("[data-view]");if(Ae){oe.setView(Ae.dataset.view);return}const Me=de.target.closest(`.${K}__more`);if(Me){Se(oe,Me.dataset.day,Me);return}}const ue=ae(oe,de.target);ue&&oe.fire("card:click",ge(oe,ue,de))}),Ne("dblclick",de=>{const ue=ae(oe,de.target);ue&&oe.fire("card:dblclick",ge(oe,ue,de))}),Ne("contextmenu",de=>{const ue=ae(oe,de.target);ue&&oe.fire("card:contextmenu",ge(oe,ue,de))}),Ne("keydown",de=>je(oe,de)),Ne("pointerdown",de=>ft(oe,de))}function ae(oe,pe){const Oe=pe&&pe.closest?pe.closest("[data-key]"):null;if(!Oe)return null;const Ne=be(oe,Oe.dataset.key),de=oe.cardByKey.get(Ne);return de?{el:Oe,card:de,key:Ne}:null}function ge(oe,pe,Oe){return{row:pe.card.row,key:pe.key,clientX:Oe.clientX??0,clientY:Oe.clientY??0,nativeEvent:Oe}}function be(oe,pe){if(oe.cardByKey.has(pe))return pe;const Oe=Number(pe);return!Number.isNaN(Oe)&&oe.cardByKey.has(Oe)?Oe:pe}function je(oe,pe){if(pe.key==="PageUp"){pe.preventDefault&&pe.preventDefault(),oe.prev();return}if(pe.key==="PageDown"){pe.preventDefault&&pe.preventDefault(),oe.next();return}if(fe(oe,pe,S(oe.ctx.view)))return;if(S(oe.ctx.view)){xe(oe,pe);return}const Oe=pe.target&&pe.target.closest?pe.target.closest(`.${K}__card`):null;if(!Oe)return;const Ne=Oe.dataset.day,de=oe.model.days.findIndex(Ie=>Ie.key===Ne);if(de<0)return;let ue;if(pe.key==="ArrowLeft")ue=oe.model.days[de-1];else if(pe.key==="ArrowRight")ue=oe.model.days[de+1];else if(pe.key==="ArrowUp")ue=oe.model.days[de-7];else if(pe.key==="ArrowDown")ue=oe.model.days[de+7];else if(pe.key==="Home"){ye(oe);return}else if(pe.key==="End"){ve(oe);return}else if(pe.key==="Enter"||pe.key===" "){pe.preventDefault&&pe.preventDefault();const Ie=ae(oe,pe.target);Ie&&oe.fire("card:click",ge(oe,Ie,pe));return}if(!ue)return;pe.preventDefault&&pe.preventDefault();const me=oe.el.querySelectorAll(`.${K}__card[data-day="${v(ue.key)}"]`),Ae=[...oe.el.querySelectorAll(`.${K}__card[data-day="${v(Ne)}"]`)].indexOf(Oe),Me=me[Math.min(Math.max(Ae,0),me.length-1)]||null;Me&&(Oe.setAttribute("tabindex","-1"),Me.setAttribute("tabindex","0"),Me.focus&&Me.focus())}function xe(oe,pe){const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-key]"):null;if(Oe){if(pe.key==="Enter"||pe.key===" "){pe.preventDefault&&pe.preventDefault();const Ne=ae(oe,pe.target);Ne&&oe.fire("card:click",ge(oe,Ne,pe));return}if(pe.key==="ArrowLeft"||pe.key==="ArrowRight"){pe.preventDefault&&pe.preventDefault();const Ne=oe.model.days.findIndex(ue=>ue.key===Oe.dataset.day),de=oe.model.days[Ne+(pe.key==="ArrowLeft"?-1:1)];if(!de)return;ke(oe,de.key);return}(pe.key==="ArrowUp"||pe.key==="ArrowDown")&&(pe.preventDefault&&pe.preventDefault(),Ce(oe,Oe,pe.key==="ArrowDown"?1:-1))}}function Ce(oe,pe,Oe){const Ne=pe.dataset.day,de=oe.model.days.find(We=>We.key===Ne);if(!de||!de.timed)return;const ue=[...de.timed].sort((We,Ue)=>We.startMin-Ue.startMin),me=be(oe,pe.dataset.key),Ae=ue.findIndex(We=>String(We.key)===String(me));if(Ae<0)return;const Me=ue[Ae+Oe];if(!Me)return;const Ie=oe.el.querySelector(`.${K}__event[data-day="${v(Ne)}"][data-key="${v(Me.key)}"]`);if(Ie){for(const We of oe.el.querySelectorAll(ie))We.setAttribute("tabindex","-1");Ie.setAttribute("tabindex","0"),Ie.focus&&Ie.focus()}}function ke(oe,pe){const Oe=oe.el.querySelector(`.${K}__event[data-day="${v(pe)}"], .${K}__allcard[data-day="${v(pe)}"]`);if(Oe){for(const Ne of oe.el.querySelectorAll(ie))Ne.setAttribute("tabindex","-1");Oe.setAttribute("tabindex","0"),Oe.focus&&Oe.focus()}}function ye(oe){const pe=oe.el.querySelector(ie);if(pe){for(const Oe of oe.el.querySelectorAll(ie))Oe.setAttribute("tabindex","-1");pe.setAttribute("tabindex","0"),pe.focus&&pe.focus()}}function ve(oe){const pe=oe.el.querySelectorAll(ie),Oe=pe[pe.length-1];if(Oe){for(const Ne of pe)Ne.setAttribute("tabindex","-1");Oe.setAttribute("tabindex","0"),Oe.focus&&Oe.focus()}}function Se(oe,pe,Oe){if(oe.popover&&oe.popover.dataset.day===pe){Le(oe);return}Le(oe);const Ne=oe.model.days.find(Ae=>Ae.key===pe);if(!Ne)return;const de=oe.ctx.dayMaxEvents===!1?1/0:oe.ctx.dayMaxEvents,ue=Ne.cards.slice(de),me=oe.doc.createElement("ul");me.className=`${K}__popover`,me.setAttribute("data-day",pe),me.setAttribute("role","menu");for(const Ae of ue){const Me=oe.doc.createElement("li");Me.className=`${K}__popitem`,Me.setAttribute("role","menuitem"),Me.setAttribute("tabindex","-1"),Me.textContent=H(oe.ctx,Ae.row,Ae.key,oe.ctx.card.title??"title")||String(Ae.key),Me.addEventListener("click",Ie=>{Ie.preventDefault&&Ie.preventDefault(),oe.fire("card:click",{row:Ae.row,key:Ae.key,clientX:0,clientY:0,nativeEvent:Ie}),Le(oe)}),me.appendChild(Me)}Oe.parentNode.appendChild(me),oe.popover=me}function Le(oe){oe.popover&&oe.popover.parentNode&&oe.popover.parentNode.removeChild(oe.popover),oe.popover=null}const De=6;function He(oe,pe){return pe?oe.model.days.findIndex(Oe=>Oe.key===pe):-1}function Ze(oe){return oe&&oe.day?oe.day:oe&&oe.start?r(oe.start):null}function Ee(oe,pe){const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-day]"):null,Ne=Oe?Oe.dataset.day:null;if(!Ne)return null;const de=He(oe,Ne);return de<0?null:{dayKey:Ne,dayIndex:de}}function Ge(oe,pe){Ye(oe);const Oe=pe.target&&pe.target.closest?pe.target.closest("[data-day]"):null;if(!(!Oe||!oe.el))if(S(oe.ctx.view)){const Ne=Oe.closest(`.${K}__daycol`)||(Oe.classList&&Oe.classList.contains(`${K}__daycol`)?Oe:null);Ne&&(Ne.classList.add(`${K}__drop-target`),oe._dropTarget=Ne)}else{const Ne=Oe.classList&&Oe.classList.contains(`${K}__cell`)?Oe:Oe.closest(`.${K}__cell`);Ne&&(Ne.classList.add(`${K}__drop-target`),oe._dropTarget=Ne)}}function Ye(oe){oe._dropTarget&&oe._dropTarget.classList&&oe._dropTarget.classList.remove(`${K}__drop-target`),oe._dropTarget=null}function tt(oe,pe){const Oe=oe.el;if(!Oe||!Oe.getBoundingClientRect){st(oe);return}const Ne=Oe.getBoundingClientRect(),de=pe.clientX||0,ue=24;let me=0;if(de<=Ne.left+ue?me=-1:de>=Ne.right-ue&&(me=1),me===0){st(oe);return}oe._dwell&&oe._dwell.dir===me||(st(oe),oe._dwell={dir:me,timer:setTimeout(()=>{me<0?oe.prev():oe.next(),oe._dwell=null},600)})}function st(oe){oe._dwell&&oe._dwell.timer&&(clearTimeout(oe._dwell.timer),oe._dwell.timer=null),oe._dwell=null}function ft(oe,pe){const Oe=ae(oe,pe.target);if(!Oe||oe.isReadonly({day:Ze(Oe.card),card:Oe.key}))return;const Ne=He(oe,Ze(Oe.card));if(Ne<0)return;let de="move";if(S(oe.ctx.view)&&Oe.card.allDay===!1){const Ae=Oe.el.getBoundingClientRect?Oe.el.getBoundingClientRect():null,Me=Ae?Ae.bottom:pe.clientY||0;(pe.clientY||0)>=Me-De&&(de="resize")}const{start:ue,end:me}=Oe.card;oe._drag={key:Oe.key,mode:de,startX:pe.clientX||0,startY:pe.clientY||0,start:ue?new Date(ue):null,end:me?new Date(me):null,sourceDayIndex:Ne},pe.preventDefault&&pe.preventDefault(),oe._dragListeners||mt(oe)}function mt(oe){const pe=oe.doc;if(!pe||!pe.addEventListener)return;const Oe=de=>{oe._drag&&(Ge(oe,de),tt(oe,de))},Ne=de=>{jt(oe,de)};pe.addEventListener("pointermove",Oe),pe.addEventListener("pointerup",Ne),oe._dragListeners={move:Oe,up:Ne}}function St(oe){if(!oe._dragListeners)return;const pe=oe.doc;pe&&pe.removeEventListener&&(pe.removeEventListener("pointermove",oe._dragListeners.move),pe.removeEventListener("pointerup",oe._dragListeners.up)),oe._dragListeners=null}function jt(oe,pe){const Oe=oe._drag;if(St(oe),st(oe),Ye(oe),oe._drag=null,!Oe||!Oe.start)return;const Ne=Ee(oe,pe);if(!Ne){Pt(oe);return}const de=(pe.clientY||0)-Oe.startY,ue=oe.ctx.slotDuration||1,me=Math.round(de/y)*ue,Ae=Ne.dayIndex-Oe.sourceDayIndex;if(Oe.mode==="resize"){if(me===0){Pt(oe);return}const Me=n(Oe.end||Oe.start,me);oe.move(Oe.key,{end:Me});return}if(S(oe.ctx.view)){const Me=me+Ae*24*60;if(Me===0){Pt(oe);return}const Ie=n(Oe.start,Me),We=Oe.end?n(Oe.end,Me):null;oe.move(Oe.key,{start:Ie,end:We})}else{if(Ae===0){Pt(oe);return}const Me=t(Oe.start,Ae),Ie=Oe.end?t(Oe.end,Ae):null;oe.move(Oe.key,{start:Me,end:Ie})}}function Pt(oe){oe.el&&$(oe.refresh)&&oe.refresh()}function Tt(oe,pe){if(S(oe.ctx.view)){const Ne=pe.start?J(oe,pe.start.getHours()*60+pe.start.getMinutes(),pe.end?pe.end.getHours()*60+pe.end.getMinutes():0):"";return c(oe,"calendar.movedTo",{label:Ne})}const Oe=new Intl.DateTimeFormat(oe.ctx.locale||void 0,{month:"short",day:"numeric"});return pe.start?c(oe,"calendar.movedTo",{label:Oe.format(pe.start)}):c(oe,"calendar.moved")}function Mt(oe,pe){const Oe=oe.cardByKey.get(pe.key);if(!Oe)return;const{start:Ne,end:de}=$t(oe,Oe);if(!Ne)return;let ue=oe._kbd;(!ue||ue.key!==pe.key)&&(ue={key:pe.key,fromStart:Ne,fromEnd:de,toStart:Ne,toEnd:de},oe._kbd=ue),pe.resizeEnd?ue.toEnd=n(ue.toEnd||ue.toStart,pe.deltaMinutes):(ue.toStart=pe.deltaDays!==0?t(ue.toStart,pe.deltaDays):n(ue.toStart,pe.deltaMinutes),ue.toEnd&&(ue.toEnd=pe.deltaDays!==0?t(ue.toEnd,pe.deltaDays):n(ue.toEnd,pe.deltaMinutes))),et(oe,Tt(oe,{start:ue.toStart,end:ue.toEnd}))}function $t(oe,pe){return{start:pe.start?new Date(pe.start):null,end:pe.end?new Date(pe.end):null}}function lt(oe,pe){const Oe=oe._kbd;oe._kbd=null,Oe&&(pe?oe.move(Oe.key,{start:Oe.toStart,end:Oe.toEnd}):et(oe,c(oe,"calendar.reverted")))}function et(oe,pe){oe.live&&(oe.live.textContent=pe)}function fe(oe,pe,Oe){const Ne=ae(oe,pe.target);if(!Ne||oe.isReadonly({day:Ze(Ne.card),card:Ne.key}))return!1;const de=pe.shiftKey===!0,ue=pe.altKey===!0;if(pe.key==="Enter"&&oe._kbd&&oe._kbd.key===Ne.key)return pe.preventDefault&&pe.preventDefault(),lt(oe,!0),!0;if(pe.key==="Escape"&&oe._kbd&&oe._kbd.key===Ne.key)return pe.preventDefault&&pe.preventDefault(),lt(oe,!1),!0;const me=oe.ctx.slotDuration||30;if(Oe){if(de&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:0,deltaMinutes:pe.key==="ArrowDown"?me:-me,resizeEnd:!1}),!0;if(de&&(pe.key==="ArrowLeft"||pe.key==="ArrowRight"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowRight"?1:-1,deltaMinutes:0,resizeEnd:!1}),!0;if(ue&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:0,deltaMinutes:pe.key==="ArrowDown"?me:-me,resizeEnd:!0}),!0}else{if(de&&(pe.key==="ArrowLeft"||pe.key==="ArrowRight"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowRight"?1:-1,deltaMinutes:0,resizeEnd:!1}),!0;if(de&&(pe.key==="ArrowUp"||pe.key==="ArrowDown"))return pe.preventDefault&&pe.preventDefault(),Mt(oe,{key:Ne.key,deltaDays:pe.key==="ArrowDown"?7:-7,deltaMinutes:0,resizeEnd:!1}),!0}return!1}function Pe(oe){St(oe),st(oe),Ye(oe),oe._drag=null,oe._kbd=null}}),$e("packages/modules/calendar/index.js",function(e,W){"use strict";Object.defineProperty(e,"createCalendar",{enumerable:!0,get:function(){return L}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return E}});const Z=W("packages/core/src/internal/util.js"),$=Z.isObject,B=Z.isFunction,D=Z.isNil,K=Z.warnOnce,Q=Z.mergeRow,G=Z.setPath,H=W("packages/modules/calendar/model.js"),_=H.resolveContext,z=H.computeRange,v=H.buildDays,S=H.buildTimeDays,g=H.keyFn,u=H.parseDate,f=H.startOfDay,a=H.isTimeView,r=H.resolveReadonly,t=H.clockMinutes,n=H.minutesToClock,o=H.rowDates,l=H.toWriteString,c=H.isDateOnlyValue,i=H.dayKeyOf,d=W("packages/modules/shared/emitter.js").Emitter,s=W("packages/modules/calendar/styles.js").NS,p=W("packages/modules/calendar/view.js"),w=p.renderCalendar,A=p.announce,P=p.stopNowTimer,b=p.showCardError,O=p.stopReschedule,x=Object.freeze(["card:click","card:dblclick","card:contextmenu","card:mount","range:change","beforeMove","card:move"]),j=Object.freeze({onCardClick:"card:click",onCardDblClick:"card:dblclick",onCardContextMenu:"card:contextmenu",onRangeChange:"range:change"});function F(I,R){if(Array.isArray(I.rows))return I.rows;const k=I.grid;if(!k||!k.rows||!B(k.rows.forEach))return[];const y=[R.startProperty,R.endProperty,R.allDayProperty,R.colorProperty].filter(J=>typeof J=="string"),T=k.columns&&B(k.columns.all)?k.columns.all():[],V=J=>{if(k.columns&&B(k.columns.get)&&k.columns.get(J))return J;const ee=T.find(ne=>ne&&ne.field===J);return ee?ee.id:J},q=new Map(y.map(J=>[J,V(J)])),Y=[];return k.rows.forEach(J=>{if(J&&J.group||J&&J.pending===!0)return;const ee={__calKey:J.key};for(const ne of y)try{ee[ne]=k.rows.value(J.key,q.get(ne))}catch{ee[ne]=void 0}Y.push(ee)}),Y}function C(I,R){const k=I.getDate(),y=new Date(I.getFullYear(),I.getMonth()+R,1),T=new Date(y.getFullYear(),y.getMonth()+1,0).getDate();return new Date(y.getFullYear(),y.getMonth(),Math.min(k,T))}function M(I,R){const k=u(I),y=u(R);return!!k&&!!y&&k.getTime()===y.getTime()}function L(I,R={}){const k=$(R)?R:{},y=_(k);k.grid&&!Array.isArray(k.rows)&&(y.key=g("__calKey"));const T=new d("calendar"),V=r(k.readonly),q=I&&I.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,Y=!!k.grid&&!Array.isArray(k.rows),J=new Map;let ee=!1;const ne=ke=>{if(!Y||typeof ke!="string")return ke;const ye=k.grid&&k.grid.columns;if(!ye)return ke;try{if(B(ye.get)&&ye.get(ke))return ke;const Se=(B(ye.all)?ye.all():[]).find(Le=>Le&&Le.field===ke);return Se?Se.id:ke}catch{return ke}},ie=new Map,se={el:I||null,doc:q,ctx:y,config:k,emitter:T,isReadonly:V,wired:!1,rowKey:k.rowKey??(Y?"__calKey":"id"),model:{range:null,days:[],unscheduled:[]},cardEls:new Map,cardByKey:new Map,live:null,popover:null,unscheduled:[],fire(ke,ye){T.emit(ke,ye);for(const[ve,Se]of Object.entries(j))Se===ke&&B(k[ve])&&k[ve](ye)}},we=()=>{J.clear();for(const ke of F(k,y)){const ye=y.key(ke),ve=ie.get(ye);ve&&(ve.start!==void 0&&(ke[y.startProperty]=ve.start),ve.end!==void 0&&y.endProperty&&(ke[y.endProperty]=ve.end)),J.set(ye,ke)}},he=()=>{se.model.range=z(y.date,y.view,y.firstDay);const ke=a(y.view)?S(y,[...J.values()],se.model.range):v(y,[...J.values()],se.model.range);se.model.days=ke.days,se.model.unscheduled=ke.unscheduled,se.unscheduled=ke.unscheduled,se.cardByKey.clear();for(const ye of ke.days){for(const ve of ye.cards||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.timed||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.allDay||[])se.cardByKey.set(ve.key,ve);for(const ve of ye.spans||[])se.cardByKey.set(ve.key,ve)}},te=()=>(se.el&&w(se),se),ae=()=>(he(),te());se.refresh=()=>(ee||we(),ae());const ge=(ke,ye)=>{y.date=f(ke),ye!==void 0&&(y.view=ye),he(),te(),A(se);const ve=se.model.range;return se.fire("range:change",{start:new Date(ve.start),end:new Date(ve.end),view:ve.view}),se},be=ke=>y.view==="day"?new Date(y.date.getFullYear(),y.date.getMonth(),y.date.getDate()+ke):y.view==="week"||y.view==="week-time"?new Date(y.date.getFullYear(),y.date.getMonth(),y.date.getDate()+ke*7):C(y.date,ke);se.prev=()=>ge(be(-1)),se.next=()=>ge(be(1)),se.today=()=>ge(new Date),se.goTo=ke=>{const ye=u(ke);return ye?ge(ye):se},se.setView=ke=>["week","month","week-time","day"].includes(ke)?ge(y.date,ke):se,se.getRange=()=>{const ke=se.model.range;return{start:new Date(ke.start),end:new Date(ke.end),view:ke.view}},se.getState=()=>({version:2,view:y.view,date:`${y.date.getFullYear()}-${String(y.date.getMonth()+1).padStart(2,"0")}-${String(y.date.getDate()).padStart(2,"0")}`,firstDay:y.firstDay,slotDuration:y.slotDuration,scrollTime:n(y.scrollTime)}),se.setState=ke=>{const ye=$(ke)?ke:{};if(ye.version!==void 0&&ye.version!==2&&K("calendar:state-version",`calendar: restoring state version ${JSON.stringify(ye.version)} into a version-2 calendar; unknown fields are skipped.`),["week","month","week-time","day"].includes(ye.view)&&(y.view=ye.view),typeof ye.date=="string"&&ye.date){const ve=u(ye.date);ve&&(y.date=ve)}if(typeof ye.firstDay=="number"&&ye.firstDay>=0&&ye.firstDay<=6&&(y.firstDay=ye.firstDay),typeof ye.slotDuration=="number"&&Number.isFinite(ye.slotDuration)&&ye.slotDuration>0&&(y.slotDuration=ye.slotDuration),typeof ye.scrollTime=="string"&&ye.scrollTime){const ve=t(ye.scrollTime,NaN);Number.isFinite(ve)&&(y.scrollTime=ve)}return ae()},se.rows={apply(ke={}){if(Y){K("calendar:apply-gridbound","rows.apply on a grid-bound calendar is ignored; route to the bound grid instead.");return}ee=!0;for(const ye of ke.add||[])J.set(y.key(ye),ye);for(const ye of ke.update||[]){const ve=y.key(ye);J.set(ve,Q(J.get(ve),ye))}for(const ye of ke.remove||[])J.delete(ye);ae()},forEach(ke){for(const[ye,ve]of J)ke(ve,ye)},get(ke){return J.get(ke)},get count(){return J.size}},se.setRows=ke=>Y?(K("calendar:setRows-gridbound","setRows on a grid-bound calendar is ignored; the rows come from the bound grid."),se):(Array.isArray(ke)&&(k.rows=ke),ee=!1,we(),ae()),se.move=async(ke,ye,ve={})=>{const Se=ve.origin||"user",Le=J.get(ke);if(!Le)return!1;const{start:De,end:He}=o(y,Le);if(!De)return!1;const Ze=se.cardByKey.get(ke),Ee=Ze&&Ze.day||i(De);if(se.isReadonly({day:Ee,card:ke}))return!1;const Ge=!!(ye&&ye.start instanceof Date),Ye=!!(ye&&ye.end instanceof Date),tt=Ge?new Date(ye.start):De;let st;if(Ye)st=new Date(ye.end);else if(Ge&&He){const Mt=tt.getTime()-De.getTime();st=new Date(He.getTime()+Mt)}else st=He;const ft={row:Le,key:ke,from:{start:De,end:He},to:{start:tt,end:st},origin:Se},mt=T.emitBefore("beforeMove",ft,Se);if((mt===!0?!0:mt===!1?!1:await mt)===!1)return!1;const jt=De.getTime()!==tt.getTime(),Pt=y.endProperty&&!!He&&!!st&&He.getTime()!==st.getTime();if(Y){const Mt=k.grid,$t=ne(y.startProperty),lt=y.endProperty?ne(y.endProperty):null,et=[];if(jt&&et.push({key:ke,colId:$t,value:l(tt,c(Le[y.startProperty]))}),Pt&<&&et.push({key:ke,colId:lt,value:l(st,c(Le[y.endProperty]))}),!et.length)return!1;const fe=Mt.edit.setCells(et,"cell",{origin:Se});if((fe&&typeof fe.then=="function"?await fe:fe)!==et.length){const oe=Mt.validation&&B(Mt.validation.errorFor)?Mt.validation.errorFor(ke,$t)||(lt?Mt.validation.errorFor(ke,lt):null):null,pe=[];return jt&&pe.push({key:ke,colId:$t,value:l(De,c(Le[y.startProperty]))}),Pt&<&&pe.push({key:ke,colId:lt,value:l(He,c(Le[y.endProperty]))}),pe.length&&Mt.edit.setCells(pe,"cell",{origin:"api"}),se.refresh(),K("calendar:writeback-noop",`a card reschedule did not persist through the bound grid: writing "${y.startProperty}" was refused (a read-only, non-editable, permission-blocked, unresolvable or invalid column), so the card stayed where it was.`),oe&&oe.message&&b(se,ke,oe.message),!1}return ie.set(ke,{start:jt?et.find(oe=>oe.colId===$t).value:void 0,end:Pt?et.find(oe=>oe.colId===lt).value:void 0}),se.refresh(),se.fire("card:move",ft),!0}const Tt={...Le};if(jt&&G(Le,y.startProperty,l(tt,c(Le[y.startProperty]))),Pt&&G(Le,y.endProperty,l(st,c(Le[y.endProperty]))),ae(),se.fire("card:move",ft),B(k.onCardMove)){let Mt=k.onCardMove(ft);if(Mt=Mt instanceof Promise?await Mt.then($t=>$t,()=>!1):Mt,Mt===!1)return J.set(ke,Tt),ae(),!1}return!0},se.on=(ke,ye)=>(x.includes(ke)||K(`calendar:event:${ke}`,`"${ke}" is not a calendar event; expected one of ${x.join(", ")}.`),T.on(ke,ye)),se.off=(ke,ye)=>T.off(ke,ye),se.readonly=(ke={})=>V(ke),se.destroy=()=>{const ke=se.el;if(ke){for(;ke.firstChild;)ke.removeChild(ke.firstChild);if(ke.classList.remove(s),ke.removeAttribute("role"),ke.removeAttribute("aria-label"),delete ke.dataset.readonly,ke.__latticeCalendar===se&&(ke.__latticeCalendar=null),se._listeners){for(const ye of se._listeners)ke.removeEventListener(ye.type,ye.fn);se._listeners=null}}se.wired=!1,P(se),O(se),se._stopFollowing&&(se._stopFollowing(),se._stopFollowing=null),se.cardEls.clear(),se.cardByKey.clear(),se.popover=null,se.live=null,ie.clear(),T.clear(),se.model={range:null,days:[],unscheduled:[]},se.unscheduled=[]};const je=[],xe=()=>{for(;je.length;)je.pop()()},Ce=()=>{xe();const ke=k.grid;if(!ke||!B(ke.on))return;const ye=ne(y.startProperty),ve=(De,He)=>{const Ze=Ge=>{Ge&&Ge.colId===ye&&ie.has(Ge.key)&&He(Ge)&&ie.delete(Ge.key),se.refresh()},Ee=ke.on(De,Ze);je.push(()=>{B(Ee)?Ee():B(ke.off)&&ke.off(De,Ze)})};ve("cell:changed",De=>{const He=ie.get(De.key);return He&&He.start!==void 0&&De.value!==He.start}),ve("cell:confirmed",()=>!0),ve("cell:reverted",()=>!0);const Se=De=>{const He=De&&De.change;if(He&&ie.size){const Ze=[...He.update||[],...He.add||[]];for(const[Ee,Ge]of ie)Ge.start!==void 0&&Ze.some(Ye=>Ye&&M(Ye[y.startProperty],Ge.start))&&ie.delete(Ee)}se.refresh()},Le=ke.on("rows:changed",Se);je.push(()=>{B(Le)?Le():B(ke.off)&&ke.off("rows:changed",Se)});for(const De of["filter:changed","sort:changed","model:changed","stream:chunk","stream:evicted"]){const He=()=>{se.refresh()},Ze=ke.on(De,He);je.push(()=>{B(Ze)?Ze():B(ke.off)&&ke.off(De,He)})}je.push(ke.on("destroy",()=>{xe()}))};return Y&&Ce(),se._stopFollowing=xe,se.rebind=ke=>!Y||!ke||ke===k.grid?se:(k.grid=ke,Ce(),we(),ae()),I&&(I.__latticeCalendar=se),we(),he(),te(),A(se),se}const E=L}),$e("packages/modules/htmx/calendar.js",function(e,W){"use strict";Object.defineProperty(e,"CALENDAR_ATTR",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"autoInitCalendar",{enumerable:!0,get:function(){return S}});const $=W("packages/core/src/internal/util.js").isFunction,D=W("packages/modules/calendar/index.js").createCalendar,K="data-lattice-calendar",Q="data-lattice-config",G="data-lattice-bind";function H(g,u){const f=[];return $(g.hasAttribute)&&g.hasAttribute(u)&&f.push(g),$(g.querySelectorAll)&&f.push(...g.querySelectorAll(`[${u}]`)),f}function _(g){const u=g.parentNode;if(!u||!u.children)return null;const f=[...u.children],a=f.indexOf(g),r=[f[a+1],f[a-1]];for(const t of r)if(t&&t.tagName==="SCRIPT"&&$(t.getAttribute)&&t.hasAttribute(Q))return t;return null}function z(g){if($(g.getAttribute)&&g.hasAttribute(Q))try{return JSON.parse(g.getAttribute(Q)||"{}")}catch{}const u=_(g);if(!u)return{};try{return JSON.parse(u.textContent||"{}")}catch(f){return console.warn("[lattice] autoInitCalendar: data-lattice-config is not valid JSON, ignoring it.",f),{}}}function v(g,u){const f=$(g.getAttribute)?g.getAttribute(G):null,a=f&&f!==""?f:typeof u.grid=="string"?u.grid:null;if(!a)return null;const r=g.ownerDocument||(typeof document<"u"?document:null);if(!r||!$(r.getElementById))return null;const t=r.getElementById(a);return t&&t.__lattice?t.__lattice:null}function S(g){const u=g||(typeof document<"u"?document:null);if(!u)return[];const f=[];for(const a of H(u,K)){if(a.__latticeCalendar)continue;const r=z(a),t=v(a,r);t&&(r.grid=t),f.push(D(a,r))}return f}}),$e("packages/modules/htmx/rowmodel.js",function(e,W){"use strict";Object.defineProperty(e,"HTML_ROW_WARNING_THRESHOLD",{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,"queryParams",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"rowsFromFragment",{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,"rowsFromJson",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"warnIfLargeHtmlPayload",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"ingestResponse",{enumerable:!0,get:function(){return z}});const Z=W("packages/dom/src/hydrate.js"),$=Z.coerceCell,B=Z.childTags,D=Z.firstChildTag,K=5e3;function Q(v,S={}){const g=v.pagination.get(),u=S.limit??(g.pageSize||100);return{offset:S.offset??(g.page??0)*u,limit:u,sort:JSON.stringify(v.sort.get()),filters:JSON.stringify(v.filters.get())}}function G(v,S){let g;if(v.tagName==="TR")g=[v];else{const u=D(v,"tbody")||v;g=B(u,"tr").length?B(u,"tr"):B(v,"tr")}return g.map((u,f)=>{const a=B(u,"td"),t={__row:(typeof u.getAttribute=="function"?u.getAttribute("data-id"):null)||`row${f}`};return S.forEach((n,o)=>{t[n.field]=a[o]?$(String(a[o].textContent||"")):null}),t})}function H(v){const S=JSON.parse(v);return Array.isArray(S)?{rows:S,total:void 0}:{rows:S.rows||[],total:S.total}}function _(v){v<=K||console.warn(`lattice-grid/htmx: parsed ${v} rows from an HTML fragment, past the documented ${K}-row boundary for that path. Consider a JSON response for this size.`)}function z(v,S){if(/json/i.test(v.contentType||""))return H(v.text);const u=G(v.fragment,S);return _(u.length),{rows:u,total:void 0}}}),$e("packages/modules/htmx/oob.js",function(e,W){"use strict";Object.defineProperty(e,"driveOobUpdates",{enumerable:!0,get:function(){return K}});const $=W("packages/core/src/internal/util.js").isFunction,D=W("packages/modules/htmx/rowmodel.js").rowsFromFragment;function K(Q,G={}){const H=G.doc||(typeof document<"u"?document:null);if(!H||!$(H.addEventListener))return()=>{};const _=z=>{const v=z.detail,S=v&&v.target,g=S&&$(S.getAttribute)?S.getAttribute("data-lattice-row"):null;if(!g||!v.fragment)return;const u=G.columns||Q.columns.visible().map(a=>({field:a.field||a.id})),[f]=D(v.fragment,u);f&&(delete f.__row,Q.rows.apply({update:[{...f,[Q.get("rowKey")]:g}]})),v.shouldSwap=!1};return H.addEventListener("htmx:oobBeforeSwap",_),()=>H.removeEventListener("htmx:oobBeforeSwap",_)}}),$e("packages/modules/htmx/servermode.js",function(e,W){"use strict";Object.defineProperty(e,"QUERY_CHANGED_EVENT",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"driveServerMode",{enumerable:!0,get:function(){return H}}),Object.defineProperty(e,"SCROLL_NEAR_END_EVENT",{enumerable:!0,get:function(){return _}}),Object.defineProperty(e,"driveInfiniteScroll",{enumerable:!0,get:function(){return z}});const $=W("packages/core/src/internal/util.js").isFunction,B=W("packages/modules/htmx/rowmodel.js"),D=B.queryParams,K=B.ingestResponse,Q="lattice:query-changed";function G(v,S){const g=v.createElement("tbody");if($(v.createRange)){const u=v.createRange();u.selectNodeContents(g),g.appendChild(u.createContextualFragment(S))}return g}function H(v,S,g={}){const u=S.ownerDocument;let f=!1;const a=i=>{i.target!==S||!i.detail||!i.detail.parameters||Object.assign(i.detail.parameters,D(v,g))},r=i=>{i.target===S&&(f=!0)},t=i=>{if(f=!1,i.target!==S)return;const m=i.detail&&i.detail.xhr&&i.detail.xhr.status,d=m?`Could not load rows (server responded ${m}).`:"Could not load rows, the request failed to reach the server.";v.overlay.show("empty",d)},n=i=>{if(i.target!==S||(f=!1,i.detail&&(i.detail.shouldSwap=!1),!i.detail||!i.detail.xhr||i.detail.isError))return;const{xhr:m}=i.detail,d=$(m.getResponseHeader)&&m.getResponseHeader("Content-Type")||"",h=i.detail.serverResponse??m.responseText??"",s=g.columns||v.columns.visible().map(A=>({field:A.field||A.id})),p=/json/i.test(d)?null:G(u,h),{rows:w}=K({contentType:d,text:h,fragment:p},s);v.rows.load(w)},o=()=>{if(f&&$(S.dispatchEvent)){const m=u.defaultView&&u.defaultView.CustomEvent;S.dispatchEvent(m?new m("htmx:abort"):{type:"htmx:abort",bubbles:!0})}const i=globalThis.htmx;i&&$(i.trigger)&&i.trigger(S,Q)};u.addEventListener("htmx:configRequest",a),u.addEventListener("htmx:beforeRequest",r),u.addEventListener("htmx:beforeSwap",n),u.addEventListener("htmx:responseError",t),u.addEventListener("htmx:sendError",t);const l=v.on("sort:changed",o),c=v.on("filter:changed",o);return()=>{u.removeEventListener("htmx:configRequest",a),u.removeEventListener("htmx:beforeRequest",r),u.removeEventListener("htmx:beforeSwap",n),u.removeEventListener("htmx:responseError",t),u.removeEventListener("htmx:sendError",t),l(),c()}}const _="lattice:scroll-near-end";function z(v,S,g={}){const u=S.ownerDocument,f=g.threshold??20;let a=!1,r=!1;const t=P=>{P.target!==S||!P.detail||!P.detail.parameters||Object.assign(P.detail.parameters,D(v,{...g,offset:v.rows.count()}))},n=P=>{P.target===S&&(a=!0)},o=P=>{P.target===S&&(a=!1)},l=P=>{if(P.target!==S||(a=!1,P.detail&&(P.detail.shouldSwap=!1),!P.detail||!P.detail.xhr||P.detail.isError))return;const{xhr:b}=P.detail,O=$(b.getResponseHeader)&&b.getResponseHeader("Content-Type")||"",x=P.detail.serverResponse??b.responseText??"",j=g.columns||v.columns.visible().map(M=>({field:M.field||M.id})),F=/json/i.test(O)?null:G(u,x),{rows:C}=K({contentType:O,text:x,fragment:F},j);if(!C.length){r=!0;return}v.rows.apply({add:C})},c=()=>{r=!1},i=()=>{if(a||r)return;const P=globalThis.htmx;P&&$(P.trigger)&&P.trigger(S,_)};let m=!1;const d=()=>{m=!0},h=({last:P})=>{m&&(m=!1,(v.rows.count()===0||P>=v.rows.count()-1-f)&&i())};u.addEventListener("htmx:configRequest",t),u.addEventListener("htmx:beforeRequest",n),u.addEventListener("htmx:beforeSwap",l),u.addEventListener("htmx:responseError",o),u.addEventListener("htmx:sendError",o);const s=v.on("render:done",h),p=v.on("scroll",d),w=v.on("sort:changed",c),A=v.on("filter:changed",c);return()=>{u.removeEventListener("htmx:configRequest",t),u.removeEventListener("htmx:beforeRequest",n),u.removeEventListener("htmx:beforeSwap",l),u.removeEventListener("htmx:responseError",o),u.removeEventListener("htmx:sendError",o),s(),p(),w(),A()}}}),$e("packages/modules/htmx/index.js",function(e,W){"use strict";Object.defineProperty(e,"attach",{enumerable:!0,get:function(){return s}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return p}});const Z=W("packages/core/src/internal/util.js"),$=Z.isFunction,B=Z.warnOnce,D=W("packages/dom/src/createGrid.js"),K=D.gridElementsWithin,Q=W("packages/dom/src/autoinit.js"),G=Q.autoInit,H=W("packages/modules/htmx/controller.js"),_=H.destroyWithin,z=H.initWithin,v=W("packages/modules/htmx/history.js"),S=v.saveStateWithin,g=v.restoreStateWithin,u=v.restoreSwappedGrids,f=W("packages/modules/htmx/rebind.js"),a=f.rebindViewersWithin,r=W("packages/modules/htmx/calendar.js"),t=r.autoInitCalendar;Object.defineProperty(e,"createGrid",{enumerable:!0,get:function(){return D.createGrid}}),Object.defineProperty(e,"gridElementsWithin",{enumerable:!0,get:function(){return D.gridElementsWithin}});const n=W("packages/dom/src/hydrate.js");Object.defineProperty(e,"readTable",{enumerable:!0,get:function(){return n.readTable}}),Object.defineProperty(e,"hydrateTable",{enumerable:!0,get:function(){return n.hydrateTable}}),Object.defineProperty(e,"autoInit",{enumerable:!0,get:function(){return Q.autoInit}});const o=W("packages/core/src/model/state.js");Object.defineProperty(e,"serialiseState",{enumerable:!0,get:function(){return o.serialiseState}}),Object.defineProperty(e,"restoreState",{enumerable:!0,get:function(){return o.restoreState}});const l=W("packages/core/src/index.js");Object.defineProperty(e,"createHeadlessGrid",{enumerable:!0,get:function(){return l.createHeadlessGrid}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return l.version}}),Object.defineProperty(e,"getVersion",{enumerable:!0,get:function(){return l.getVersion}}),Object.defineProperty(e,"Grid",{enumerable:!0,get:function(){return l.Grid}}),Object.defineProperty(e,"EventBus",{enumerable:!0,get:function(){return l.EventBus}}),Object.defineProperty(e,"Registry",{enumerable:!0,get:function(){return l.Registry}}),Object.defineProperty(e,"sharedRegistry",{enumerable:!0,get:function(){return l.sharedRegistry}}),Object.defineProperty(e,"registerModules",{enumerable:!0,get:function(){return l.registerModules}}),Object.defineProperty(e,"parseLicence",{enumerable:!0,get:function(){return l.parseLicence}}),Object.defineProperty(e,"verifyLicence",{enumerable:!0,get:function(){return l.verifyLicence}}),Object.defineProperty(e,"licenceInfo",{enumerable:!0,get:function(){return l.licenceInfo}}),Object.defineProperty(e,"watermark",{enumerable:!0,get:function(){return l.watermark}}),Object.defineProperty(e,"setLicence",{enumerable:!0,get:function(){return l.setLicence}}),Object.defineProperty(e,"licenceState",{enumerable:!0,get:function(){return l.licenceState}}),Object.defineProperty(e,"isLocalHost",{enumerable:!0,get:function(){return l.isLocalHost}}),Object.defineProperty(e,"matchesDomain",{enumerable:!0,get:function(){return l.matchesDomain}}),Object.defineProperty(e,"LicenceHolder",{enumerable:!0,get:function(){return l.LicenceHolder}}),Object.defineProperty(e,"ColumnModel",{enumerable:!0,get:function(){return l.ColumnModel}}),Object.defineProperty(e,"buildGraph",{enumerable:!0,get:function(){return l.buildGraph}}),Object.defineProperty(e,"Lookup",{enumerable:!0,get:function(){return l.Lookup}}),Object.defineProperty(e,"ValuePipeline",{enumerable:!0,get:function(){return l.ValuePipeline}}),Object.defineProperty(e,"compileFormat",{enumerable:!0,get:function(){return l.compileFormat}}),Object.defineProperty(e,"compileMask",{enumerable:!0,get:function(){return l.compileMask}}),Object.defineProperty(e,"specToOoxml",{enumerable:!0,get:function(){return l.specToOoxml}}),Object.defineProperty(e,"EXTENDED_TYPES",{enumerable:!0,get:function(){return l.EXTENDED_TYPES}}),Object.defineProperty(e,"createRadixType",{enumerable:!0,get:function(){return l.createRadixType}}),Object.defineProperty(e,"RADIX_PRESETS",{enumerable:!0,get:function(){return l.RADIX_PRESETS}}),Object.defineProperty(e,"parseRadix",{enumerable:!0,get:function(){return l.parseRadix}}),Object.defineProperty(e,"formatRadix",{enumerable:!0,get:function(){return l.formatRadix}}),Object.defineProperty(e,"createUnitType",{enumerable:!0,get:function(){return l.createUnitType}}),Object.defineProperty(e,"registerUnitSystem",{enumerable:!0,get:function(){return l.registerUnitSystem}}),Object.defineProperty(e,"defineUnit",{enumerable:!0,get:function(){return l.defineUnit}}),Object.defineProperty(e,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return l.UNIT_SYSTEMS}}),Object.defineProperty(e,"parseUnit",{enumerable:!0,get:function(){return l.parseUnit}}),Object.defineProperty(e,"formatUnit",{enumerable:!0,get:function(){return l.formatUnit}}),Object.defineProperty(e,"createCurrencyType",{enumerable:!0,get:function(){return l.createCurrencyType}}),Object.defineProperty(e,"parseMoney",{enumerable:!0,get:function(){return l.parseMoney}}),Object.defineProperty(e,"formatMoney",{enumerable:!0,get:function(){return l.formatMoney}}),Object.defineProperty(e,"convertMoney",{enumerable:!0,get:function(){return l.convertMoney}}),Object.defineProperty(e,"rateFunction",{enumerable:!0,get:function(){return l.rateFunction}}),Object.defineProperty(e,"MISSING_RATE",{enumerable:!0,get:function(){return l.MISSING_RATE}}),Object.defineProperty(e,"Messages",{enumerable:!0,get:function(){return l.Messages}}),Object.defineProperty(e,"createMessages",{enumerable:!0,get:function(){return l.createMessages}}),Object.defineProperty(e,"auditCatalogue",{enumerable:!0,get:function(){return l.auditCatalogue}}),Object.defineProperty(e,"EN_GB",{enumerable:!0,get:function(){return l.EN_GB}}),Object.defineProperty(e,"MESSAGE_KEYS",{enumerable:!0,get:function(){return l.MESSAGE_KEYS}}),Object.defineProperty(e,"DEFAULT_LOCALE",{enumerable:!0,get:function(){return l.DEFAULT_LOCALE}}),Object.defineProperty(e,"formatList",{enumerable:!0,get:function(){return l.formatList}}),Object.defineProperty(e,"resolveLocale",{enumerable:!0,get:function(){return l.resolveLocale}}),Object.defineProperty(e,"LOCALES",{enumerable:!0,get:function(){return l.LOCALES}}),Object.defineProperty(e,"resolveCatalogue",{enumerable:!0,get:function(){return l.resolveCatalogue}}),Object.defineProperty(e,"EN_US",{enumerable:!0,get:function(){return l.EN_US}}),Object.defineProperty(e,"FR_FR",{enumerable:!0,get:function(){return l.FR_FR}}),Object.defineProperty(e,"FR_CA",{enumerable:!0,get:function(){return l.FR_CA}}),Object.defineProperty(e,"IT_IT",{enumerable:!0,get:function(){return l.IT_IT}}),Object.defineProperty(e,"ES_ES",{enumerable:!0,get:function(){return l.ES_ES}}),Object.defineProperty(e,"PT_BR",{enumerable:!0,get:function(){return l.PT_BR}}),Object.defineProperty(e,"DE_DE",{enumerable:!0,get:function(){return l.DE_DE}}),Object.defineProperty(e,"NL_NL",{enumerable:!0,get:function(){return l.NL_NL}}),Object.defineProperty(e,"SV_SE",{enumerable:!0,get:function(){return l.SV_SE}}),Object.defineProperty(e,"DA_DK",{enumerable:!0,get:function(){return l.DA_DK}}),Object.defineProperty(e,"NB_NO",{enumerable:!0,get:function(){return l.NB_NO}}),Object.defineProperty(e,"FI_FI",{enumerable:!0,get:function(){return l.FI_FI}}),Object.defineProperty(e,"PL_PL",{enumerable:!0,get:function(){return l.PL_PL}}),Object.defineProperty(e,"CS_CZ",{enumerable:!0,get:function(){return l.CS_CZ}}),Object.defineProperty(e,"HU_HU",{enumerable:!0,get:function(){return l.HU_HU}}),Object.defineProperty(e,"RO_RO",{enumerable:!0,get:function(){return l.RO_RO}}),Object.defineProperty(e,"UK_UA",{enumerable:!0,get:function(){return l.UK_UA}}),Object.defineProperty(e,"EL_GR",{enumerable:!0,get:function(){return l.EL_GR}}),Object.defineProperty(e,"JA_JP",{enumerable:!0,get:function(){return l.JA_JP}}),Object.defineProperty(e,"AR",{enumerable:!0,get:function(){return l.AR}}),Object.defineProperty(e,"AR_SA",{enumerable:!0,get:function(){return l.AR_SA}}),Object.defineProperty(e,"ColumnStore",{enumerable:!0,get:function(){return l.ColumnStore}}),Object.defineProperty(e,"Bitset",{enumerable:!0,get:function(){return l.Bitset}}),Object.defineProperty(e,"Dictionary",{enumerable:!0,get:function(){return l.Dictionary}}),Object.defineProperty(e,"MultiValue",{enumerable:!0,get:function(){return l.MultiValue}}),Object.defineProperty(e,"MaskPool",{enumerable:!0,get:function(){return l.MaskPool}}),Object.defineProperty(e,"sortColumn",{enumerable:!0,get:function(){return l.sortColumn}}),Object.defineProperty(e,"sortMulti",{enumerable:!0,get:function(){return l.sortMulti}}),Object.defineProperty(e,"evaluateFilters",{enumerable:!0,get:function(){return l.evaluateFilters}}),Object.defineProperty(e,"compact",{enumerable:!0,get:function(){return l.compact}}),Object.defineProperty(e,"testValue",{enumerable:!0,get:function(){return l.testValue}}),Object.defineProperty(e,"groupByColumns",{enumerable:!0,get:function(){return l.groupByColumns}}),Object.defineProperty(e,"total",{enumerable:!0,get:function(){return l.total}}),Object.defineProperty(e,"TOTAL_FNS",{enumerable:!0,get:function(){return l.TOTAL_FNS}}),Object.defineProperty(e,"pivot",{enumerable:!0,get:function(){return l.pivot}}),Object.defineProperty(e,"Window",{enumerable:!0,get:function(){return l.Window}}),Object.defineProperty(e,"openWindow",{enumerable:!0,get:function(){return l.openWindow}}),Object.defineProperty(e,"WINDOW_KINDS",{enumerable:!0,get:function(){return l.WINDOW_KINDS}}),Object.defineProperty(e,"evaluateFormula",{enumerable:!0,get:function(){return l.evaluateFormula}}),Object.defineProperty(e,"parseFormula",{enumerable:!0,get:function(){return l.parseFormula}}),Object.defineProperty(e,"referencesOf",{enumerable:!0,get:function(){return l.referencesOf}}),Object.defineProperty(e,"looksLikeFormula",{enumerable:!0,get:function(){return l.looksLikeFormula}}),Object.defineProperty(e,"FormulaError",{enumerable:!0,get:function(){return l.FormulaError}}),Object.defineProperty(e,"FUNCTIONS",{enumerable:!0,get:function(){return l.FUNCTIONS}}),Object.defineProperty(e,"compileRules",{enumerable:!0,get:function(){return l.compileRules}}),Object.defineProperty(e,"ingest",{enumerable:!0,get:function(){return l.ingest}}),Object.defineProperty(e,"ingestSync",{enumerable:!0,get:function(){return l.ingestSync}}),Object.defineProperty(e,"createSource",{enumerable:!0,get:function(){return l.createSource}}),Object.defineProperty(e,"createMemorySource",{enumerable:!0,get:function(){return l.createMemorySource}}),Object.defineProperty(e,"createPagedSource",{enumerable:!0,get:function(){return l.createPagedSource}}),Object.defineProperty(e,"createRemoteSource",{enumerable:!0,get:function(){return l.createRemoteSource}}),Object.defineProperty(e,"createStreamSource",{enumerable:!0,get:function(){return l.createStreamSource}}),Object.defineProperty(e,"PROTOCOL",{enumerable:!0,get:function(){return l.PROTOCOL}}),Object.defineProperty(e,"createPushdownSource",{enumerable:!0,get:function(){return l.createPushdownSource}}),Object.defineProperty(e,"planQuery",{enumerable:!0,get:function(){return l.planQuery}}),Object.defineProperty(e,"splitFilters",{enumerable:!0,get:function(){return l.splitFilters}}),Object.defineProperty(e,"applyResidual",{enumerable:!0,get:function(){return l.applyResidual}}),Object.defineProperty(e,"capabilitiesOf",{enumerable:!0,get:function(){return l.capabilitiesOf}}),Object.defineProperty(e,"resolveMutate",{enumerable:!0,get:function(){return l.resolveMutate}}),Object.defineProperty(e,"NO_CAPABILITIES",{enumerable:!0,get:function(){return l.NO_CAPABILITIES}}),Object.defineProperty(e,"odataAdapter",{enumerable:!0,get:function(){return l.odataAdapter}}),Object.defineProperty(e,"filtersToOData",{enumerable:!0,get:function(){return l.filtersToOData}}),Object.defineProperty(e,"conditionToOData",{enumerable:!0,get:function(){return l.conditionToOData}}),Object.defineProperty(e,"restAdapter",{enumerable:!0,get:function(){return l.restAdapter}}),Object.defineProperty(e,"DEFAULT_PARAMS",{enumerable:!0,get:function(){return l.DEFAULT_PARAMS}}),Object.defineProperty(e,"dfqlAdapter",{enumerable:!0,get:function(){return l.dfqlAdapter}}),Object.defineProperty(e,"duckdbAdapter",{enumerable:!0,get:function(){return l.duckdbAdapter}}),Object.defineProperty(e,"filtersToSql",{enumerable:!0,get:function(){return l.filtersToSql}}),Object.defineProperty(e,"RowModel",{enumerable:!0,get:function(){return l.RowModel}}),Object.defineProperty(e,"createRowKey",{enumerable:!0,get:function(){return l.createRowKey}}),Object.defineProperty(e,"SelectionModel",{enumerable:!0,get:function(){return l.SelectionModel}}),Object.defineProperty(e,"RangeModel",{enumerable:!0,get:function(){return l.RangeModel}}),Object.defineProperty(e,"EditModel",{enumerable:!0,get:function(){return l.EditModel}}),Object.defineProperty(e,"ChangeModel",{enumerable:!0,get:function(){return l.ChangeModel}}),Object.defineProperty(e,"StateModel",{enumerable:!0,get:function(){return l.StateModel}}),Object.defineProperty(e,"STATE_VERSION",{enumerable:!0,get:function(){return l.STATE_VERSION}}),Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return l.VERSION}});const c=W("packages/dom/src/stat.js");Object.defineProperty(e,"createStat",{enumerable:!0,get:function(){return c.createStat}}),Object.defineProperty(e,"deltaOf",{enumerable:!0,get:function(){return c.deltaOf}}),Object.defineProperty(e,"toneOf",{enumerable:!0,get:function(){return c.toneOf}});const i=W("packages/core/src/registry/licence.js");Object.defineProperty(e,"setLicense",{enumerable:!0,get:function(){return i.setLicence}}),Object.defineProperty(e,"licenseInfo",{enumerable:!0,get:function(){return i.licenceInfo}}),Object.defineProperty(e,"licenseState",{enumerable:!0,get:function(){return i.licenceState}}),Object.defineProperty(e,"destroyWithin",{enumerable:!0,get:function(){return H.destroyWithin}}),Object.defineProperty(e,"initWithin",{enumerable:!0,get:function(){return H.initWithin}}),Object.defineProperty(e,"saveStateWithin",{enumerable:!0,get:function(){return v.saveStateWithin}}),Object.defineProperty(e,"restoreStateWithin",{enumerable:!0,get:function(){return v.restoreStateWithin}}),Object.defineProperty(e,"rebindViewersWithin",{enumerable:!0,get:function(){return f.rebindViewersWithin}}),Object.defineProperty(e,"autoInitCalendar",{enumerable:!0,get:function(){return r.autoInitCalendar}}),Object.defineProperty(e,"CALENDAR_ATTR",{enumerable:!0,get:function(){return r.CALENDAR_ATTR}});const m=W("packages/modules/htmx/oob.js");Object.defineProperty(e,"driveOobUpdates",{enumerable:!0,get:function(){return m.driveOobUpdates}});const d=W("packages/modules/htmx/servermode.js");Object.defineProperty(e,"driveServerMode",{enumerable:!0,get:function(){return d.driveServerMode}}),Object.defineProperty(e,"driveInfiniteScroll",{enumerable:!0,get:function(){return d.driveInfiniteScroll}}),Object.defineProperty(e,"QUERY_CHANGED_EVENT",{enumerable:!0,get:function(){return d.QUERY_CHANGED_EVENT}}),Object.defineProperty(e,"SCROLL_NEAR_END_EVENT",{enumerable:!0,get:function(){return d.SCROLL_NEAR_END_EVENT}});const h=W("packages/modules/htmx/rowmodel.js");Object.defineProperty(e,"queryParams",{enumerable:!0,get:function(){return h.queryParams}}),Object.defineProperty(e,"rowsFromFragment",{enumerable:!0,get:function(){return h.rowsFromFragment}}),Object.defineProperty(e,"rowsFromJson",{enumerable:!0,get:function(){return h.rowsFromJson}}),Object.defineProperty(e,"ingestResponse",{enumerable:!0,get:function(){return h.ingestResponse}}),Object.defineProperty(e,"warnIfLargeHtmlPayload",{enumerable:!0,get:function(){return h.warnIfLargeHtmlPayload}}),Object.defineProperty(e,"HTML_ROW_WARNING_THRESHOLD",{enumerable:!0,get:function(){return h.HTML_ROW_WARNING_THRESHOLD}});function s(w){const A=w||(typeof document<"u"?document:null);if(!A||!$(A.addEventListener))return()=>{};const P=F=>_(F.target,K),b=F=>{const C=F.detail&&F.detail.elt||F.target;z(C,G),z(C,t),a(A,K)},O=F=>{S(F.detail&&F.detail.historyElt||A,K),queueMicrotask(u)},x=F=>{F.detail&&F.detail.cacheMiss||g(A,G)},j=()=>{B("htmx:history-snapshot-too-large","htmx could not store this page's history snapshot (its sessionStorage quota was exceeded), so browser Back will re-fetch the page instead of restoring the grid; scope the hx-history-elt subtree smaller, or lower htmx's historyCacheSize.")};return A.addEventListener("htmx:beforeCleanupElement",P),A.addEventListener("htmx:load",b),A.addEventListener("htmx:beforeHistorySave",O),A.addEventListener("htmx:historyRestore",x),A.addEventListener("htmx:historyCacheError",j),()=>{A.removeEventListener("htmx:beforeCleanupElement",P),A.removeEventListener("htmx:load",b),A.removeEventListener("htmx:beforeHistorySave",O),A.removeEventListener("htmx:historyRestore",x),A.removeEventListener("htmx:historyCacheError",j)}}s();const p=s});try{Rn("packages/worker/src/inline.js").setWorkerSource('(function(Ot){"use strict";var ct=Object.create(null),lt=Object.create(null);function Ce(o,me){ct[o]=me}function at(o){var me=lt[o];if(me)return me;var ae=Object.create(null);lt[o]=ae;var he=ct[o];if(!he)throw new Error("[lattice] missing module: "+o);return he(ae,at),ae}Ce("packages/core/src/internal/util.js",function(o,me){"use strict";Object.defineProperty(o,"VERSION",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"reportedWarnings",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"warnOnce",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"infoOnce",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"resetWarnings",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"fail",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"invariant",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"DEV",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"isObject",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"isFunction",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"isNil",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"isBlank",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"isCtor",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"pathGetter",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"pathSetter",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"getPath",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"setPath",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"humanise",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"escapeHtml",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"titleCase",{enumerable:!0,get:function(){return g}}),Object.defineProperty(o,"expand",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"toArray",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"merge",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"mergeRow",{enumerable:!0,get:function(){return v}}),Object.defineProperty(o,"Lru",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"collator",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"defaultCompare",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"now",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"nextFrame",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"cancelFrame",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"frameBatched",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(o,"settleDebounce",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"whenIdle",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(o,"uid",{enumerable:!0,get:function(){return Se}});const ae="1.89.1";async function he(){return ae}const W="1.89.1",U=new Set,_=2e3;function Z(D){if(U.add(D),U.size>_){const x=U.values().next().value;x!==void 0&&U.delete(x)}}const E=[],z=500;function re(D,x,fe){E.push({key:D,level:x,message:fe.map(p=>typeof p=="string"?p:Y(p)).join(" "),at:Date.now()}),E.length>z&&E.shift()}function Y(D){if(D instanceof Error)return D.message;try{return JSON.stringify(D)}catch{return String(D)}}function se(){return E.map(D=>({...D}))}function te(D){if(D.length===0||typeof D[0]!="string")return D;const x=D[0].replace(/^\\[lattice\\]\\s*/,"");return x===D[0]?D:[x,...D.slice(1)]}function H(D,...x){if(U.has(D))return;Z(D);const fe=te(x);re(D,"warn",fe),console.warn("[lattice]",...fe)}function T(D,...x){if(U.has(D))return;Z(D);const fe=te(x);re(D,"info",fe),console.info("[lattice]",...fe)}function V(){U.clear(),E.length=0}function ne(D,x){const fe=new Error(`[lattice] ${D}`);throw x!==void 0&&(fe.cause=x),fe}function R(D,x){D||ne(x)}const j=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})();function i(D){return D!==null&&typeof D=="object"&&!Array.isArray(D)}function a(D){return typeof D=="function"}function s(D){return D==null}function h(D){return D==null||D===""}function u(D){return typeof D!="function"?!1:/^class[\\s{]/.test(Function.prototype.toString.call(D))?!0:!!(D.prototype&&Object.getOwnPropertyNames(D.prototype).length>1)}const t=new Map;function l(D){let x=t.get(D);if(x)return x;if(!D.includes("."))x=fe=>fe?.[D];else{const fe=D.split("."),p=fe.length;x=Q=>{let X=Q;for(let ce=0;ce<p;ce++){if(X==null)return;X=X[fe[ce]]}return X}}return t.set(D,x),x}const m=new Map;function e(D){let x=m.get(D);if(x)return x;if(!D.includes("."))x=(fe,p)=>{fe!=null&&(fe[D]=p)};else{const fe=D.split("."),p=fe.length-1;x=(Q,X)=>{let ce=Q;for(let le=0;le<p;le++){if(ce==null)return;const ge=fe[le];ce[ge]==null&&(ce[ge]={}),ce=ce[ge]}ce!=null&&(ce[fe[p]]=X)}}return m.set(D,x),x}function d(D,x){return l(x)(D)}function f(D,x,fe){e(x)(D,fe)}function r(D){return D?(D.includes(".")?D.slice(D.lastIndexOf(".")+1):D).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(/^./,fe=>fe.toUpperCase()):""}const n={"&":"&","<":"<",">":">",\'"\':""","\'":"'"};function c(D){const x=D==null?"":String(D);return/[&<>"\']/.test(x)?x.replace(/[&<>"\']/g,fe=>n[fe]):x}function g(D){return String(D).replace(/\\w\\S*/g,x=>x[0].toUpperCase()+x.slice(1).toLowerCase())}function A(D,x,fe){if(D!==void 0)return D===!0?{enabled:!0,...fe}:D===!1?{enabled:!1}:i(D)?D:{[x]:D,enabled:!0}}function P(D){return D==null?[]:Array.isArray(D)?D:[D]}const q=Object.freeze(new Set(["__proto__","constructor","prototype"]));function L(D,x){if(!i(D))return i(x)?{...x}:x;if(!i(x))return x===void 0?D:x;const fe={...D};for(const p of Object.keys(x)){if(q.has(p))continue;const Q=x[p];Q!==void 0&&(fe[p]=i(Q)&&i(fe[p])?L(fe[p],Q):Q)}return fe}function v(D,x){if(!i(D)||!i(x)||D===x)return x;const fe=Object.create(Object.getPrototypeOf(D));return Object.assign(fe,D,x),fe}class G{#t;#e=new Map;#n;constructor(x=256,fe=null){this.#t=x,this.#n=fe}get size(){return this.#e.size}get max(){return this.#t}set max(x){this.#t=x,this.#r()}has(x){return this.#e.has(x)}get(x){const fe=this.#e;if(!fe.has(x))return;const p=fe.get(x);return fe.delete(x),fe.set(x,p),p}peek(x){return this.#e.get(x)}set(x,fe){const p=this.#e;return p.has(x)&&p.delete(x),p.set(x,fe),this.#r(),fe}delete(x){const fe=this.#e.get(x);return this.#e.delete(x)&&this.#n&&this.#n(fe,x),fe}clear(){if(this.#n)for(const[x,fe]of this.#e)this.#n(fe,x);this.#e.clear()}keys(){return this.#e.keys()}values(){return this.#e.values()}#r(){const x=this.#e;for(;x.size>this.#t;){const fe=x.keys().next().value,p=x.get(fe);x.delete(fe),this.#n&&this.#n(p,fe)}}}const S=new Map;function N(D,x){const fe=`${D||""}|${x?JSON.stringify(x):""}`;let p=S.get(fe);return p||(p=new Intl.Collator(D||void 0,{numeric:!0,sensitivity:"variant",...x}),S.set(fe,p)),p}function I(D,x){if(D===x)return 0;if(D==null)return 1;if(x==null)return-1;if(typeof D=="number"&&typeof x=="number")return Number.isNaN(D)?Number.isNaN(x)?0:1:Number.isNaN(x)||D<x?-1:D>x?1:0;const fe=String(D),p=String(x);return fe<p?-1:fe>p?1:0}function K(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const B=typeof requestAnimationFrame=="function";function ee(D){return B?requestAnimationFrame(D):setTimeout(()=>D(K()),16)}function J(D){D!=null&&(B?cancelAnimationFrame(D):clearTimeout(D))}function ue(D){let x=null,fe=null;const p=()=>{x=null;const X=fe;fe=null,D(...X||[])},Q=(...X)=>{fe=X,x===null&&(x=ee(p))};return Q.cancel=()=>{J(x),x=null,fe=null},Q.flush=()=>{x!==null&&(J(x),p())},Q}function de(D,x){let fe=null,p=null;const Q=()=>{if(fe=null,p===null)return;const le=p;p=null,D(...le),X()},X=()=>{fe=setTimeout(Q,x),typeof fe?.unref=="function"&&fe.unref()},ce=(...le)=>{fe===null?(D(...le),X()):(p=le,clearTimeout(fe),X())};return ce.flush=()=>{if(fe!==null&&clearTimeout(fe),fe=null,p===null)return;const le=p;p=null,D(...le)},ce.cancel=()=>{fe!==null&&clearTimeout(fe),fe=null,p=null},ce.pending=()=>fe!==null||p!==null,ce}function Oe(D,x=50){return typeof requestIdleCallback=="function"?requestIdleCallback(D,{timeout:x}):setTimeout(()=>D({timeRemaining:()=>0,didTimeout:!0}),1)}let Ae=0;function Se(D="l"){return`${D}${(++Ae).toString(36)}`}}),Ce("packages/worker/src/transport.js",function(o,me){"use strict";Object.defineProperty(o,"PROTOCOL",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"OPS",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"CONTROL",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"ERRORS",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"packHandle",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"packHandles",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"TransportedDictionary",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"unpackHandle",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"unpackHandles",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"createMaskPool",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"isTransferable",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"collectTransfers",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isPortable",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"filterColumnIds",{enumerable:!0,get:function(){return i}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.isFunction,U=1,_=Object.freeze({SORT_COLUMN:"sortColumn",SORT_MULTI:"sortMulti",EVALUATE_FILTERS:"evaluateFilters",COMPACT:"compact",GROUP_BY_COLUMNS:"groupByColumns",TOTAL:"total",PIVOT:"pivot",FACET:"facet",COLUMNIZE:"columnize",COLLATE_STRING_RANKS:"collateStringRanks"}),Z=Object.freeze({READY:"ready",CANCEL:"cancel",PING:"ping"}),E=Object.freeze({NO_COMPUTE:"E_NO_COMPUTE",NO_KERNEL:"E_NO_KERNEL",ABORTED:"E_ABORTED",KERNEL:"E_KERNEL",PROTOCOL:"E_PROTOCOL"});function z(a){if(a==null)return null;const s=a.presence;return{id:a.id,kind:a.kind,nullable:!!a.nullable,values:a.values??null,presence:s?s.words??s:null,presenceBits:s?s.size??(s.words??s).length*8:0,dict:a.dict?re(a.dict):null,offsets:a.offsets??null,version:a.version??0}}function re(a){return Array.isArray(a)?a:W(a.values)?a.values():[]}function Y(a){const s=new Array(a.length);for(let h=0;h<a.length;h++)s[h]=z(a[h]);return s}class se{#t;#e;constructor(s,h){this.#t=s,this.#e=h}get words(){return this.#t}get size(){return this.#e}get(s){return(this.#t[s>>>3]&1<<(s&7))!==0}count(){const s=this.#t;let h=0;for(let u=0;u<s.length;u++){let t=s[u];for(;t;)t&=t-1,h++}return h}}class te{#t;#e=null;#n=0;#r=new Map;constructor(s){this.#t=s||[]}get size(){return this.#t.length}get version(){return this.#n}codeOf(s){if(this.#e===null){this.#e=new Map;for(let t=0;t<this.#t.length;t++)this.#e.set(this.#t[t],t)}const h=this.#e.get(s);if(h!==void 0)return h;const u=this.#t.length;return this.#t.push(s),this.#e.set(s,u),this.#n++,u}valueOf(s){return this.#t[s]}values(){return this.#t}ranks(s){const h=s||"",u=this.#r.get(h);if(u&&u.version===this.#n)return u.ranks;const t=this.#t.length,l=new Uint32Array(t);for(let r=0;r<t;r++)l[r]=r;const m=he(s).compare,e=this.#t,d=Array.from(l).sort((r,n)=>{const c=e[r],g=e[n];return c===g?0:c==null?1:g==null?-1:m(String(c),String(g))}),f=new Uint32Array(t);for(let r=0;r<d.length;r++)f[d[r]]=r;return this.#r.set(h,{version:this.#n,ranks:f}),f}}function H(a){if(a==null)return null;const s=a.presence?new se(a.presence,a.presenceBits||a.presence.length*8):null,h=a.dict?new te(a.dict):null,u=a.values,t=a.offsets??null,l=a.kind,m=e=>{if(s&&!s.get(e))return null;switch(l){case"dictionary":return h?h.valueOf(u[e]):u[e];case"bitset":return(u[e>>>3]&1<<(e&7))!==0;case"multi":{if(!t)return null;const d=t[e],f=t[e+1],r=new Array(f-d);for(let n=d;n<f;n++)r[n-d]=h?h.valueOf(u[n]):u[n];return r}default:return u[e]}};return{id:a.id,kind:l,nullable:a.nullable,values:u,presence:s,dict:h,offsets:t,get:m,version:a.version}}function T(a){const s=new Array(a.length);for(let h=0;h<a.length;h++)s[h]=H(a[h]);return s}function V(){const a=[],s=[];return{mask(h){for(let u=0;u<a.length;u++)if(a[u].length>=h){const t=a.splice(u,1)[0].subarray(0,h);return t.fill(0),t}return new Uint8Array(h)},indices(h){for(let u=0;u<s.length;u++)if(s[u].length>=h)return s.splice(u,1)[0].subarray(0,h);return new Uint32Array(h)},release(h){h&&(h instanceof Uint8Array?a.push(h):h instanceof Uint32Array&&s.push(h))},clear(){a.length=0,s.length=0}}}function ne(a){if(!ArrayBuffer.isView(a))return!1;const s=a.buffer;return s?typeof SharedArrayBuffer>"u"||!(s instanceof SharedArrayBuffer):!1}function R(a,s=[]){const h=u=>{if(!ne(u))return;const t=u.buffer;s.includes(t)||s.push(t)};if(a==null)return s;if(ArrayBuffer.isView(a))return h(a),s;if(Array.isArray(a)){for(const u of a)h(u);return s}if(typeof a=="object")for(const u of Object.keys(a)){const t=a[u];if(Array.isArray(t))for(const l of t)h(l);else h(t)}return s}function j(a,s=0){if(a==null)return!0;const h=typeof a;if(h==="function"||h==="symbol")return!1;if(h!=="object"||s>4||ArrayBuffer.isView(a)||a instanceof ArrayBuffer||a instanceof Date)return!0;if(Array.isArray(a)){for(const u of a)if(!j(u,s+1))return!1;return!0}for(const u of Object.keys(a))if(!j(a[u],s+1))return!1;return!0}function i(a,s=new Set){if(!a||typeof a!="object")return s;const h=a;typeof h.col=="string"&&s.add(h.col);const u=h.conditions;if(Array.isArray(u))for(const t of u)i(t,s);return s}}),Ce("packages/core/src/store/bitset.js",function(o,me){"use strict";Object.defineProperty(o,"Bitset",{enumerable:!0,get:function(){return he}});const ae=8;class he{static#t=new Uint8Array(256);static{for(let U=1;U<256;U++)he.#t[U]=he.#t[U>>1]+(U&1)}#e;#n;constructor(U=0){const _=Math.max(0,U|0);this.#n=_,this.#e=new Uint8Array(Math.ceil(_/ae))}get size(){return this.#n}get words(){return this.#e}get bytes(){return this.#e?this.#e.byteLength:0}get(U){return U<0||U>=this.#n?0:this.#e[U>>3]>>(U&7)&1}set(U){return U>=0&&U<this.#n&&(this.#e[U>>3]|=1<<(U&7)),this}clear(U){return U>=0&&U<this.#n&&(this.#e[U>>3]&=~(1<<(U&7))),this}assign(U,_){return _?this.set(U):this.clear(U)}fill(U=!1){return this.#e.fill(U?255:0),U&&this.#r(),this}grow(U){const _=Math.max(0,U|0);if(_<=this.#n)return this;const Z=Math.ceil(_/ae);if(Z>this.#e.length){const E=new Uint8Array(Z);E.set(this.#e),this.#e=E}return this.#n=_,this}count(){const U=this.#e,_=he.#t;let Z=0;for(let E=0;E<U.length;E++)Z+=_[U[E]];return Z}and(U){const _=U instanceof he?U.words:U,Z=this.#e,E=Math.min(Z.length,_.length);for(let z=0;z<E;z++)Z[z]&=_[z];for(let z=E;z<Z.length;z++)Z[z]=0;return this}or(U){const _=U instanceof he?U.words:U,Z=this.#e,E=Math.min(Z.length,_.length);for(let z=0;z<E;z++)Z[z]|=_[z];return this}not(){const U=this.#e;for(let _=0;_<U.length;_++)U[_]=~U[_]&255;return this.#r(),this}clone(){const U=new he(this.#n);return U.words.set(this.#e.subarray(0,U.words.length)),U}release(){this.#e=new Uint8Array(0),this.#n=0}#r(){const U=this.#n&7;if(U===0)return;const _=this.#n>>3;_<this.#e.length&&(this.#e[_]&=(1<<U)-1)}static from(U){const _=Array.isArray(U)?U:Array.from(U),Z=new he(_.length);for(let E=0;E<_.length;E++)_[E]&&Z.set(E);return Z}}}),Ce("packages/core/src/store/dictionary.js",function(o,me){"use strict";Object.defineProperty(o,"Dictionary",{enumerable:!0,get:function(){return U}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.defaultCompare;class U{#t;#e=new Map;#n=0;#r=null;#i=-1;#s="\\0";constructor(Z=[]){this.#t=[];for(let E=0;E<Z.length;E++){const z=Z[E];this.#e.has(z)||(this.#e.set(z,this.#t.length),this.#t.push(z))}}get size(){return this.#t.length}get version(){return this.#n}get bytes(){let Z=this.#t.length*8;for(let E=0;E<this.#t.length;E++){const z=this.#t[E];typeof z=="string"&&(Z+=z.length*2),Z+=16}return Z}codeOf(Z){const E=this.#e.get(Z);if(E!==void 0)return E;const z=this.#t.length;return this.#t.push(Z),this.#e.set(Z,z),this.#n++,z}lookup(Z){const E=this.#e.get(Z);return E===void 0?-1:E}has(Z){return this.#e.has(Z)}valueOf(Z){return this.#t[Z]}values(){return this.#t}ranks(Z){const E=Z||"";if(this.#r&&this.#i===this.#n&&this.#s===E)return this.#r;const z=this.#t.length,re=new Array(z);for(let H=0;H<z;H++)re[H]=H;const Y=he(Z).compare,se=this.#t;re.sort((H,T)=>this.#h(se[H],se[T],Y));const te=new Uint32Array(z);for(let H=0;H<z;H++)te[re[H]]=H;return this.#r=te,this.#i=this.#n,this.#s=E,te}#h(Z,E,z){return typeof Z=="string"&&typeof E=="string"?z(Z,E):W(Z,E)}}}),Ce("packages/core/src/store/multivalue.js",function(o,me){"use strict";Object.defineProperty(o,"MultiValue",{enumerable:!0,get:function(){return ae}});class ae{#t;#e;#n=0;#r=0;constructor(W={}){const U=Math.max(1,W.rows??16),_=Math.max(1,W.values??U);this.#t=new Int32Array(_),this.#e=new Uint32Array(U+1)}get values(){return this.#t}get offsets(){return this.#e}get rows(){return this.#n}get length(){return this.#r}get bytes(){return this.#t.byteLength+this.#e.byteLength}count(W){return W<0||W>=this.#n?0:this.#e[W+1]-this.#e[W]}at(W){return W<0||W>=this.#n?this.#t.subarray(0,0):this.#t.subarray(this.#e[W],this.#e[W+1])}has(W,U){if(W<0||W>=this.#n)return!1;const _=this.#t,Z=this.#e[W+1];for(let E=this.#e[W];E<Z;E++)if(_[E]===U)return!0;return!1}hasAny(W,U){for(let _=0;_<U.length;_++)if(this.has(W,U[_]))return!0;return!1}hasAll(W,U){for(let _=0;_<U.length;_++)if(!this.has(W,U[_]))return!1;return!0}hasNone(W,U){return!this.hasAny(W,U)}push(W){const U=this.#n,_=W.length;this.#i(U+1),this.#s(this.#r+_);const Z=this.#r;for(let E=0;E<_;E++)this.#t[Z+E]=W[E]|0;return this.#r+=_,this.#n=U+1,this.#e[U]=Z,this.#e[U+1]=this.#r,U}write(W,U){if(W===this.#n){this.push(U);return}if(W<0||W>this.#n)return;const _=this.#e[W],Z=this.#e[W+1],E=U.length;if(Z-_===E){for(let z=0;z<E;z++)this.#t[_+z]=U[z]|0;return}this.#h(W,U)}compact(W,U,_){const Z=this.#t,E=this.#e,z=this.#n,re=new Int32Array(Math.max(1,this.#r)),Y=new Uint32Array(U+1);let se=0;for(let te=0;te<z;te++){if(W[te]===_)continue;const H=E[te],T=E[te+1];Y[W[te]]=se;for(let V=H;V<T;V++)re[se++]=Z[V];Y[W[te]+1]=se}this.#t=re,this.#e=Y,this.#n=U,this.#r=se}release(){this.#t=new Int32Array(0),this.#e=new Uint32Array(1),this.#n=0,this.#r=0}#i(W){if(W+1<=this.#e.length)return;let U=this.#e.length-1;for(;U<W;)U=U*2||16;const _=new Uint32Array(U+1);_.set(this.#e),this.#e=_}#s(W){if(W<=this.#t.length)return;let U=this.#t.length;for(;U<W;)U=U*2||16;const _=new Int32Array(U);_.set(this.#t),this.#t=_}#h(W,U){const _=this.#t,Z=this.#e,E=this.#n,z=U.length-(Z[W+1]-Z[W]),re=new Int32Array(Math.max(1,this.#r+z)),Y=new Uint32Array(Z.length);let se=0;for(let te=0;te<E;te++){if(Y[te]=se,te===W)for(let H=0;H<U.length;H++)re[se++]=U[H]|0;else for(let H=Z[te];H<Z[te+1];H++)re[se++]=_[H];Y[te+1]=se}this.#t=re,this.#e=Y,this.#r=se}}}),Ce("packages/core/src/compute/handle.js",function(o,me){"use strict";Object.defineProperty(o,"identity",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"rowCount",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"bitReader",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"presenceReader",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"dictSize",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"dictValue",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"multiValue",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"valueReader",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"numericTotalOrder",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"valueComparator",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"dictRanks",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"isMissing",{enumerable:!0,get:function(){return j}});const ae=me("packages/core/src/internal/util.js"),he=ae.collator,W=ae.defaultCompare,U=ae.warnOnce;function _(i){const a=new Uint32Array(i);for(let s=0;s<i;s++)a[s]=s;return a}function Z(i,a){if(a&&typeof a.count=="number")return a.count;if(!i)return 0;if(typeof i.count=="number")return i.count;if(typeof i.length=="number")return i.length;const s=i.values;return i.kind==="multi"&&i.offsets?Math.max(0,i.offsets.length-1):s?i.kind==="bitset"?typeof s.size=="number"?s.size:i.presence&&typeof i.presence.size=="number"?i.presence.size:(U(`count:${i.id}`,`column "${i.id}" is bitset-backed with no declared row count; assuming ${s.length*8}`),s.length*8):s.length:i.presence&&typeof i.presence.size=="number"?i.presence.size:0}const E=new WeakMap;function z(i){const a=i.constructor;if(!a)return"unknown";const s=E.get(a);if(s)return s;let h="unknown";try{let u=null;typeof a.from=="function"?u=a.from([!1,!0]):(u=new a(8),u.set(1));const t=u&&u.words;t&&t.length&&(t[0]===2?h="lsb":t[0]===64&&(h="msb"))}catch{h="unknown"}return E.set(a,h),h}function re(i){if(!i)return()=>0;const a=i instanceof Uint8Array?i:i.words;if(a instanceof Uint8Array){const s=i instanceof Uint8Array?"lsb":z(i);if(s==="lsb")return h=>a[h>>>3]>>>(h&7)&1;if(s==="msb")return h=>a[h>>>3]>>>7-(h&7)&1}return typeof i.get=="function"?s=>i.get(s)?1:0:()=>0}function Y(i){return!i||!i.presence?null:re(i.presence)}function se(i){return i?typeof i.size=="number"?i.size:typeof i.values=="function"?i.values().length:0:0}function te(i,a){return i?typeof i.valueOf=="function"?i.valueOf(a):typeof i.values=="function"?i.values()[a]:null:null}function H(i,a){const s=i.offsets,h=i.values;if(!s||!h)return[];const u=s[a],t=s[a+1];if(!(t>u))return[];const l=i.dict,m=new Array(t-u);for(let e=u;e<t;e++)m[e-u]=l?te(l,h[e]):h[e];return m}function T(i){if(!i)return()=>{};const a=i.values,s=Y(i),h=i.kind;if(h==="dictionary"){const u=i.dict;return s?t=>s(t)?te(u,a[t]):null:t=>te(u,a[t])}if(h==="bitset"){const u=re(a);return s?t=>s(t)?u(t)===1:null:t=>u(t)===1}if(h==="multi")return s?u=>s(u)?H(i,u):null:u=>H(i,u);if(!a&&typeof i.get=="function"){const u=i.get.bind(i);return t=>{const l=u(t);return l===void 0?null:l}}return s?u=>{if(!s(u))return null;const t=a[u];return t===void 0?null:t}:u=>{const t=a[u];return t===void 0?null:t}}function V(i,a){if(i<a)return-1;if(i>a)return 1;if(i===a){const u=Object.is(i,-0),t=Object.is(a,-0);return u===t?0:u?-1:1}const s=Number.isNaN(i),h=Number.isNaN(a);return s&&h?0:s?1:-1}function ne(i){const a=he(i);return(s,h)=>{if(s===h)return 0;const u=typeof s,t=typeof h;if(u==="string"&&t==="string")return a.compare(s,h);if(u==="number"&&t==="number")return V(s,h);if(u==="boolean"&&t==="boolean")return s===h?0:s?1:-1;if(s instanceof Date||h instanceof Date){const l=s instanceof Date?s.getTime():Number(s),m=h instanceof Date?h.getTime():Number(h);return V(l,m)}return W(s,h)}}function R(i,a){if(i&&typeof i.ranks=="function")return i.ranks(a);const s=i&&typeof i.values=="function"?i.values():[],h=s.length,u=ne(a),t=new Array(h);for(let m=0;m<h;m++)t[m]=m;t.sort((m,e)=>u(s[m],s[e])||m-e);const l=new Uint32Array(h);for(let m=0;m<h;m++)l[t[m]]=m;return l}function j(i){return i==null||typeof i=="number"&&Number.isNaN(i)}}),Ce("packages/core/src/compute/sort.js",function(o,me){"use strict";Object.defineProperty(o,"radixSortFloat64",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"radixSortInt32",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"rankSortDictionary",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"mergeSortComparator",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"rankSortStrings",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"collateStringRanks",{enumerable:!0,get:function(){return n}}),Object.defineProperty(o,"sortColumn",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"sortMulti",{enumerable:!0,get:function(){return v}});const ae=me("packages/core/src/compute/handle.js"),he=ae.bitReader,W=ae.dictRanks,U=ae.dictSize,_=ae.identity,Z=ae.isMissing,E=ae.presenceReader,z=ae.rowCount,re=ae.valueComparator,Y=ae.valueReader,se=new Uint32Array(0),te=new ArrayBuffer(8),H=new Float64Array(te),T=new Uint32Array(te),V=(H[0]=-1,(T[1]&2147483648)!==0?1:0),ne=V===1?0:1;function R(S,N){H[0]=S;let I=T[V],K=T[ne];(I&2147483648)!==0?(I=~I>>>0,K=~K>>>0):I=(I^2147483648)>>>0,N[0]=K,N[1]=I}function j(S,N,I,K){if(K<2)return S;const B=new Uint32Array(256*8);for(let D=0;D<K;D++){const x=N[D],fe=I[D];B[x&255]++,B[256+(x>>>8&255)]++,B[512+(x>>>16&255)]++,B[768+(x>>>24&255)]++,B[1024+(fe&255)]++,B[1280+(fe>>>8&255)]++,B[1536+(fe>>>16&255)]++,B[1792+(fe>>>24&255)]++}let ee=S,J=N,ue=I,de=new Uint32Array(K),Oe=new Uint32Array(K),Ae=new Uint32Array(K);const Se=new Uint32Array(256);for(let D=0;D<8;D++){const x=D<<8,fe=(D&3)<<3,p=D>=4;let Q=!1;for(let le=0;le<256;le++)if(B[x+le]===K){Q=!0;break}if(Q)continue;let X=0;for(let le=0;le<256;le++)Se[le]=X,X+=B[x+le];for(let le=0;le<K;le++){const ge=J[le],Me=ue[le],be=(p?Me:ge)>>>fe&255,ye=Se[be]++;de[ye]=ee[le],Oe[ye]=ge,Ae[ye]=Me}let ce=ee;ee=de,de=ce,ce=J,J=Oe,Oe=ce,ce=ue,ue=Ae,Ae=ce}return ee}function i(S,N,I){if(I<2)return S;const K=new Uint32Array(256*4);for(let Oe=0;Oe<I;Oe++){const Ae=N[Oe];K[Ae&255]++,K[256+(Ae>>>8&255)]++,K[512+(Ae>>>16&255)]++,K[768+(Ae>>>24&255)]++}let B=S,ee=N,J=new Uint32Array(I),ue=new Uint32Array(I);const de=new Uint32Array(256);for(let Oe=0;Oe<4;Oe++){const Ae=Oe<<8,Se=Oe<<3;let D=!1;for(let p=0;p<256;p++)if(K[Ae+p]===I){D=!0;break}if(D)continue;let x=0;for(let p=0;p<256;p++)de[p]=x,x+=K[Ae+p];for(let p=0;p<I;p++){const Q=ee[p],X=de[Q>>>Se&255]++;J[X]=B[p],ue[X]=Q}let fe=B;B=J,J=fe,fe=ee,ee=ue,ue=fe}return B}function a(S,N,I,K){const B=new Uint32Array(K+1);for(let ue=0;ue<I;ue++)B[N[ue]]++;let ee=0;for(let ue=0;ue<=K;ue++){const de=B[ue];B[ue]=ee,ee+=de}const J=new Uint32Array(I);for(let ue=0;ue<I;ue++)J[B[N[ue]]++]=S[ue];return J}function s(S,N,I,K){return I<2?S:K<=65536||K<=I*2?a(S,N,I,K):i(S,N,I)}function h(S,N){return S.length===N&&S.byteOffset===0?S:Uint32Array.prototype.slice.call(S,0,N)}function u(S,N,I=!1){const K=N||_(S.length),B=K.length;if(B<2)return Uint32Array.from(K);const ee=new Uint32Array(B),J=new Uint32Array(B),ue=new Uint32Array(B),de=new Uint32Array(B),Oe=new Uint32Array(2);let Ae=0,Se=0;for(let fe=0;fe<B;fe++){const p=K[fe],Q=S[p];if(Number.isNaN(Q)){de[Se++]=p;continue}R(Q,Oe),I?(J[Ae]=~Oe[0]>>>0,ue[Ae]=~Oe[1]>>>0):(J[Ae]=Oe[0],ue[Ae]=Oe[1]),ee[Ae++]=p}const D=j(ee.subarray(0,Ae),J.subarray(0,Ae),ue.subarray(0,Ae),Ae);if(Se===0)return h(D,Ae);const x=new Uint32Array(B);return x.set(D.subarray(0,Ae),0),x.set(de.subarray(0,Se),Ae),x}function t(S,N,I=!1){const K=N||_(S.length),B=K.length;if(B<2)return Uint32Array.from(K);const ee=Uint32Array.from(K),J=new Uint32Array(B);for(let ue=0;ue<B;ue++){const de=(S[ee[ue]]^2147483648)>>>0;J[ue]=I?~de>>>0:de}return h(i(ee,J,B),B)}function l(S,N,I={}){const K=N||_(z(S,I)),B=K.length;if(B<2)return Uint32Array.from(K);const ee=W(S.dict,I.locale),J=S.values,ue=E(S),de=Math.max(U(S.dict),ee.length),Oe=de,Ae=Uint32Array.from(K),Se=new Uint32Array(B),D=!!I.descending;for(let x=0;x<B;x++){const fe=Ae[x];let p=ue&&ue(fe)===0?Oe:ee[J[fe]];p===void 0&&(p=Oe),Se[x]=D?Oe-p:p}return h(s(Ae,Se,B,de+1),B)}function m(S,N,I){const K=N.length;let B=Uint32Array.from(N);if(K<2)return B;let ee=new Uint32Array(K);for(let J=1;J<K;J<<=1){for(let de=0;de<K;de+=J<<1){const Oe=Math.min(de+J,K),Ae=Math.min(de+(J<<1),K);let Se=de,D=Oe,x=de;for(;Se<Oe&&D<Ae;)ee[x++]=I(S[B[Se]],S[B[D]])<=0?B[Se++]:B[D++];for(;Se<Oe;)ee[x++]=B[Se++];for(;D<Ae;)ee[x++]=B[D++]}const ue=B;B=ee,ee=ue}return B}function e(S,N,I){const K=he(S.values),B=N.length,ee=new Uint32Array(B),J=I?1:0;let ue=0;for(let de=0;de<B;de++)K(N[de])===J&&(ee[ue++]=N[de]);for(let de=0;de<B;de++)K(N[de])!==J&&(ee[ue++]=N[de]);return ee}function d(S,N){const I=S.values,K=S.kind;if((K==="object"||K===void 0)&&(Array.isArray(I)||ArrayBuffer.isView(I))&&!S.presence)return I;const ee=Y(S),J=new Array(z(S)||0);for(let ue=0;ue<N.length;ue++){const de=N[ue];J[de]=ee(de)}return J}function f(S,N){for(let I=0;I<N.length;I++)if(typeof S[N[I]]!="string")return!1;return!0}function r(S,N,I,K,B){const ee=S.length,J=Uint32Array.from(S);if(ee<2||K<1)return J;const ue=new Uint32Array(ee),de=K-1;for(let Oe=0;Oe<ee;Oe++){const Ae=I[N[Oe]];ue[Oe]=B?de-Ae:Ae}return h(s(J,ue,ee,K),ee)}function n(S,N,I){const K=re(I),B=new Array(N);for(let J=0;J<N;J++)B[J]=J;B.sort((J,ue)=>K(S[J],S[ue])||J-ue);const ee=new Uint32Array(N);for(let J=0;J<N;J++)ee[B[J]]=J;return ee}function c(S,N,I){const K=N.length,B=new Map,ee=[],J=new Uint32Array(K);for(let Oe=0;Oe<K;Oe++){const Ae=S[N[Oe]];let Se=B.get(Ae);Se===void 0&&(Se=ee.length,B.set(Ae,Se),ee.push(Ae)),J[Oe]=Se}const ue=ee.length,de=n(ee,ue,I.locale);return r(N,J,de,ue,!!I.descending)}function g(S,N,I){const K=d(S,N);if(N.length>=2&&f(K,N)){const J=S.stringRank;return J&&J.version===S.version&&J.usable(N,K,I.locale)?J.sort(N,I):c(K,N,I)}const B=re(I.locale),ee=I.descending?(J,ue)=>B(ue,J):B;return m(K,N,ee)}function A(S,N,I){const K=d(S,N),B=I.compare,J=!!I.descending?(ue,de)=>-B(ue,de,void 0,void 0,!0):(ue,de)=>B(ue,de,void 0,void 0,!1);return m(K,N,J)}function P(S,N){const I=N.length,K=E(S),B=S.values,ee=S.kind==="float64"&&!!B,J=S.kind==="object"||S.kind==="multi"||S.kind===void 0;if(!K&&!ee&&!J)return{present:N,absent:se};const ue=new Uint32Array(I),de=new Uint32Array(I);let Oe=0,Ae=0;if(K&&ee)for(let Se=0;Se<I;Se++){const D=N[Se];K(D)===1&&!Number.isNaN(B[D])?ue[Oe++]=D:de[Ae++]=D}else if(ee&&!K)for(let Se=0;Se<I;Se++){const D=N[Se];Number.isNaN(B[D])?de[Ae++]=D:ue[Oe++]=D}else if(K&&!J)for(let Se=0;Se<I;Se++){const D=N[Se];K(D)===1?ue[Oe++]=D:de[Ae++]=D}else{const Se=Y(S);for(let D=0;D<I;D++){const x=N[D];Z(Se(x))?de[Ae++]=x:ue[Oe++]=x}}return Ae===0?{present:N,absent:se}:{present:ue.subarray(0,Oe),absent:de.subarray(0,Ae)}}function q(S,N,I){if(N.length===0)return S;const K=new Uint32Array(S.length+N.length);return I?(K.set(N,0),K.set(S,N.length)):(K.set(S,0),K.set(N,S.length)),K}function L(S,N,I={}){const K=N||_(z(S,I));if(!S||K.length<2)return Uint32Array.from(K);const{present:B,absent:ee}=P(S,K);if(B.length===0)return Uint32Array.from(K);const J=!!I.descending;let ue;if(typeof I.compare=="function")ue=A(S,B,I);else switch(S.kind){case"float64":ue=u(S.values,B,J);break;case"int32":ue=t(S.values,B,J);break;case"dictionary":ue=l(S,B,I);break;case"bitset":ue=e(S,B,J);break;default:ue=g(S,B,I);break}return q(ue,ee,!!I.nullsFirst)}function v(S,N,I,K={}){const B=N||[],ee=B.length&&(B[0].handle||G(S,B[0].col))||S&&S[0];let J=I||_(z(ee,K));for(let ue=B.length-1;ue>=0;ue--){const de=B[ue],Oe=de.handle||G(S,de.col)||S&&S[ue];Oe&&(J=L(Oe,J,{descending:de.descending!==void 0?!!de.descending:de.dir==="desc",nullsFirst:!!de.nullsFirst,locale:de.locale!==void 0?de.locale:K.locale,compare:de.compare}))}return J instanceof Uint32Array?J:Uint32Array.from(J)}function G(S,N){if(!(!S||N===void 0)){for(let I=0;I<S.length;I++)if(S[I]&&S[I].id===N)return S[I]}}}),Ce("packages/core/src/store/stringrank.js",function(o,me){"use strict";Object.defineProperty(o,"DEFAULT_MAX_DISTINCT",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"StringRankIndex",{enumerable:!0,get:function(){return _}});const ae=me("packages/core/src/compute/sort.js"),he=ae.collateStringRanks,W=ae.rankSortStrings,U=1e5;class _{#t=[];#e=new Map;#n;#r=0;#i=0;#s=-1;#h;#u=!1;#o=null;#c=-1;#l="\\0";constructor(E=U){this.#h=E>0?E:U,this.#n=new Uint32Array(0)}get version(){return this.#s}set version(E){this.#s=E}get generation(){return this.#i}get size(){return this.#t.length}get capped(){return this.#u}get length(){return this.#r}get bytes(){let E=this.#n.byteLength;const z=this.#t;for(let re=0;re<z.length;re++)E+=z[re].length*2+24;return E}#a(E,z){const re=this.#e.get(E);if(re!==void 0)return re;if(this.#u)return-1;if(z&&this.#t.length>=this.#h)return this.#u=!0,-1;const Y=this.#t.length;return this.#t.push(E),this.#e.set(E,Y),this.#i++,Y}build(E,z){const re=z|0;this.#t=[],this.#e=new Map,this.#i=0,this.#u=!1,this.#o=null,this.#c=-1,this.#n=new Uint32Array(re);for(let Y=0;Y<re;Y++){const se=E[Y],te=typeof se=="string"?this.#a(se,!1):-1;this.#n[Y]=te<0?0:te}this.#r=re}append(E,z,re){const Y=(z|0)+(re|0);if(Y>this.#n.length){const se=new Uint32Array(Y);se.set(this.#n.subarray(0,this.#r)),this.#n=se}for(let se=z|0;se<Y;se++){const te=E[se],H=typeof te=="string"?this.#a(te,!0):-1;this.#n[se]=H<0?0:H}this.#r=Math.max(this.#r,Y)}ranks(E){const z=E||"";if(this.#o&&this.#c===this.#i&&this.#l===z)return this.#o;const re=he(this.#t,this.#t.length,E);return this.#o=re,this.#c=this.#i,this.#l=z,re}usable(E,z,re){if(this.#u||this.#t.length===0)return!1;const Y=this.#n,se=this.#t,te=this.#r;for(let H=0;H<E.length;H++){const T=E[H];if(T>=te||se[Y[T]]!==z[T])return!1}return!0}sort(E,z){const re=this.ranks(z.locale),Y=this.#t.length,se=E.length,te=new Uint32Array(se),H=this.#n;for(let T=0;T<se;T++)te[T]=H[E[T]];return W(E,te,re,Y,!!z.descending)}}}),Ce("packages/core/src/store/columnstore.js",function(o,me){"use strict";Object.defineProperty(o,"REMOVED",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"toFloat",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"ColumnHandle",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"ColumnStore",{enumerable:!0,get:function(){return l}});const ae=me("packages/core/src/internal/util.js"),he=ae.warnOnce,W=ae.isFunction,U=ae.pathGetter,Z=me("packages/core/src/store/bitset.js").Bitset,z=me("packages/core/src/store/dictionary.js").Dictionary,Y=me("packages/core/src/store/multivalue.js").MultiValue,te=me("packages/core/src/store/stringrank.js").StringRankIndex,H=4294967295,T=1024,V=5e3,ne=.2,R=new Set(["float64","int32","bitset","dictionary","object","multi"]);function j(m){return m==null}function i(m){if(typeof m=="number")return m;if(m instanceof Date)return m.getTime();if(typeof m=="boolean")return m?1:0;const e=Number(m);return Number.isNaN(e)&&typeof m=="string"?Date.parse(m):e}function a(m){const e=i(m);return Number.isFinite(e)?e|0:0}function s(m){return j(m)?[]:Array.isArray(m)?m:[m]}function h(m,e){switch(m.kind){case"float64":case"int32":return m.buf[e];case"bitset":return m.bits.get(e)===1;case"dictionary":return m.dict.valueOf(m.buf[e]);case"multi":{const d=m.mv.at(e),f=new Array(d.length);for(let r=0;r<d.length;r++)f[r]=m.dict.valueOf(d[r]);return f}default:return m.buf[e]}}function u(m,e){switch(m.kind){case"float64":case"int32":return m.values[e];case"bitset":return(m.values[e>>3]&1<<(e&7))!==0;case"dictionary":return(m.table||[])[m.values[e]];case"multi":{const d=m.offsets[e],f=m.offsets[e+1],r=m.table||[],n=new Array(f-d);for(let c=d;c<f;c++)n[c-d]=r[m.values[c]];return n}default:return m.values[e]}}class t{#t;#e;#n;#r;#i;#s;#h;#u=!1;#o=null;#c=null;#l=null;#a=null;#d=null;#w;#b;#k=-1;#m=null;#p=0;#f=0;#y=null;#O=null;#g=!1;constructor(e,d){this.#t=e.id;const f=R.has(e.kind)?e.kind:"object";e.kind&&!R.has(e.kind)&&he(`store.kind.${e.id}`,`column "${e.id}" declares unknown storage kind "${e.kind}"; falling back to object`),this.#n=f,this.#e=f,this.#r=e.nullable!==!1,this.#h=e.dictionary??null,this.#s=d,this.#i=W(e.read)?e.read:U(e.field||e.id),this.#w=e.stringRankIndex!=="off",this.#b=typeof e.stringRankMaxDistinct=="number"?e.stringRankMaxDistinct:0,this.#y=new Map}get id(){return this.#t}get kind(){return this.#u?this.#e:"object"}get target(){return this.#n}get nullable(){return this.#r}get values(){return this.#g?null:this.#u?this.#e==="bitset"?this.#c.words:this.#e==="multi"?this.#l.values:this.#o:this.#N().values}get presence(){return this.#g||!this.#r?null:this.#u?this.#m:this.#N().presence}get dict(){return this.#g||!this.#u?null:this.#e==="dictionary"||this.#e==="multi"?this.#a:null}get stringRank(){if(this.#g||!this.#w||this.kind!=="object")return null;const e=this.values,d=this.#s.physical();if(!e||d===0)return null;if(this.#d===null){if(typeof e[0]!="string")return null;const f=new te(this.#S());return f.build(e,d),f.version=this.#f,this.#d=f,this.#k=this.#f,f.capped?null:f}return this.#d.length<d&&this.#d.append(e,this.#d.length,d-this.#d.length),this.#d.version=this.#f,this.#k=this.#f,this.#d.capped?null:this.#d}#S(){return this.#b}#j(){this.#d=null,this.#k=-1}get offsets(){return this.#g||!this.#u||this.#e!=="multi"?null:this.#l.offsets}get version(){return this.#f}get bytes(){let e=0;return this.#o&&(e+=this.#o.byteLength??this.#o.length*8),this.#c&&(e+=this.#c.bytes),this.#l&&(e+=this.#l.bytes),this.#m&&(e+=this.#m.bytes),this.#a&&(e+=this.#a.bytes),this.#y&&(e+=this.#y.size*24),e}get(e){if(!this.#g&&!(e<0||e>=this.#s.physical())){if(!this.#u)return this.#M(e);if(this.#r&&this.#m.get(e)===0)return null;switch(this.#e){case"float64":case"int32":return this.#o[e];case"bitset":return this.#c.get(e)===1;case"dictionary":return this.#a.valueOf(this.#o[e]);case"multi":{const d=this.#l.at(e),f=new Array(d.length);for(let r=0;r<d.length;r++)f[r]=this.#a.valueOf(d[r]);return f}default:return this.#o[e]}}}set(e,d){this.#g||(this.#u?this.#A(e,d):this.#y.set(e,d===void 0?null:d),this.#d&&this.#j(),this.#f++)}read(e){return this.#i(e)}appendColumn(e,d,f){if(this.#g||f<=0)return;if(!this.#u){this.#f++;return}const r=this.#i,n=this.#r,c=this.#m;let g=!1;switch(this.#e){case"float64":{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]);if(typeof q=="number"){n&&c.set(d+P),A[d+P]=q;continue}const L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?NaN:i(q)}break}case"int32":{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?0:a(q)}break}case"bitset":{const A=this.#c;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A.assign(d+P,!L&&!!q)}break}case"dictionary":{const A=this.#o,P=this.#a;for(let q=0;q<f;q++){const L=r(e[q]),v=L==null;n?c.assign(d+q,!v):v&&(g=!0),A[d+q]=v?0:P.codeOf(L)}break}case"multi":{const A=this.#l,P=this.#a;for(let q=0;q<f;q++){const L=r(e[q]),v=L==null;n?c.assign(d+q,!v):v&&(g=!0);const G=s(L),S=new Array(G.length);for(let N=0;N<G.length;N++)S[N]=P.codeOf(G[N]);A.write(d+q,S)}break}default:{const A=this.#o;for(let P=0;P<f;P++){const q=r(e[P]),L=q==null;n?c.assign(d+P,!L):L&&(g=!0),A[d+P]=L?null:q}break}}g&&he(`store.null.${this.#t}`,`column "${this.#t}" is declared non-nullable but received null; storing a filler value`),this.#d&&this.#e==="object"&&(this.#d.append(this.#o,d,f),this.#d.version=this.#f+1,this.#k=this.#f+1),this.#f++}appendPacked(e,d,f){if(this.#g||f<=0||!e)return;if(!this.#u){this.#f++;return}const r=this.#m,n=e.presence;if(r)if(n)for(let g=0;g<f;g++)r.assign(d+g,(n[g>>3]&1<<(g&7))!==0);else for(let g=0;g<f;g++)r.set(d+g);const c=e.kind===this.#e;if(c&&(this.#e==="float64"||this.#e==="int32")){this.#o.set(e.values,d),this.#f++;return}if(c&&this.#e==="bitset"){const g=e.values;for(let A=0;A<f;A++)this.#c.assign(d+A,(g[A>>3]&1<<(A&7))!==0);this.#f++;return}if(c&&this.#e==="dictionary"){const g=e.table||[],A=new Uint32Array(g.length);for(let v=0;v<g.length;v++)A[v]=this.#a.codeOf(g[v]);const P=e.values,q=this.#o,L=r;for(let v=0;v<f;v++){if(L&&(n&&(n[v>>3]&1<<(v&7))===0)){q[d+v]=0;continue}q[d+v]=A[P[v]]??0}this.#f++;return}if(c&&this.#e==="multi"){const g=e.table||[],A=new Uint32Array(g.length);for(let L=0;L<g.length;L++)A[L]=this.#a.codeOf(g[L]);const P=e.values,q=e.offsets;for(let L=0;L<f;L++){const v=q[L],G=q[L+1],S=new Array(G-v);for(let N=v;N<G;N++)S[N-v]=A[P[N]]??0;this.#l.write(d+L,S)}this.#f++;return}for(let g=0;g<f;g++){const A=n?(n[g>>3]&1<<(g&7))===0:e.kind==="object"?e.values[g]===null:!1;this.#A(d+g,A?null:u(e,g))}this.#f++}touch(){this.#f++}columnarise(e,d){if(this.#u||this.#g)return;const f=new Array(d);for(let r=0;r<d;r++)f[r]=this.#M(r);this.#e=this.#n,this.#u=!0,this.#P(e);for(let r=0;r<d;r++)this.#A(r,f[r]);this.#y.clear(),this.#O=null,this.#j(),this.#f++}grow(e){if(!(!this.#u||this.#g||e<=this.#p)){switch(this.#e){case"float64":case"int32":case"dictionary":{const d=new this.#o.constructor(e);d.set(this.#o),this.#o=d;break}case"bitset":this.#c.grow(e);break;case"multi":break;default:this.#o.length=e;break}this.#m&&this.#m.grow(e),this.#p=e,this.#f++}}convert(e){if(this.#g||!R.has(e)||(this.#n=e,!this.#u||e===this.#e))return!1;const d={kind:this.#e,buf:this.#o,bits:this.#c,mv:this.#l,dict:this.#a},f=this.#s.physical(),r=this.#m;this.#e=e,this.#P(this.#p);for(let n=0;n<f;n++){const c=r!==null&&r.get(n)===0;c&&e!=="multi"||this.#A(n,c?null:h(d,n))}return this.#j(),this.#f++,!0}compact(e,d,f){if(!this.#g){if(this.#j(),!this.#u){const r=this.#y;if(r.size){const n=new Map;for(const[c,g]of r)e[c]!==H&&n.set(e[c],g);this.#y=n}this.#O=null,this.#f++;return}switch(this.#e){case"float64":case"int32":case"dictionary":case"object":{const r=this.#o;for(let n=0;n<d;n++)e[n]!==H&&(r[e[n]]=r[n]);if(this.#e==="object")for(let n=f;n<d;n++)r[n]=void 0;break}case"bitset":{const r=this.#c;for(let n=0;n<d;n++)e[n]!==H&&r.assign(e[n],r.get(n)===1);for(let n=f;n<d;n++)r.clear(n);break}case"multi":this.#l.compact(e,f,H);break;default:break}if(this.#m){const r=this.#m;for(let n=0;n<d;n++)e[n]!==H&&r.assign(e[n],r.get(n)===1);for(let n=f;n<d;n++)r.clear(n)}this.#f++}}release(){this.#g||(this.#g=!0,this.#o=null,this.#c&&this.#c.release(),this.#c=null,this.#l&&this.#l.release(),this.#l=null,this.#m&&this.#m.release(),this.#m=null,this.#a=null,this.#d=null,this.#y=new Map,this.#O=null,this.#p=0,this.#f++)}#P(e){const d=Math.max(1,e);switch(this.#o=null,this.#c=null,this.#l=null,this.#e){case"float64":this.#o=new Float64Array(d);break;case"int32":this.#o=new Int32Array(d);break;case"bitset":this.#c=new Z(d);break;case"dictionary":this.#o=new Uint32Array(d),this.#a=this.#a??new z(this.#h??[]);break;case"multi":this.#l=new Y({rows:d,values:d}),this.#a=this.#a??new z(this.#h??[]);break;default:this.#o=new Array(d);break}this.#e!=="dictionary"&&this.#e!=="multi"&&(this.#a=null),this.#r&&(this.#m?this.#m.grow(d):this.#m=new Z(d)),this.#p=d}#A(e,d){const f=j(d);switch(this.#r?this.#m.assign(e,!f):f&&he(`store.null.${this.#t}`,`column "${this.#t}" is declared non-nullable but received null; storing a filler value`),this.#e){case"float64":this.#o[e]=f?NaN:i(d);break;case"int32":this.#o[e]=f?0:a(d);break;case"bitset":this.#c.assign(e,!f&&!!d);break;case"dictionary":this.#o[e]=f?0:this.#a.codeOf(d);break;case"multi":{const r=s(d),n=new Array(r.length);for(let c=0;c<r.length;c++)n[c]=this.#a.codeOf(r[c]);this.#l.write(e,n);break}default:this.#o[e]=f?null:d;break}}#M(e){if(this.#y.has(e))return this.#y.get(e);const d=this.#i(this.#s.rowAt(e));return d===void 0?null:d}#N(){if(this.#O&&this.#O.version===this.#f)return this.#O;const e=this.#s.physical(),d=new Array(e),f=this.#r?new Z(e):null;for(let r=0;r<e;r++){const n=this.#M(r);d[r]=n,f&&!j(n)&&f.set(r)}return this.#O={version:this.#f,values:d,presence:f},this.#O}}class l{#t;#e=new Map;#n=[];#r=[];#i=0;#s=0;#h=0;#u=0;#o=new Z(0);#c=!1;#l=!0;#a;#d;#w;#b=!1;constructor(e,d={}){this.#t=Array.isArray(e)?e:[],this.#d=Math.max(1,d.initialCapacity??T),this.#l=d.retainSource!==!1,this.#a=this.#l?d.columnarBelow??V:0,this.#w=d.compactRatio??ne;const f={rowAt:r=>this.#r[r],physical:()=>this.#i};for(const r of this.#t){if(!r||!r.id)continue;if(this.#e.has(r.id)){he(`store.dup.${r.id}`,`duplicate column id "${r.id}" in the store schema; ignoring the second`);continue}const n=new t(r,f);this.#e.set(r.id,n),this.#n.push(n)}this.#a<=0&&this.#p()}get count(){return this.#h}get physical(){return this.#i}get capacity(){return this.#c?this.#s:this.#r.length}get tombstones(){return this.#u}get columnar(){return this.#c}get destroyed(){return this.#b}get bytes(){let e=this.#o.bytes+this.#r.length*8;for(const d of this.#n)e+=d.bytes;return e}append(e){const d=this.#i;if(this.#b||!e)return{from:d,to:d};const f=e.length|0;if(f===0)return{from:d,to:d};if(this.#l)for(let n=0;n<f;n++)this.#r[d+n]=e[n];if(this.#i=d+f,this.#h+=f,this.#o.grow(this.#i),!this.#c){if(this.#i>=this.#a)this.#p();else for(const n of this.#n)n.touch();return{from:d,to:this.#i}}this.#k(this.#i);const r=this.#n;for(let n=0;n<r.length;n++)r[n].appendColumn(e,d,f);return{from:d,to:this.#i}}appendPacked(e,d){const f=this.#i;if(this.#b||!e)return{from:f,to:f};const r=e.count|0;if(r===0)return{from:f,to:f};if(this.#l&&d)for(let c=0;c<r;c++)this.#r[f+c]=d[c];this.#i=f+r,this.#h+=r,this.#o.grow(this.#i),this.#c||this.#p(),this.#k(this.#i);const n=new Map;for(const c of e.columns)n.set(c.id,c);for(const c of this.#n){const g=n.get(c.id);g?c.appendPacked(g,f,r):c.grow(this.#s)}return{from:f,to:this.#i}}source(e){if(this.#l)return this.#r[e];if(!(e<0||e>=this.#i))return this.#m(e)}setSource(e,d){this.#b||e<0||e>=this.#i||this.#l&&(this.#r[e]=d)}get(e,d){const f=this.#e.get(e);return f?f.get(d):void 0}set(e,d,f){if(this.#b||d<0||d>=this.#i)return;const r=this.#e.get(e);if(!r){he(`store.set.${e}`,`set() on unknown column "${e}"`);return}r.set(d,f)}remove(e){return this.#b||e<0||e>=this.#i||this.#o.get(e)===1?!1:(this.#o.set(e),this.#u++,this.#h--,!0)}live(e){return e<0||e>=this.#i?!1:this.#o.get(e)===0}compact(e={}){if(this.#b||this.#u===0||!e.force&&this.#u/this.#i<this.#w)return null;const d=this.#i,f=new Uint32Array(d);let r=0;for(let n=0;n<d;n++)f[n]=this.#o.get(n)===1?H:r++;for(const n of this.#n)n.compact(f,d,r);if(this.#l){const n=this.#r;for(let c=0;c<d;c++)f[c]!==H&&(n[f[c]]=n[c]);n.length=r}return this.#i=r,this.#h=r,this.#u=0,this.#o=new Z(Math.max(this.#s,r)),f}column(e){return this.#e.get(e)}columns(){return this.#n.slice()}liveIndices(){const e=new Uint32Array(this.#h);if(this.#u===0){for(let f=0;f<this.#i;f++)e[f]=f;return e}let d=0;for(let f=0;f<this.#i;f++)this.#o.get(f)===0&&(e[d++]=f);return e}convert(e,d){const f=this.#e.get(e);return f?f.convert(d):!1}destroy(){if(!this.#b){this.#b=!0;for(const e of this.#n)e.release();this.#e.clear(),this.#n.length=0,this.#r.length=0,this.#o.release(),this.#i=0,this.#h=0,this.#u=0,this.#s=0}}#k(e){if(e<=this.#s)return;let d=this.#s||this.#d;for(;d<e;)d*=2;for(const f of this.#n)f.grow(d);this.#o.grow(d),this.#s=d}#m(e){const d={};for(const f of this.#n)d[f.id]=f.get(e);return d}#p(){if(this.#c)return;let e=this.#d;for(;e<this.#i;)e*=2;this.#c=!0,this.#s=e,this.#o.grow(e);for(const d of this.#n)d.columnarise(e,this.#i)}}}),Ce("packages/core/src/store/ingest.js",function(o,me){"use strict";Object.defineProperty(o,"INGEST_DEFAULTS",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"inferKind",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"decideText",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"createReaders",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"Ingest",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"ingest",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"ingestSync",{enumerable:!0,get:function(){return R}});const ae=me("packages/core/src/internal/util.js"),he=ae.now,W=ae.nextFrame,U=ae.infoOnce,_=ae.warnOnce,Z=ae.isFunction,E=ae.pathGetter,re=me("packages/core/src/store/columnstore.js").ColumnStore,Y=Object.freeze({chunkMs:8,chunkRows:512,sampleSize:100,dictionaryRatio:.1,columnarBelow:5e3,initialCapacity:1024});function se(j,i={}){if(i.multi)return"multi";if(j.length===0)return"object";let a=0,s=0,h=0,u=0,t=0;for(let m=0;m<j.length;m++){const e=j[m];typeof e=="number"?a++:typeof e=="boolean"?s++:typeof e=="string"?h++:e instanceof Date?u++:Array.isArray(e)&&t++}const l=j.length;return a===l?"float64":s===l?"bitset":u===l?"float64":h===l?"text":t===l?"multi":"object"}function te(j,i,a){return i<=0||j<a*i?"dictionary":"object"}function H(j,i,a){const s=new Map,h=new Map;for(const c of j){if(c.computed)continue;const g=Z(c.read)?c.read:E(c.field||c.id);h.set(c.id,g),s.set(c.id,g)}const u=i?.order??[],t=i?.fns??{},l=i?.deps??{},m=i?.wrapDeps??null,e=u.filter(c=>Z(t[c])),d=e.some(c=>l[c]==="*");let f=new WeakMap;const r=c=>{const g={};if(d)for(const[A,P]of h)g[A]=P(c);for(const A of e){const P=l[A];let q;if(P==="*")q=g;else{q={};const L=P||[];for(let v=0;v<L.length;v++){const G=L[v];q[G]=G in g?g[G]:h.get(G)?.(c)}}g[A]=t[A](m?m(q,A):q,{data:c,row:null,column:null,grid:null,context:a})}return g},n=c=>{if(c===null||typeof c!="object"&&typeof c!="function")return r(c);let g=f.get(c);return g===void 0&&(g=r(c),f.set(c,g)),g};for(const c of e)s.set(c,g=>n(g)[c]);return{readers:s,reset(){f=new WeakMap}}}class T{spec;read;kind;inferred;nullable;candidate=!1;distinct=null;change=null;reason="";constructor(i,a){this.spec=i,this.read=a,this.kind="object",this.inferred=!1,this.nullable=i.nullable!==!1}}class V{#t;#e=[];#n=null;#r;#i=0;#s;#h=!1;#u=!1;#o=0;#c;constructor(i,a={},s={}){this.#t=Array.isArray(i)?i:Array.from(i||[]),this.#s={...Y,...s};const h=a.columns??[];this.#r=H(h,a.computed??null,a.context),this.#c=this.#t.length>=this.#s.columnarBelow,this.#l(h,a.computed??null),this.#n=new re(this.#e.map(u=>({id:u.spec.id,kind:u.kind,nullable:u.nullable,read:u.read,dictionary:u.spec.dictionary})),{initialCapacity:this.#s.initialCapacity,columnarBelow:this.#s.columnarBelow})}get store(){return this.#n}get done(){return this.#h||this.#u}get progress(){return this.#i}slice(){if(this.done)return!1;if(this.#s.signal?.aborted)return this.#u=!0,!1;const i=he(),{chunkMs:a,chunkRows:s}=this.#s,h=this.#t.length;do{const u=Math.min(this.#i+s,h);this.#n.append(this.#t.slice(this.#i,u)),this.#a(this.#i,u),this.#i=u,this.#r.reset(),this.#w(!1)}while(this.#i<h&&he()-i<a);return this.#o+=he()-i,this.#s.onProgress?.({loaded:this.#i,total:h}),this.#i>=h?(this.#w(!0),this.#h=!0,!1):!0}cancel(){this.#u=!0}result(){return{store:this.#n,schema:this.#e.map(i=>({id:i.spec.id,kind:i.kind,nullable:i.nullable,read:i.read,dictionary:i.spec.dictionary})),decisions:this.#e.map(i=>({id:i.spec.id,kind:i.kind,nullable:i.nullable,inferred:i.inferred,distinct:i.candidate||i.change?this.#d(i):null,change:i.change,reason:i.reason})),count:this.#n.count,elapsed:this.#o,cancelled:this.#u}}#l(i,a){const s=this.#t,h=Math.min(this.#s.sampleSize,s.length),u=this.#s.dictionaryRatio,t=a?.pure instanceof Set?a.pure:new Set(a?.pure??a?.order??[]);for(const l of i){if(!l||!l.id)continue;if(l.computed&&(l.pure===!1||a&&!t.has(l.id))){_(`ingest.impure.${l.id}`,`column "${l.id}" is an impure computed column and is not materialised into the store`);continue}const m=this.#r.readers.get(l.id)??(Z(l.read)?l.read:E(l.field||l.id)),e=new T(l,m);if(l.kind)e.kind=l.kind,e.reason="declared by the caller";else if(l.dictionary)e.kind=l.multi?"multi":"dictionary",e.reason="value table supplied (lookup column)";else{const d=[];for(let r=0;r<h&&d.length<this.#s.sampleSize;r++){const n=m(s[r]);n!=null&&d.push(n)}e.inferred=!0;const f=se(d,{multi:l.multi});if(f==="text"){const r=new Set(d).size;e.kind=te(r,d.length,u),e.candidate=this.#c,e.reason=`sampled ${r} distinct in ${d.length}`}else e.kind=f,e.reason=`inferred from ${d.length} sampled values`,f==="object"&&d.length&&U(`ingest.mixed.${l.id}`,`column "${l.id}" holds mixed or unrecognised value types; storing as an object array. Declare a type to avoid this.`);e.kind==="object"&&e.candidate&&(e.distinct=new Set(d))}this.#e.push(e)}}#a(i,a){const s=this.#t;for(const h of this.#e){if(!h.candidate||!h.distinct)continue;const u=h.distinct;for(let t=i;t<a;t++){const l=h.read(s[t]);l!=null&&u.add(l)}}}#d(i){if(i.distinct)return i.distinct.size;const a=this.#n.column(i.spec.id);return a?.dict?a.dict.size:0}#w(i){const a=this.#s.dictionaryRatio,s=this.#t.length;for(const h of this.#e){if(!h.candidate)continue;const u=this.#d(h);if(h.kind==="dictionary"&&u>=a*s){const t=this.#n.column(h.spec.id);h.distinct=new Set(t?.dict?t.dict.values():[]),this.#n.convert(h.spec.id,"object"),h.kind="object",h.change="demoted",h.reason=`${u} distinct values is at or above ${a*100}% of ${s} rows`;continue}if(h.kind==="object"&&u>=a*s){h.candidate=!1,h.distinct=null,h.reason=`${u} distinct values is at or above ${a*100}% of ${s} rows`;continue}i&&h.kind==="object"&&u<a*s&&(this.#n.convert(h.spec.id,"dictionary"),h.kind="dictionary",h.change=h.change==="demoted"?null:"promoted",h.reason=`${u} distinct values is below ${a*100}% of ${s} rows`,h.distinct=null),i&&(h.candidate=!1)}}}async function ne(j,i={},a={}){const s=new V(j,i,a),h=a.scheduler?.frame??W;for(;s.slice();)await new Promise(u=>{h(u)});return s.result()}function R(j,i={},a={}){const s=new V(j,i,{...a,chunkMs:1/0});for(;s.slice(););return s.result()}}),Ce("packages/core/src/store/columnpack.js",function(o,me){"use strict";Object.defineProperty(o,"isPortableSchema",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"packChunk",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"packedTransfers",{enumerable:!0,get:function(){return V}});const he=me("packages/core/src/internal/util.js").pathGetter,W=me("packages/core/src/store/ingest.js"),U=W.inferKind,_=W.decideText,Z=W.INGEST_DEFAULTS,z=me("packages/core/src/store/columnstore.js").toFloat,re=new Set(["float64","int32","bitset","dictionary","object","multi"]);function Y(ne){if(!Array.isArray(ne)||ne.length===0)return!1;for(const R of ne)if(!R||typeof R.id!="string"||typeof R.field!="string"||R.field===""||R.kind&&!re.has(R.kind))return!1;return!0}function se(ne){const R=z(ne);return Number.isFinite(R)?R|0:0}function te(ne){return ne==null?[]:Array.isArray(ne)?ne:[ne]}function H(ne,R,j,i){if(ne.kind)return ne.kind;const a=[];for(let u=0;u<R.length&&a.length<Z.sampleSize;u++){const t=R[u];t!=null&&a.push(t)}const s=U(a,{multi:ne.multi});if(s!=="text")return s;const h=new Set(a).size;return _(h,a.length,i)}function T(ne,R,j={}){const i=R.length|0,a=j.dictionaryRatio??Z.dictionaryRatio,s=[];for(const h of ne){const u=he(h.field||h.id),t=h.nullable!==!1,l=new Array(i);for(let r=0;r<i;r++){const n=u(R[r]);l[r]=n===void 0?null:n}const m=H(h,l,i,a),e=t?new Uint8Array(i+7>>3):null,d=r=>{e&&(e[r>>3]|=1<<(r&7))};let f;switch(m){case"float64":{const r=new Float64Array(i);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),r[n]=g?NaN:z(c)}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"int32":{const r=new Int32Array(i);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),r[n]=g?0:se(c)}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"bitset":{const r=new Uint8Array(i+7>>3);for(let n=0;n<i;n++){const c=l[n],g=c===null;g||d(n),!g&&c&&(r[n>>3]|=1<<(n&7))}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:null};break}case"dictionary":{const r=new Uint32Array(i),n=[],c=new Map;for(let g=0;g<i;g++){const A=l[g];if(A===null){r[g]=0;continue}d(g);let P=c.get(A);P===void 0&&(P=n.length,n.push(A),c.set(A,P)),r[g]=P}f={id:h.id,kind:m,nullable:t,values:r,presence:e,offsets:null,table:n};break}case"multi":{const r=[],n=new Map,c=new Uint32Array(i+1),g=[];for(let A=0;A<i;A++){const P=l[A];c[A]=g.length,P===null||d(A);const L=te(P);for(let v=0;v<L.length;v++){const G=L[v];let S=n.get(G);S===void 0&&(S=r.length,r.push(G),n.set(G,S)),g.push(S)}}c[i]=g.length,f={id:h.id,kind:m,nullable:t,values:Int32Array.from(g),presence:e,offsets:c,table:r};break}default:{const r=new Array(i);for(let n=0;n<i;n++){const c=l[n];c!==null&&d(n),r[n]=c}f={id:h.id,kind:"object",nullable:t,values:r,presence:e,offsets:null,table:null};break}}s.push(f)}return{count:i,columns:s}}function V(ne){const R=[];if(!ne||!Array.isArray(ne.columns))return R;const j=i=>{ArrayBuffer.isView(i)&&i.buffer&&!R.includes(i.buffer)&&R.push(i.buffer)};for(const i of ne.columns)j(i.values),j(i.presence),j(i.offsets);return R}}),Ce("packages/core/src/compute/sortspec.js",function(o,me){"use strict";Object.defineProperty(o,"collationDescriptor",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"isPortableSort",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"isPortableSortSet",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"describeSortEntry",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"describeSort",{enumerable:!0,get:function(){return _}});function ae(Z){return{locale:Z===void 0?void 0:String(Z),numeric:!0,sensitivity:"variant"}}function he(Z){return!!Z&&typeof Z.compare!="function"}function W(Z){if(!Z)return!0;for(let E=0;E<Z.length;E++)if(!he(Z[E]))return!1;return!0}function U(Z,E){const z=Z.col!==void 0?Z.col:Z.handle&&Z.handle.id,re=Z.locale!==void 0?Z.locale:E;return{col:z,descending:Z.descending!==void 0?!!Z.descending:Z.dir==="desc",nullsFirst:!!Z.nullsFirst,collation:ae(re)}}function _(Z,E){const z=Z||[],re=new Array(z.length);for(let Y=0;Y<z.length;Y++)re[Y]=U(z[Y],E);return re}}),Ce("packages/core/src/format/date.js",function(o,me){"use strict";Object.defineProperty(o,"scanPattern",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"toDate",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"compilePattern",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"compileDate",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"toIsoDate",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"toIsoDateTime",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"compareIso",{enumerable:!0,get:function(){return R}});const ae=me("packages/core/src/internal/util.js"),he=ae.isNil,W=ae.warnOnce,U=["yyyy","yy","MMMM","MMM","MM","M","dd","d","EEEE","EEE","HH","H","hh","h","mm","m","ss","s","SSS","a"];function _(j){const i=[];let a=0,s="";const h=()=>{s&&(i.push({token:null,text:s}),s="")};for(;a<j.length;){const u=j[a];if(u==="\'"){if(j[a+1]==="\'"){s+="\'",a+=2;continue}const l=j.indexOf("\'",a+1);if(l===-1){s+=j.slice(a+1),a=j.length;continue}s+=j.slice(a+1,l),a=l+1;continue}const t=U.find(l=>j.startsWith(l,a));if(t){h(),i.push({token:t,text:t}),a+=t.length;continue}/[A-Za-z]/.test(u)&&W(`date.pattern.token:${u}`,`the date pattern "${j}" contains \'${u}\', which is not a supported token, so it is rendered as text. Quote it as a literal to silence this. Supported: ${U.join(" ")}.`),s+=u,a+=1}return h(),i}const Z=/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.\\d+)?)?$/;function E(j){if(he(j)||j==="")return null;if(j instanceof Date)return Number.isNaN(j.getTime())?null:j;if(typeof j=="number")return Number.isNaN(j)?null:new Date(j);if(typeof j=="string"){const i=Z.exec(j.trim());if(i){const[,s,h,u,t="0",l="0",m="0"]=i;return new Date(+s,+h-1,+u,+t,+l,+m)}const a=new Date(j);return Number.isNaN(a.getTime())?null:a}return null}function z(j,i){return String(j).padStart(i,"0")}function re(j){if(!j)return s=>({year:s.getFullYear(),month:s.getMonth()+1,day:s.getDate(),hour:s.getHours(),minute:s.getMinutes(),second:s.getSeconds(),ms:s.getMilliseconds(),weekday:s.getDay()});const i=new Intl.DateTimeFormat("en-US",{timeZone:j,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,weekday:"short"}),a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return s=>{const h={year:0,month:1,day:1,hour:0,minute:0,second:0,ms:s.getMilliseconds(),weekday:0};for(const u of i.formatToParts(s))switch(u.type){case"year":h.year=Number(u.value);break;case"month":h.month=Number(u.value);break;case"day":h.day=Number(u.value);break;case"hour":h.hour=Number(u.value)%24;break;case"minute":h.minute=Number(u.value);break;case"second":h.second=Number(u.value);break;case"weekday":h.weekday=a[u.value]??0;break;default:break}return h}}function Y(j,i,a){const s=_(j),h=re(a),u=new Set(s.filter(d=>d.token).map(d=>d.token)),t=u.has("MMM")?new Intl.DateTimeFormat(i,{month:"short",timeZone:a}):null,l=u.has("MMMM")?new Intl.DateTimeFormat(i,{month:"long",timeZone:a}):null,m=u.has("EEE")?new Intl.DateTimeFormat(i,{weekday:"short",timeZone:a}):null,e=u.has("EEEE")?new Intl.DateTimeFormat(i,{weekday:"long",timeZone:a}):null;return d=>{const f=h(d);let r="";for(const n of s){if(!n.token){r+=n.text;continue}switch(n.token){case"yyyy":r+=z(f.year,4);break;case"yy":r+=z(f.year%100,2);break;case"MMMM":r+=l.format(d);break;case"MMM":r+=t.format(d);break;case"MM":r+=z(f.month,2);break;case"M":r+=String(f.month);break;case"dd":r+=z(f.day,2);break;case"d":r+=String(f.day);break;case"EEEE":r+=e.format(d);break;case"EEE":r+=m.format(d);break;case"HH":r+=z(f.hour,2);break;case"H":r+=String(f.hour);break;case"hh":r+=z(f.hour%12===0?12:f.hour%12,2);break;case"h":r+=String(f.hour%12===0?12:f.hour%12);break;case"mm":r+=z(f.minute,2);break;case"m":r+=String(f.minute);break;case"ss":r+=z(f.second,2);break;case"s":r+=String(f.second);break;case"SSS":r+=z(f.ms,3);break;case"a":r+=f.hour<12?"AM":"PM";break;default:r+=n.text;break}}return r}}const se=[["year",365*24*36e5],["month",720*36e5],["week",168*36e5],["day",24*36e5],["hour",36e5],["minute",6e4],["second",1e3]];function te(j,i){const a=j||{},s=a.locale||i||void 0,h=a.nullDisplay??"",u=a.timeZone;let t;if(a.pattern)t=Y(a.pattern,s,u);else if(a.dateStyle||a.timeStyle){const f={timeZone:u};a.dateStyle&&(f.dateStyle=a.dateStyle),a.timeStyle&&(f.timeStyle=a.timeStyle);const r=new Intl.DateTimeFormat(s,f);t=n=>r.format(n)}else{const f=new Intl.DateTimeFormat(s,{dateStyle:"medium",timeZone:u});t=r=>f.format(r)}const l=a.relative?new Intl.RelativeTimeFormat(s,{numeric:"auto"}):null,e=(typeof a.relative=="object"&&a.relative?a.relative.threshold??7:7)*24*36e5,d=(f,r)=>{const n=E(f);if(!n)return h;if(l){const c=r&&typeof r.now=="number"?r.now:Date.now(),g=n.getTime()-c;if(Math.abs(g)<e){for(const[A,P]of se)if(Math.abs(g)>=P||A==="second")return l.format(Math.round(g/P),A)}}return t(n)};return d.spec=a,d}function H(j){if(he(j)||j==="")return null;if(typeof j=="string"){const s=/^(\\d{4}-\\d{2}-\\d{2})/.exec(j.trim());if(s)return s[1];const h=E(j);return h?H(h):null}const i=E(j);if(!i)return null;const a=s=>String(s).padStart(2,"0");return`${i.getFullYear()}-${a(i.getMonth()+1)}-${a(i.getDate())}`}function T(j,i){if(he(j)||j==="")return null;if(typeof j=="string"){const s=j.trim();if(V.test(s)){const t=E(s);return t?ne(t,i):null}const h=/^(\\d{4}-\\d{2}-\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?/.exec(s);if(h){const[,t,l,m,e]=h;return`${t}T${l}:${m}${e&&e!=="00"?`:${e}`:""}`}if(/^\\d{4}-\\d{2}-\\d{2}$/.test(s))return`${s}T00:00`;const u=E(s);return u?T(u):null}const a=E(j);return a?ne(a,i):null}const V=/(?:Z|[+-]\\d{2}:?\\d{2})$/i;function ne(j,i){const a=t=>String(t).padStart(2,"0");if(i)try{const t=new Intl.DateTimeFormat("en-CA",{timeZone:i,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(j).reduce((e,d)=>(d.type!=="literal"&&(e[d.type]=d.value),e),{}),l=t.hour==="24"?"00":t.hour,m=Number(t.second);return`${t.year}-${t.month}-${t.day}T${l}:${t.minute}`+(m?`:${t.second}`:"")}catch{}const s=`${j.getFullYear()}-${a(j.getMonth()+1)}-${a(j.getDate())}`,h=j.getSeconds(),u=`${a(j.getHours())}:${a(j.getMinutes())}${h?`:${a(h)}`:""}`;return`${s}T${u}`}function R(j,i){const a=he(j)||j===""?null:String(j),s=he(i)||i===""?null:String(i);return a===null?s===null?0:1:s===null||a<s?-1:a>s?1:0}}),Ce("packages/core/src/compute/filter.js",function(o,me){"use strict";Object.defineProperty(o,"releaseMask",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"compilePredicate",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"wallMs",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"testValue",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"itemwisePredicate",{enumerable:!0,get:function(){return S}}),Object.defineProperty(o,"evaluateCondition",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"evaluateFilters",{enumerable:!0,get:function(){return de}}),Object.defineProperty(o,"pruneColumn",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(o,"mentionsColumn",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(o,"compact",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(o,"declareOperators",{enumerable:!0,get:function(){return x}}),Object.defineProperty(o,"declaredOperator",{enumerable:!0,get:function(){return fe}});const ae=me("packages/core/src/internal/util.js"),he=ae.isBlank,W=ae.toArray,U=ae.warnOnce,_=me("packages/core/src/format/date.js"),Z=_.toDate,E=_.toIsoDate,z=me("packages/core/src/compute/handle.js"),re=z.bitReader,Y=z.dictSize,se=z.dictValue,te=z.presenceReader,H=z.valueComparator,T=z.valueReader,V=/^\\d{4}-\\d{2}-\\d{2}$/,ne="\\0null\\0";function R(p,Q){const X=p&&p.pool;if(X){const ce=X.mask||X.acquireMask||X.acquire||X.take;if(typeof ce=="function"){const le=ce.call(X,Q);if(le&&le.length>=Q)return le}}return new Uint8Array(Q)}function j(p,Q){const X=p&&p.pool;if(!X||!Q)return;const ce=X.release||X.releaseMask||X.free||X.recycle;typeof ce=="function"&&ce.call(X,Q)}function i(p,Q,X){return p.fill(X,0,Q),p}function a(p){return p==null||typeof p=="number"&&Number.isNaN(p)}function s(p,Q){if(p==null)return p;if(Q==="number")return typeof p=="number"?p:Number(p);if(Q==="date"||Q==="dateString"){const X=E(p);return X===null?h(p):X}return Q==="boolean"?typeof p=="boolean"?p:p==="true"||p===1?!0:p==="false"||p===0?!1:!!p:p}function h(p){return p instanceof Date?p.getTime():typeof p=="number"?p:Date.parse(String(p))}function u(p){return typeof p=="number"?p:p instanceof Date?p.getTime():p==null||p===""?NaN:Number(p)}function t(p,Q){const X=typeof p=="string"?p:String(p);return Q?X:X.toLowerCase()}function l(p,Q){return p==null?ne:typeof p=="string"?Q?p:p.toLowerCase():p instanceof Date?p.getTime():p}function m(p,Q,X){const ce=new Set;for(const le of W(p)){const ge=s(le,X);ce.add(l(ge,Q)),typeof ge=="string"&&ge!==""&&Number.isFinite(Number(ge))?ce.add(Number(ge)):typeof ge=="number"&&Number.isFinite(ge)&&ce.add(l(String(ge),Q))}return ce}function e(p,Q,X){if(p==null||Q===null||Q===void 0)return p==null&&Q==null;const ce=typeof p,le=typeof Q;return ce==="string"&&le==="string"?X?p===Q:p.toLowerCase()===Q.toLowerCase():p instanceof Date||Q instanceof Date?h(p)===h(Q):ce==="number"&&le==="number"?p===Q||Number.isNaN(p)&&Number.isNaN(Q):ce==="number"&&le==="string"?p===Number(Q):ce==="string"&&le==="number"?Number(p)===Q:ce==="boolean"||le==="boolean"?p===Q:Array.isArray(p)&&Array.isArray(Q)?p.length===Q.length&&p.every((ge,Me)=>e(ge,Q[Me],X)):p===Q}function d(p,Q){try{if(p instanceof RegExp){const X=p.flags.replace(/[gy]/g,"");return new RegExp(p.source,Q||X.includes("i")?X:`${X}i`)}return new RegExp(String(p),Q?"":"i")}catch(X){return U(`regex:${String(p)}`,`filter operator "matches" received an invalid pattern: ${String(p)}`,X),null}}function f(p,Q){if(p&&p.type==="datetime"&&r.has(p.op))return P(p,Q);const X=q(p,Q),ce=p&&p.type;return ce!=="date"&&ce!=="dateString"?X:le=>X(typeof le=="string"&&V.test(le)?le:E(le)??le)}const r=new Set(["eq","ne","lt","lte","gt","gte","between","notBetween","in","notIn"]),n=/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3})\\d*)?)?)?$/,c=new Map;function g(p,Q){let X=c.get(Q);if(X===void 0){try{X=new Intl.DateTimeFormat("en-CA",{timeZone:Q,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{X=null}c.set(Q,X)}if(!X)return null;const ce={};for(const le of X.formatToParts(p))le.type!=="literal"&&(ce[le.type]=le.value);return ce}function A(p,Q){if(p==null||p==="")return null;if(typeof p=="string"){const ge=n.exec(p.trim());if(ge)return Date.UTC(+ge[1],+ge[2]-1,+ge[3],+(ge[4]||0),+(ge[5]||0),+(ge[6]||0),+(ge[7]||"0").padEnd(3,"0"))}const X=Z(p);if(!X)return null;const ce=X.getUTCMilliseconds(),le=Q?g(X,Q):null;return le?Date.UTC(+le.year,+le.month-1,+le.day,le.hour==="24"?0:+le.hour,+le.minute,+le.second,ce):Date.UTC(X.getFullYear(),X.getMonth(),X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),ce)}function P(p,Q){const X=typeof p.timeZone=="string"&&p.timeZone?p.timeZone:void 0,ce=Me=>A(Me,X),le=Array.isArray(p.value)?p.value.map(ce):ce(p.value),ge=q({...p,type:"number",value:le},Q);return Me=>ge(A(Me))}function q(p,Q){const X=p&&p.op,ce=!!(p&&p.caseSensitive),le=p&&p.type,ge=H(Q),Me=be=>ye=>!be(ye);switch(X){case"eq":{const be=s(p.value,le);return ye=>e(ye,be,ce)}case"ne":{const be=s(p.value,le);return ye=>!e(ye,be,ce)}case"lt":case"lte":case"gt":case"gte":{const be=s(p.value,le);if(a(be))return()=>!1;const ye=X==="lt"?-1:X==="lte"?0:X==="gt"?1:2;return Re=>{if(a(Re))return!1;const Ne=ge(Re,be);return ye===-1?Ne<0:ye===0?Ne<=0:ye===1?Ne>0:Ne>=0}}case"between":case"notBetween":{const be=W(p.value),ye=s(be[0],le),Re=s(be[1],le),Ne=p.bounds||"[]",Ee=Ne.charAt(0)!=="(",Be=Ne.charAt(1)!==")";if(a(ye)||a(Re))return X==="between"?()=>!1:()=>!0;const ze=We=>{if(a(We))return!1;const Xe=ge(We,ye),Ye=ge(We,Re);return(Ee?Xe>=0:Xe>0)&&(Be?Ye<=0:Ye<0)};return X==="between"?ze:Me(ze)}case"in":case"notIn":{const be=m(p.value,ce,le),ye=Re=>be.has(l(Re,ce));return X==="in"?ye:Me(ye)}case"contains":case"notContains":{const be=t(s(p.value,le),ce),ye=Re=>Re==null?!1:t(Re,ce).includes(be);return X==="contains"?ye:Me(ye)}case"startsWith":{const be=t(s(p.value,le),ce);return ye=>ye==null?!1:t(ye,ce).startsWith(be)}case"endsWith":{const be=t(s(p.value,le),ce);return ye=>ye==null?!1:t(ye,ce).endsWith(be)}case"matches":{const be=d(p.value,ce);return be?ye=>ye==null?!1:be.test(String(ye)):()=>!1}case"blank":return be=>he(be)||Array.isArray(be)&&be.length===0;case"notBlank":return be=>!(he(be)||Array.isArray(be)&&be.length===0);case"containsAny":case"containsNone":{const be=m(p.value,ce,le),ye=Re=>{const Ne=Re==null?[]:W(Re);for(let Ee=0;Ee<Ne.length;Ee++)if(be.has(l(Ne[Ee],ce)))return!0;return!1};return X==="containsAny"?ye:Me(ye)}case"containsAll":{const be=W(p.value).map(ye=>l(s(ye,le),ce));return ye=>{const Re=ye==null?[]:W(ye);if(be.length===0)return!0;const Ne=new Set(Re.map(Ee=>l(Ee,ce)));for(let Ee=0;Ee<be.length;Ee++)if(!Ne.has(be[Ee]))return!1;return!0}}default:{const be=fe(X);return be?be.compile(p.value):(U(`op:${String(X)}`,`unknown filter operator "${String(X)}"; the condition is refused rather than matching every row`),()=>!1)}}}function L(p,Q,X){return f(Q,X)(p)}const v=Object.freeze({ne:"eq",notIn:"in",notBetween:"between",notContains:"contains"}),G=new Set(["containsAny","containsAll","containsNone"]);function S(p,Q,X){const ce=p&&p.op,le=v[ce]||ce,ge=f({...p,op:le,type:Q.type},X),Me=Q.items,be=ye=>{const Re=Me(ye);if(!Re)return!1;for(let Ne=0;Ne<Re.length;Ne++)if(ge(Re[Ne]))return!0;return!1};return v[ce]?ye=>!be(ye):be}function N(p,Q,X,ce){const le=te(p);if(le){const be=Q?1:0;for(let ye=0;ye<ce;ye++)X[ye]=le(ye)===be?1:0;return X}const ge=p.kind;if(ge==="float64"||ge==="int32"||ge==="bitset")return i(X,ce,Q?1:0);const Me=T(p);for(let be=0;be<ce;be++){const ye=Me(be),Re=he(ye)||Array.isArray(ye)&&ye.length===0;X[be]=Re===Q?0:1}return X}function I(p,Q,X,ce){const le=p.dict,ge=Y(le),Me=new Uint8Array(ge);for(let Ne=0;Ne<ge;Ne++)Me[Ne]=Q(se(le,Ne))?1:0;const be=p.values,ye=te(p);if(!ye){for(let Ne=0;Ne<ce;Ne++)X[Ne]=Me[be[Ne]];return X}const Re=Q(null)?1:0;for(let Ne=0;Ne<ce;Ne++)X[Ne]=ye(Ne)===1?Me[be[Ne]]:Re;return X}function K(p,Q,X,ce){const le=re(p.values),ge=Q(!0)?1:0,Me=Q(!1)?1:0,be=te(p);if(!be){for(let Re=0;Re<ce;Re++)X[Re]=le(Re)===1?ge:Me;return X}const ye=Q(null)?1:0;for(let Re=0;Re<ce;Re++)X[Re]=be(Re)===0?ye:le(Re)===1?ge:Me;return X}function B(p,Q,X,ce,le){const ge=p.values,Me=Q.type,be=Q.op;let ye=!0;switch(be){case"eq":case"ne":{const Ne=u(s(Q.value,Me)),Ee=typeof Q.value=="number"&&Number.isNaN(Q.value),Be=be==="ne"?1:0;if(Ee)for(let ze=0;ze<le;ze++)ce[ze]=(Number.isNaN(ge[ze])?1:0)^Be;else for(let ze=0;ze<le;ze++)ce[ze]=(ge[ze]===Ne?1:0)^Be;break}case"lt":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]<Ne?1:0;break}case"lte":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]<=Ne?1:0;break}case"gt":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]>Ne?1:0;break}case"gte":{const Ne=u(s(Q.value,Me));for(let Ee=0;Ee<le;Ee++)ce[Ee]=ge[Ee]>=Ne?1:0;break}case"between":case"notBetween":{const Ne=W(Q.value),Ee=u(s(Ne[0],Me)),Be=u(s(Ne[1],Me)),ze=Q.bounds||"[]",We=ze.charAt(0)!=="(",Xe=ze.charAt(1)!==")",Ye=be==="notBetween"?1:0;if(We&&Xe)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>=Ee&ge[Ie]<=Be?1:0)^Ye;else if(We)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>=Ee&ge[Ie]<Be?1:0)^Ye;else if(Xe)for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>Ee&ge[Ie]<=Be?1:0)^Ye;else for(let Ie=0;Ie<le;Ie++)ce[Ie]=(ge[Ie]>Ee&ge[Ie]<Be?1:0)^Ye;break}case"in":case"notIn":{const Ne=new Set;for(const Be of W(Q.value)){const ze=u(s(Be,Me));Number.isNaN(ze)||Ne.add(ze)}const Ee=be==="notIn"?1:0;for(let Be=0;Be<le;Be++)ce[Be]=(Ne.has(ge[Be])?1:0)^Ee;break}default:ye=!1;break}if(!ye)return!1;const Re=te(p);if(Re){const Ne=X(null)?1:0;for(let Ee=0;Ee<le;Ee++)Re(Ee)===0&&(ce[Ee]=Ne)}return!0}function ee(p,Q,X,ce){const le=T(p);for(let ge=0;ge<ce;ge++)X[ge]=Q(le(ge))?1:0;return X}function J(p,Q,X){const ce=Q.count|0,le=X||R(Q,ce);if(!p)return i(le,ce,1);const ge=typeof Q.handle=="function"?Q.handle(p.col):void 0,Me=typeof Q.custom=="function"?Q.custom:null;if(!ge){if(Me){for(let Ne=0;Ne<ce;Ne++)le[Ne]=Me(p,Ne)?1:0;return le}return U(`filter:col:${String(p.col)}`,`filter references unknown column "${String(p.col)}"; the condition is refused rather than matching every row`),i(le,ce,0)}const be=p.op;if(be==="blank"||be==="notBlank")return N(ge,be==="notBlank",le,ce);const ye=typeof Q.itemwise=="function"?Q.itemwise(p.col):null;if(ye&&!fe(be)&&!G.has(be))return ee(ge,S(p,ye,Q.locale),le,ce);const Re=f(p,Q.locale);switch(ge.kind){case"dictionary":return I(ge,Re,le,ce);case"bitset":return K(ge,Re,le,ce);case"float64":case"int32":return B(ge,p,Re,le,ce)?le:ee(ge,Re,le,ce);default:return ee(ge,Re,le,ce)}}function ue(p,Q,X){if(!p)return i(R(Q,X),X,1);if(Array.isArray(p.conditions)){const ce=p.conditions.filter(Me=>Me!=null),le=p.op==="or"?"or":p.op==="not"?"not":"and";if(ce.length===0)return i(R(Q,X),X,1);const ge=ue(ce[0],Q,X);for(let Me=1;Me<ce.length;Me++){const be=ue(ce[Me],Q,X);if(le==="or")for(let ye=0;ye<X;ye++)ge[ye]|=be[ye];else for(let ye=0;ye<X;ye++)ge[ye]&=be[ye];j(Q,be)}if(le==="not")for(let Me=0;Me<X;Me++)ge[Me]^=1;return ge}return J(p,Q,R(Q,X))}function de(p,Q){return ue(p,Q,Q.count|0)}function Oe(p,Q){if(!p||!Q)return p||null;const X=p;if(Array.isArray(X.conditions)){if((X.op==="or"?"or":X.op==="not"?"not":"and")!=="and")return Ae(X,Q)?null:p;const le=[];for(const ge of X.conditions){const Me=Oe(ge,Q);Me&&le.push(Me)}return le.length?{...X,op:"and",conditions:le}:null}return X.col===Q?null:p}function Ae(p,Q){if(!p||typeof p!="object")return!1;const X=p;if(X.col===Q)return!0;if(Array.isArray(X.conditions)){for(const ce of X.conditions)if(Ae(ce,Q))return!0}return!1}function Se(p,Q,X){if(X&&X.length>=Q){let Me=0;for(let be=0;be<Q;be++)p[be]&&(X[Me++]=be);return X.subarray(0,Me)}let ce=0;for(let Me=0;Me<Q;Me++)ce+=p[Me]?1:0;const le=new Uint32Array(ce);let ge=0;for(let Me=0;Me<Q;Me++)p[Me]&&(le[ge++]=Me);return le}const D=new Map;function x(p){if(!(!p||typeof p!="object"))for(const[Q,X]of Object.entries(p))X&&typeof X.compile=="function"&&D.set(Q,X)}function fe(p){return typeof p=="string"?D.get(p):void 0}}),Ce("packages/core/src/compute/group.js",function(o,me){"use strict";Object.defineProperty(o,"packKeys",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"groupByColumns",{enumerable:!0,get:function(){return te}});const ae=me("packages/core/src/compute/handle.js"),he=ae.dictSize,W=ae.identity,U=ae.presenceReader,_=ae.rowCount,Z=ae.valueReader,E="",z="\\0",re=1<<20;function Y(H,T,V,ne){const R=H.length,j=H.map(t=>Z(t)),i=Array.isArray(ne)&&ne.some(Boolean),a=i?j.map((t,l)=>ne[l]?m=>ne[l](t(m)):t):j;if(!i&&R>0&&H.every(t=>t&&t.kind==="dictionary"&&t.dict)){const t=H.map(m=>he(m.dict)+1);let l=1;for(let m=0;m<R;m++)l*=t[m];if(l<=Number.MAX_SAFE_INTEGER){const m=H.map(r=>r.values),e=H.map(r=>U(r)),d=r=>{let n=0;for(let c=0;c<R;c++){const g=e[c],A=g&&g(r)===0?t[c]-1:m[c][r];n=n*t[c]+A}return n},f=new Float64Array(V);for(let r=0;r<V;r++)f[r]=d(T[r]);return{packed:f,strings:null,product:l,readers:a,keyOf:d}}}const h=t=>{let l="";for(let m=0;m<R;m++){const e=a[m](t);l+=(m===0?"":E)+(e==null?z:String(e))}return l},u=new Array(V);for(let t=0;t<V;t++)u[t]=h(T[t]);return{packed:null,strings:u,product:1/0,readers:a,keyOf:h}}function se(H,T,V,ne){const R=new Uint32Array(ne+1);for(let s=0;s<V;s++)R[T[s]+1]++;for(let s=0;s<ne;s++)R[s+1]+=R[s];const j=new Uint32Array(V),i=R.slice(0,ne);for(let s=0;s<V;s++)j[i[T[s]]++]=H[s];const a=new Array(ne);for(let s=0;s<ne;s++)a[s]=j.subarray(R[s],R[s+1]);return a}function te(H,T,V={}){const ne=H||[],R=T||W(_(ne[0],V)),j=R.length;if(ne.length===0||j===0)return{keys:[],buckets:[]};const{packed:i,strings:a,product:s,readers:h}=Y(ne,R,j,V.project),u=new Uint32Array(j);let t=0,l=null;if(i&&s<=Math.max(1024,Math.min(re,j*4))){const f=s,r=new Int32Array(f).fill(-1);for(let n=0;n<j;n++)r[i[n]]=0;for(let n=0;n<f;n++)r[n]===0&&(r[n]=t++);for(let n=0;n<j;n++)u[n]=r[i[n]];l=new Float64Array(t);for(let n=0;n<f;n++)r[n]>=0&&(l[r[n]]=n)}else if(i){const f=new Map;for(let r=0;r<j;r++){const n=i[r];let c=f.get(n);c===void 0&&(c=t++,f.set(n,c)),u[r]=c}l=new Float64Array(t);for(const[r,n]of f)l[n]=r}else{const f=new Map;for(let r=0;r<j;r++){const n=a[r];let c=f.get(n);c===void 0&&(c=t++,f.set(n,c)),u[r]=c}}const m=se(R,u,j,t),e=new Array(t);for(let f=0;f<t;f++){const r=m[f][0],n=new Array(h.length);for(let c=0;c<h.length;c++)n[c]=h[c](r);e[f]=n}const d={keys:e,buckets:m};return l&&(d.packed=l),d}}),Ce("packages/core/src/compute/facet.js",function(o,me){"use strict";Object.defineProperty(o,"STRATEGIES",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"GRANULARITIES",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"facetKind",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"orderedReader",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"toNumeric",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"cardinalityOf",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"pickGranularity",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"floorTo",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"advance",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"computeBounds",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"countInto",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"bucketOf",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"facet",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return r}});const ae=me("packages/core/src/compute/handle.js"),he=ae.presenceReader,W=ae.valueReader,U=ae.dictSize,_=ae.dictValue,Z=Object.freeze(["equal","quantile","log"]),E=Object.freeze(["hour","day","week","month","quarter","year"]),z=20,re=50,Y=1e4;function se(n,c){if(!n)return"none";const g=c;if(g&&(g.multi===!0||typeof g.items=="function"))return"category";const A=c&&c.base;if(A==="date"||A==="datetime"||A==="time"||A==="dateString")return"date";switch(n.kind){case"bitset":return"boolean";case"float64":case"int32":return"numeric";case"dictionary":return"category";case"multi":return"category";default:return A==="number"?"numeric":A==="boolean"?"boolean":A==="text"?"category":"none"}}function te(n){const c=n.values,g=n.kind;if((g==="float64"||g==="int32")&&c)return P=>c[P];const A=W(n);return P=>H(A(P))}function H(n){if(typeof n=="number")return n;if(n instanceof Date)return n.getTime();if(n==null||n==="")return NaN;if(typeof n=="boolean")return n?1:0;if(typeof n=="string"){const c=Number(n);if(Number.isFinite(c))return c;const g=Date.parse(n);return Number.isFinite(g)?g:NaN}return NaN}function T(n,c,g,A=re){if(!n)return{cardinality:0,exact:!0};if(n.dict)return{cardinality:U(n.dict),exact:!0};if(n.kind==="bitset")return{cardinality:2,exact:!0};const P=W(n),q=c?c.length:g,L=new Set;for(let v=0;v<q;v++){const G=P(c?c[v]:v);if(G!=null&&(L.add(G),L.size>A))return{cardinality:L.size,exact:!1}}return{cardinality:L.size,exact:!0}}const V=36e5,ne=864e5;function R(n,c=z){const g=Number.isFinite(n)&&n>0?n:0,A=Math.max(1,c)*2;return g/V<=A?"hour":g/ne<=A?"day":g/(7*ne)<=A?"week":g/(30*ne)<=A?"month":g/(91*ne)<=A?"quarter":"year"}function j(n,c){if(!Number.isFinite(n))return NaN;const g=new Date(n);switch(c){case"hour":return g.setMinutes(0,0,0),g.getTime();case"day":return g.setHours(0,0,0,0),g.getTime();case"week":{g.setHours(0,0,0,0);const A=(g.getDay()+6)%7;return g.setDate(g.getDate()-A),g.getTime()}case"month":return g.setDate(1),g.setHours(0,0,0,0),g.getTime();case"quarter":return g.setMonth(Math.floor(g.getMonth()/3)*3,1),g.setHours(0,0,0,0),g.getTime();default:return g.setMonth(0,1),g.setHours(0,0,0,0),g.getTime()}}function i(n,c){const g=new Date(n);switch(c){case"hour":g.setHours(g.getHours()+1);break;case"day":g.setDate(g.getDate()+1);break;case"week":g.setDate(g.getDate()+7);break;case"month":g.setMonth(g.getMonth()+1);break;case"quarter":g.setMonth(g.getMonth()+3);break;default:g.setFullYear(g.getFullYear()+1);break}return g.getTime()}function a(n,c,g){const A=te(n),P=he(n),q=c?c.length:g;let L=1/0,v=-1/0,G=0,S=0;for(let N=0;N<q;N++){const I=c?c[N]:N;if(P&&!P(I)){G++;continue}const K=A(I);if(!Number.isFinite(K)){G++;continue}K<L&&(L=K),K>v&&(v=K),S++}return{min:L,max:v,nulls:G,finite:S}}function s(n,c,g,A){const P=te(n),q=he(n),L=c?c.length:g,v=L>A?L/A:1,G=[];for(let N=0;N<L;N+=v){const I=c?c[Math.floor(N)]:Math.floor(N);if(q&&!q(I))continue;const K=P(I);Number.isFinite(K)&&G.push(K)}const S=Float64Array.from(G);return S.sort(),S}function h(n,c,g,A={}){const P=A.kind||se(n,A.type);return P==="none"||!n?{kind:"none",buckets:[],suppressed:"type"}:P==="boolean"?u(n,c,g):P==="category"?t(n,c,g,A):l(n,c,g,P,A)}function u(n,c,g){const A=he(n);let P=0;if(A){const L=c?c.length:g;for(let v=0;v<L;v++)A(c?c[v]:v)||P++}const q=[{value:!1,label:"false"},{value:!0,label:"true"}];return P>0&&q.push({null:!0,label:"Empty"}),{kind:"boolean",buckets:q}}function t(n,c,g,A){const P=A.cardinalityLimit??re,{cardinality:q}=T(n,c,g,P);if(q>P&&(A.aboveLimit||"suppress")==="suppress")return{kind:"category",buckets:[],suppressed:"cardinality",cardinality:q};const L=W(n),v=c?c.length:g,G=new Map;let S=0;for(let ee=0;ee<v;ee++){const J=L(c?c[ee]:ee);if(J==null||J===""){S++;continue}if(Array.isArray(J)){if(!J.length){S++;continue}for(const ue of J)G.set(ue,(G.get(ue)||0)+1);continue}G.set(J,(G.get(J)||0)+1)}let N=[...G.entries()];A.order==="alpha"?N.sort((ee,J)=>String(ee[0]).localeCompare(String(J[0]))):N.sort((ee,J)=>J[1]-ee[1]);let I=0,K=0;if(N.length>P){K=N.length-P;for(let ee=P;ee<N.length;ee++)I+=N[ee][1];N=N.slice(0,P)}const B=N.map(([ee])=>({value:ee,label:String(ee)}));return I>0&&B.push({remainder:!0,label:`Other (${K} values)`}),S>0&&B.push({null:!0,label:"Empty"}),{kind:"category",buckets:B,cardinality:q}}function l(n,c,g,A,P){const{min:q,max:L,nulls:v,finite:G}=a(n,c,g);if(!G)return{kind:A,buckets:v?[{null:!0,label:"Empty"}]:[],empty:!0};const S=Math.max(1,Math.floor(P.buckets||z));let N=[];if(A==="date"){const K=E.includes(P.granularity)?P.granularity:R(L-q,S);let B=j(q,K);for(;B<=L&&N.length<4096;){const ee=i(B,K);if(!(ee>B))break;N.push({from:B,to:ee}),B=ee}return{kind:A,buckets:m(N,v),granularity:K}}const I=Z.includes(P.strategy)?P.strategy:"equal";if(I==="quantile"){const K=s(n,c,g,Y);if(K.length){const B=[K[0]];for(let ee=1;ee<S;ee++){const J=K[Math.min(K.length-1,Math.floor(ee/S*K.length))];J>B[B.length-1]&&B.push(J)}B.push(L);for(let ee=0;ee<B.length-1;ee++)N.push({from:B[ee],to:B[ee+1]})}}else if(I==="log"&&q>0){const K=Math.log10(q),ee=(Math.log10(L)-K)/S||1;for(let J=0;J<S;J++)N.push({from:10**(K+J*ee),to:10**(K+(J+1)*ee)})}if(!N.length){const K=(L-q)/S||1;for(let B=0;B<S;B++)N.push({from:q+B*K,to:q+(B+1)*K})}return N[N.length-1].to=L,{kind:A,buckets:m(N,v),strategy:I,min:q,max:L}}function m(n,c){return c>0?[...n,{null:!0,label:"Empty"}]:n}function e(n,c,g,A,P){const q=A&&A.buckets||[],L=P&&P.length>=q.length?P.subarray(0,q.length):new Uint32Array(q.length);if(L.fill(0),!n||!q.length)return L;const v=q.length-1,G=!!q[v]&&q[v].null===!0,S=c?c.length:g;if(A.kind==="boolean"){const ee=W(n);for(let J=0;J<S;J++){const ue=ee(c?c[J]:J);if(ue==null){G&&L[v]++;continue}L[ue?1:0]++}return L}if(A.kind==="category"){const ee=new Map;for(let de=0;de<q.length;de++)!q[de].null&&!q[de].remainder&&ee.set(q[de].value,de);const J=q.findIndex(de=>de.remainder),ue=W(n);for(let de=0;de<S;de++){const Oe=ue(c?c[de]:de);if(Oe==null||Oe===""){G&&L[v]++;continue}if(Array.isArray(Oe)){if(!Oe.length){G&&L[v]++;continue}for(const Se of Oe){const D=ee.get(Se);D!==void 0?L[D]++:J>=0&&L[J]++}continue}const Ae=ee.get(Oe);Ae!==void 0?L[Ae]++:J>=0&&L[J]++}return L}const N=G?q.length-1:q.length,I=new Float64Array(N+1);for(let ee=0;ee<N;ee++)I[ee]=q[ee].from;I[N]=N?q[N-1].to:0;const K=te(n),B=he(n);for(let ee=0;ee<S;ee++){const J=c?c[ee]:ee;if(B&&!B(J)){G&&L[v]++;continue}const ue=K(J);if(!Number.isFinite(ue)){G&&L[v]++;continue}const de=d(I,N,ue);de>=0&&L[de]++}return L}function d(n,c,g){if(!c||g<n[0])return-1;if(g>=n[c])return g===n[c]?c-1:-1;let A=0,P=c-1;for(;A<P;){const q=A+P+1>>>1;g>=n[q]?A=q:P=q-1}return A}function f(n,c,g,A={}){const P=A.bounds||h(n,A.boundsIndices??c,g,A);return{bounds:P,counts:e(n,c,g,P)}}const r=f}),Ce("packages/core/src/compute/special.js",function(o,me){"use strict";Object.defineProperty(o,"logGamma",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"incompleteBeta",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"normalQuantile",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"normalCdf",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"studentT",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"studentTQuantile",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"regularizedGammaP",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"chiSquareCdf",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"chiSquareUpperTail",{enumerable:!0,get:function(){return ne}});const ae=Object.freeze([676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23]),he=3e-12,W=1e-300;function U(R){if(R<.5)return Math.log(Math.PI/Math.sin(Math.PI*R))-U(1-R);const j=R-1;let i=.9999999999998099;const a=j+7.5;for(let s=0;s<ae.length;s++)i+=ae[s]/(j+s+1);return .5*Math.log(2*Math.PI)+(j+.5)*Math.log(a)-a+Math.log(i)}function _(R,j,i){const a=R+j,s=R+1,h=R-1;let u=1,t=1-a*i/s;Math.abs(t)<W&&(t=W),t=1/t;let l=t;for(let m=1;m<=300;m++){const e=2*m;let d=m*(j-m)*i/((h+e)*(R+e));t=1+d*t,Math.abs(t)<W&&(t=W),u=1+d/u,Math.abs(u)<W&&(u=W),t=1/t,l*=t*u,d=-(R+m)*(a+m)*i/((R+e)*(s+e)),t=1+d*t,Math.abs(t)<W&&(t=W),u=1+d/u,Math.abs(u)<W&&(u=W),t=1/t;const f=t*u;if(l*=f,Math.abs(f-1)<he)break}return l}function Z(R,j,i){if(!(R>0)||!(j>0)||!Number.isFinite(i))return Number.NaN;if(i<=0)return 0;if(i>=1)return 1;const a=Math.exp(U(R+j)-U(R)-U(j)+R*Math.log(i)+j*Math.log(1-i));return i<(R+1)/(R+j+2)?a*_(R,j,i)/R:1-a*_(j,R,1-i)/j}function E(R){if(!(R>0)||!(R<1))return R===0?-1/0:R===1?1/0:Number.NaN;const j=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],i=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572],a=[-.007784894002430293,-.3223964580411365,-2.400758277161838,-2.549732539343734,4.374664141464968,2.938163982698783],s=[.007784695709041462,.3224671290700398,2.445134137142996,3.754408661907416],h=.02425;let u,t,l;R<h?(u=Math.sqrt(-2*Math.log(R)),l=(((((a[0]*u+a[1])*u+a[2])*u+a[3])*u+a[4])*u+a[5])/((((s[0]*u+s[1])*u+s[2])*u+s[3])*u+1)):R<=1-h?(u=R-.5,t=u*u,l=(((((j[0]*t+j[1])*t+j[2])*t+j[3])*t+j[4])*t+j[5])*u/(((((i[0]*t+i[1])*t+i[2])*t+i[3])*t+i[4])*t+1)):(u=Math.sqrt(-2*Math.log(1-R)),l=-(((((a[0]*u+a[1])*u+a[2])*u+a[3])*u+a[4])*u+a[5])/((((s[0]*u+s[1])*u+s[2])*u+s[3])*u+1));const e=(.5*z(-l/Math.SQRT2)-R)*Math.sqrt(2*Math.PI)*Math.exp(l*l/2);return l-e/(1+l*e/2)}function z(R){const j=Math.abs(R),i=2/(2+j),a=4*i-2,s=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,15626441722e-18,-85238095915e-18,6529054439e-18,5059343495e-18,-991364156e-18,-227365122e-18,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18];let h=0,u=0,t;for(let m=s.length-1;m>0;m--)t=u,u=a*u-h+s[m],h=t;const l=i*Math.exp(-j*j+.5*(s[0]+a*u)-h);return R>=0?l:2-l}function re(R){return .5*z(-R/Math.SQRT2)}function Y(R,j){if(!(j>0)||!Number.isFinite(R))return Number.NaN;const i=.5*Z(j/2,.5,j/(j+R*R));return R>0?1-i:i}function se(R,j){if(!(R>0)||!(R<1)||!(j>0))return Number.NaN;if(j>1e7)return E(R);let i=-1e4,a=1e4,s=E(R);const h=U(j/2)+U(.5)-U((j+1)/2);for(let u=0;u<60;u++){const t=Y(s,j);t<R?i=s:a=s;const l=Math.exp(-((j+1)/2)*Math.log(1+s*s/j)-h)/Math.sqrt(j),m=l>0?(t-R)/l:0;if(Math.abs(m)<1e-12)break;const e=s-m;if(s=e>i&&e<a&&Number.isFinite(e)?e:(i+a)/2,a-i<1e-12)break}return s}function te(R,j){let i=R,a=1/R,s=a;for(let h=0;h<300&&(i+=1,s*=j/i,a+=s,!(Math.abs(s)<Math.abs(a)*he));h++);return a*Math.exp(-j+R*Math.log(j)-U(R))}function H(R,j){let i=j+1-R,a=1/W,s=1/i,h=s;for(let u=1;u<=300;u++){const t=-u*(u-R);i+=2,s=t*s+i,Math.abs(s)<W&&(s=W),a=i+t/a,Math.abs(a)<W&&(a=W),s=1/s;const l=s*a;if(h*=l,Math.abs(l-1)<he)break}return Math.exp(-j+R*Math.log(j)-U(R))*h}function T(R,j){return!(R>0)||!(j>=0)||!Number.isFinite(j)?Number.NaN:j===0?0:j<R+1?te(R,j):1-H(R,j)}function V(R,j){return j>0?T(j/2,R/2):Number.NaN}function ne(R,j){const i=V(R,j);return Number.isNaN(i)?Number.NaN:Math.min(1,Math.max(0,1-i))}}),Ce("packages/core/src/compute/linalg.js",function(o,me){"use strict";Object.defineProperty(o,"cholesky",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"choleskySolve",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"choleskyInverse",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"normalEquations",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"matVec",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"quadForm",{enumerable:!0,get:function(){return Z}});function ae(E){const z=E.length,re=Array.from({length:z},()=>new Array(z).fill(0));for(let Y=0;Y<z;Y++)for(let se=0;se<=Y;se++){let te=E[Y][se];for(let H=0;H<se;H++)te-=re[Y][H]*re[se][H];if(Y===se){if(!(te>0))return null;re[Y][se]=Math.sqrt(te)}else re[Y][se]=te/re[se][se]}return re}function he(E,z){const re=E.length,Y=new Array(re).fill(0);for(let te=0;te<re;te++){let H=z[te];for(let T=0;T<te;T++)H-=E[te][T]*Y[T];Y[te]=H/E[te][te]}const se=new Array(re).fill(0);for(let te=re-1;te>=0;te--){let H=Y[te];for(let T=te+1;T<re;T++)H-=E[T][te]*se[T];se[te]=H/E[te][te]}return se}function W(E){const z=E.length,re=Array.from({length:z},()=>new Array(z).fill(0));for(let Y=0;Y<z;Y++){const se=new Array(z).fill(0);se[Y]=1;const te=he(E,se);for(let H=0;H<z;H++)re[H][Y]=te[H]}return re}function U(E,z,re){const Y=E.length,se=Y?E[0].length:0,te=Array.from({length:se},()=>new Array(se).fill(0)),H=new Array(se).fill(0);for(let T=0;T<Y;T++){const V=re?re[T]:1,ne=E[T];for(let R=0;R<se;R++){const j=V*ne[R];H[R]+=j*z[T];for(let i=R;i<se;i++)te[R][i]+=j*ne[i]}}for(let T=0;T<se;T++)for(let V=0;V<T;V++)te[T][V]=te[V][T];return{xtwx:te,xtwy:H}}function _(E,z){return E.map(re=>re.reduce((Y,se,te)=>Y+se*z[te],0))}function Z(E,z){let re=0;for(let Y=0;Y<E.length;Y++){let se=0;for(let te=0;te<E.length;te++)se+=z[Y][te]*E[te];re+=E[Y]*se}return re}}),Ce("packages/core/src/compute/sketch.js",function(o,me){"use strict";Object.defineProperty(o,"Welford",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(o,"Reservoir",{enumerable:!0,get:function(){return he}}),Object.defineProperty(o,"hash32",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"HyperLogLog",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"SpaceSaving",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"KLL",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return te}});class ae{#t=0;#e=0;#n=0;static get errorBound(){return Object.freeze({kind:"exact",metric:"none",value:0,statement:"mean and variance match a full recompute to float rounding"})}get count(){return this.#t}add(T){if(!Number.isFinite(T))return;this.#t++;const V=T-this.#e;this.#e+=V/this.#t,this.#n+=V*(T-this.#e)}merge(T){if(T.#t===0)return;if(this.#t===0){this.#t=T.#t,this.#e=T.#e,this.#n=T.#n;return}const V=this.#t+T.#t,ne=T.#e-this.#e;this.#e+=ne*(T.#t/V),this.#n+=T.#n+ne*ne*(this.#t*T.#t/V),this.#t=V}mean(){return this.#t?this.#e:null}variance(){return this.#t>1?this.#n/(this.#t-1):null}varianceP(){return this.#t?this.#n/this.#t:null}stddev(){const T=this.variance();return T===null?null:Math.sqrt(T)}stddevP(){const T=this.varianceP();return T===null?null:Math.sqrt(T)}}class he{#t=[];#e=0;#n;#r;constructor(T,V=Math.random){if(!(T>0))throw new RangeError("reservoir capacity must be positive");this.#n=Math.floor(T),this.#r=V}static get errorBound(){return Object.freeze({kind:"probabilistic",metric:"none",value:0,statement:"uniform sample: each element included with probability capacity/n; sample statistics are unbiased estimators"})}get seen(){return this.#e}get size(){return this.#t.length}add(T){if(!Number.isFinite(T))return;if(this.#e++,this.#t.length<this.#n){this.#t.push(T);return}const V=Math.floor(this.#r()*this.#e);V<this.#n&&(this.#t[V]=T)}sample(){return this.#t.slice()}mean(){if(!this.#t.length)return null;let T=0;for(const V of this.#t)T+=V;return T/this.#t.length}quantile(T){const V=this.#t.length;if(!V)return null;const ne=this.#t.slice().sort((a,s)=>a-s);if(V===1)return ne[0];const R=(V-1)*Math.min(1,Math.max(0,T)),j=Math.floor(R),i=Math.ceil(R);return j===i?ne[j]:ne[j]+(R-j)*(ne[i]-ne[j])}}function W(H){return H^=H>>>16,H=Math.imul(H,2246822507),H^=H>>>13,H=Math.imul(H,3266489909),H^=H>>>15,H>>>0}function U(H){if(typeof H=="number"){const ne=new DataView(new ArrayBuffer(8));return ne.setFloat64(0,H===0?0:H),W(ne.getUint32(0)^ne.getUint32(4))}const T=typeof H=="string"?H:String(H);let V=2166136261;for(let ne=0;ne<T.length;ne++)V^=T.charCodeAt(ne),V=Math.imul(V,16777619);return W(V)}class _{#t;#e;#n;constructor(T=14){const V=Math.floor(T);if(V<4||V>16)throw new RangeError("HLL precision must be 4..16");this.#t=V,this.#e=1<<V,this.#n=new Uint8Array(this.#e)}static errorBoundFor(T=14){const V=1<<Math.floor(T),ne=1.04/Math.sqrt(V);return Object.freeze({kind:"probabilistic",metric:"relative",value:ne,statement:`distinct count within ~${(ne*100).toFixed(2)}% relative standard error (m=${V} buckets)`})}errorBound(){return _.errorBoundFor(this.#t)}add(T){const V=U(T),ne=V&this.#e-1,R=V>>>this.#t|1<<32-this.#t;let j=1,i=R;for(;(i&1)===0;)j++,i>>>=1;j>this.#n[ne]&&(this.#n[ne]=j)}count(){const T=this.#e,V=32-this.#t,ne=new Float64Array(V+2);for(let i=0;i<T;i++)ne[this.#n[i]]++;let R=T*z(1-ne[V+1]/T);for(let i=V;i>=1;i--)R=.5*(R+ne[i]);R+=T*E(ne[0]/T);const j=Z*T*T/R;return Math.round(j)}}const Z=.5/Math.log(2);function E(H){if(H===1)return 1/0;let T=1,V=H,ne;do H*=H,ne=V,V+=H*T,T+=T;while(V!==ne);return V}function z(H){if(H===0||H===1)return 0;let T=1,V=1-H,ne;do H=Math.sqrt(H),ne=V,T*=.5,V-=(1-H)**2*T;while(V!==ne);return V/3}class re{#t=new Map;#e;#n=0;constructor(T){if(!(T>0))throw new RangeError("Space-Saving capacity must be positive");this.#e=Math.floor(T)}errorBoundFor(T){const V=T/this.#e;return Object.freeze({kind:"deterministic",metric:"absolute",value:V,statement:`each count overestimates the truth by at most N/m = ${V.toFixed(2)} (N=${T}, m=${this.#e})`})}get seen(){return this.#n}add(T){this.#n++;const V=this.#t.get(T);if(V){V.count++;return}if(this.#t.size<this.#e){this.#t.set(T,{count:1,error:0});return}let ne,R=1/0;for(const[j,i]of this.#t)i.count<R&&(R=i.count,ne=j);this.#t.delete(ne),this.#t.set(T,{count:R+1,error:R})}top(T=this.#e){return[...this.#t.entries()].map(([ne,R])=>({item:ne,count:R.count,error:R.error})).sort((ne,R)=>R.count-ne.count).slice(0,Math.max(0,Math.floor(T)))}}class Y{#t;#e=[[]];#n=0;#r;#i;constructor(T=200,V=Math.random){this.#t=Math.max(8,Math.floor(T)),this.#r=V,this.#i=2/3}static errorBoundFor(T=200){const V=1/Math.max(8,Math.floor(T));return Object.freeze({kind:"probabilistic",metric:"rank",value:V,statement:`queried quantile\'s true rank within ~${(V*100).toFixed(2)}% of N of the requested rank (k=${T})`})}errorBound(){return Y.errorBoundFor(this.#t)}get count(){return this.#n}#s(T){const ne=this.#e.length-1-T,R=Math.ceil(this.#t*this.#i**ne);return Math.max(2,R)}add(T){Number.isFinite(T)&&(this.#n++,this.#e[0].push(T),this.#e[0].length>=this.#s(0)&&this.#h(0))}#h(T){const V=this.#e[T];V.sort((j,i)=>j-i),T+1>=this.#e.length&&this.#e.push([]);const ne=this.#e[T+1],R=this.#r()<.5?0:1;for(let j=R;j<V.length;j+=2)ne.push(V[j]);this.#e[T]=[];for(let j=0;j<this.#e.length;j++)if(this.#e[j].length>=this.#s(j)){this.#h(j);return}}#u(){const T=[];for(let V=0;V<this.#e.length;V++){const ne=1<<V;for(const R of this.#e[V])T.push({v:R,w:ne})}return T}quantile(T){const V=this.#u();if(!V.length)return null;V.sort((i,a)=>i.v-a.v);let ne=0;for(const i of V)ne+=i.w;const R=Math.min(1,Math.max(0,T))*ne;let j=0;for(const i of V)if(j+=i.w,j>=R)return i.v;return V[V.length-1].v}rank(T){let V=0;for(let ne=0;ne<this.#e.length;ne++){const R=1<<ne;for(const j of this.#e[ne])j<=T&&(V+=R)}return V}}const se=Object.freeze({distinct:_.errorBoundFor(14),median:Y.errorBoundFor(200),p25:Y.errorBoundFor(200),p75:Y.errorBoundFor(200),p90:Y.errorBoundFor(200),p95:Y.errorBoundFor(200),p99:Y.errorBoundFor(200),iqr:Y.errorBoundFor(200),topK:Object.freeze({kind:"deterministic",metric:"absolute",value:0,statement:"each count overestimates the truth by at most N/m; top-K exact when the K-th item exceeds N/m"})}),te={Welford:ae,Reservoir:he,HyperLogLog:_,SpaceSaving:re,KLL:Y,hash32:U,SKETCH_BOUNDS:se}}),Ce("packages/core/src/compute/statistics.js",function(o,me){"use strict";Object.defineProperty(o,"KENDALL_LIMIT",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"MAINTENANCE",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"APPROXIMATE",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"maintenanceOf",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"numbers",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"frequencies",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"herfindahl",{enumerable:!0,get:function(){return l}}),Object.defineProperty(o,"entropy",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"evenness",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"topShare",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"gini",{enumerable:!0,get:function(){return f}}),Object.defineProperty(o,"moments",{enumerable:!0,get:function(){return r}}),Object.defineProperty(o,"quantileSorted",{enumerable:!0,get:function(){return n}}),Object.defineProperty(o,"quantile",{enumerable:!0,get:function(){return c}}),Object.defineProperty(o,"STAT_FNS",{enumerable:!0,get:function(){return A}}),Object.defineProperty(o,"STAT_LABELS",{enumerable:!0,get:function(){return P}}),Object.defineProperty(o,"weightedAverage",{enumerable:!0,get:function(){return q}}),Object.defineProperty(o,"extremeRow",{enumerable:!0,get:function(){return L}}),Object.defineProperty(o,"correlation",{enumerable:!0,get:function(){return v}}),Object.defineProperty(o,"trimmedMean",{enumerable:!0,get:function(){return G}}),Object.defineProperty(o,"winsorizedMean",{enumerable:!0,get:function(){return S}}),Object.defineProperty(o,"modifiedZOutliers",{enumerable:!0,get:function(){return N}}),Object.defineProperty(o,"jarqueBera",{enumerable:!0,get:function(){return I}}),Object.defineProperty(o,"weightedQuantile",{enumerable:!0,get:function(){return K}}),Object.defineProperty(o,"pairs",{enumerable:!0,get:function(){return B}}),Object.defineProperty(o,"covariance",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(o,"regression",{enumerable:!0,get:function(){return J}}),Object.defineProperty(o,"fitLinearModel",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(o,"ADF_CT_CRITICAL",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(o,"augmentedDickeyFuller",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(o,"autocorrelations",{enumerable:!0,get:function(){return be}}),Object.defineProperty(o,"spearman",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(o,"kendall",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(o,"seriesStats",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(o,"D2_N2",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(o,"D4_N2",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(o,"movingRanges",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(o,"withinSigma",{enumerable:!0,get:function(){return We}}),Object.defineProperty(o,"capability",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(o,"controlLimits",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(o,"westernElectricViolations",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(o,"nelsonViolations",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(o,"CONTROL_RULE_SETS",{enumerable:!0,get:function(){return jt}}),Object.defineProperty(o,"controlViolations",{enumerable:!0,get:function(){return At}}),Object.defineProperty(o,"countOutside",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(o,"histogram",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(o,"DEFAULT_CONFIDENCE",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(o,"meanInterval",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(o,"proportionInterval",{enumerable:!0,get:function(){return St}}),Object.defineProperty(o,"slopeInterval",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(o,"capabilityInterval",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(o,"standardizedMeanDifference",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(o,"normalTotalVariation",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(o,"frequencyMap",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(o,"categoricalDistance",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(o,"SUBSET_RELIABILITY_FLOOR",{enumerable:!0,get:function(){return st}}),Object.defineProperty(o,"compareColumn",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(o,"isNumericColumn",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(o,"populationRead",{enumerable:!0,get:function(){return Rt}});const ae=me("packages/core/src/compute/handle.js"),he=ae.presenceReader,W=ae.valueReader,U=me("packages/core/src/compute/special.js"),_=U.studentTQuantile,Z=U.studentT,E=U.normalQuantile,z=U.normalCdf,re=U.chiSquareUpperTail,Y=me("packages/core/src/compute/linalg.js"),se=Y.cholesky,te=Y.choleskySolve,H=Y.choleskyInverse,T=Y.normalEquations,V=Y.quadForm,R=me("packages/core/src/compute/sketch.js").SKETCH_BOUNDS,j=5e3,i=Object.freeze({variance:"rescan",varianceP:"rescan",stddev:"rescan",stddevP:"rescan",sumSquares:"rescan",weightedAvg:"rescan",median:"rescan",p25:"rescan",p75:"rescan",p90:"rescan",p95:"rescan",p99:"rescan",iqr:"rescan",mode:"rescan",distinct:"rescan",range:"rescan",skewness:"rescan",kurtosis:"rescan",geomean:"rescan",harmean:"rescan",mad:"rescan",argmin:"rescan",argmax:"rescan",hhi:"rescan",entropy:"rescan",evenness:"rescan",top3Share:"rescan",top10Share:"rescan",gini:"rescan",trimmedMean:"rescan",winsorizedMean:"rescan",robustOutliers:"rescan",jarqueBera:"rescan",passRate:"rescan",failureCount:"rescan"}),a=Object.freeze({distinct:Object.freeze({sketch:"HyperLogLog",bound:R.distinct}),median:Object.freeze({sketch:"KLL",bound:R.median}),p25:Object.freeze({sketch:"KLL",bound:R.p25}),p75:Object.freeze({sketch:"KLL",bound:R.p75}),p90:Object.freeze({sketch:"KLL",bound:R.p90}),p95:Object.freeze({sketch:"KLL",bound:R.p95}),p99:Object.freeze({sketch:"KLL",bound:R.p99}),iqr:Object.freeze({sketch:"KLL",bound:R.iqr}),top3Share:Object.freeze({sketch:"SpaceSaving",bound:R.topK}),top10Share:Object.freeze({sketch:"SpaceSaving",bound:R.topK})});function s(b){const k=b==="sum"||b==="avg"||b==="countValues"||b==="min"||b==="max"?"maintained":Object.prototype.hasOwnProperty.call(i,b)?i[b]:null,y=Object.prototype.hasOwnProperty.call(a,b)?a[b]:null;return{stat:b,exact:k,approximate:y}}function h(b,k){const y=k.length,w=new Float64Array(y);let O=0;if(b&&(b.kind==="float64"||b.kind==="int32")){const F=b.values,C=he(b);for(let ie=0;ie<y;ie++){const oe=k[ie];if(C&&C(oe)!==1)continue;const ke=F[oe];Number.isNaN(ke)||(w[O++]=ke)}return w.subarray(0,O)}const $=W(b);for(let F=0;F<y;F++){const C=$(k[F]);if(C==null||C==="")continue;const ie=typeof C=="number"?C:Number(C);Number.isFinite(ie)&&(w[O++]=ie)}return w.subarray(0,O)}function u(b,k){const y=new Map,w=W(b);let O=0;for(let $=0;$<k.length;$++){const F=w(k[$]);if(F==null||F===""||typeof F=="number"&&Number.isNaN(F))continue;const C=typeof F=="object"?String(F):F;y.set(C,(y.get(C)||0)+1),O++}const M=[...y.values()].sort(($,F)=>F-$);return{counts:M,total:O,distinct:M.length}}function t(b){return b.total>0?b.counts.map(k=>k/b.total):[]}function l(b,k){const y=u(b,k);if(!y.total)return null;let w=0;for(const O of t(y))w+=O*O;return w}function m(b,k){const y=u(b,k);if(!y.total)return null;let w=0;for(const O of t(y))O>0&&(w-=O*Math.log2(O));return w}function e(b,k){const y=u(b,k);if(!y.total||y.distinct<2)return y.total?1:null;let w=0;for(const O of t(y))O>0&&(w-=O*Math.log2(O));return w/Math.log2(y.distinct)}function d(b,k,y=3){const w=u(b,k);if(!w.total)return null;const O=Math.max(1,Math.floor(y));let M=0;for(let $=0;$<Math.min(O,w.counts.length);$++)M+=w.counts[$];return M/w.total}function f(b,k){const y=h(b,k),w=y.length;if(!w)return null;const O=y.slice().sort();if(O[0]<0)return null;let M=0,$=0;for(let F=0;F<w;F++)M+=O[F],$+=(F+1)*O[F];return M===0?0:2*$/(w*M)-(w+1)/w}function r(b){let k=0,y=0,w=0;for(let O=0;O<b.length;O++){const M=b[O];k++;const $=M-y;y+=$/k,w+=$*(M-y)}return{n:k,mean:y,m2:w}}function n(b,k){const y=b.length;if(!y)return NaN;if(y===1)return b[0];const w=(y-1)*Math.min(1,Math.max(0,k)),O=Math.floor(w),M=Math.ceil(w);return O===M?b[O]:b[O]+(w-O)*(b[M]-b[O])}function c(b,k){if(!b.length)return NaN;const y=b.slice().sort();return n(y,k)}function g(b,k){const y=W(b);let w=0,O=0,M=0;for(let $=0;$<k.length;$++){const F=y(k[$]);if(F==null||F==="")continue;const C=String(F).toUpperCase();C==="PASS"?w++:C==="FAIL"?O++:C==="WARN"&&M++}return{pass:w+M,fail:O,warn:M,judged:w+M+O}}const A=Object.freeze({hhi:(b,k)=>l(b,k),entropy:(b,k)=>m(b,k),evenness:(b,k)=>e(b,k),top3Share:(b,k)=>d(b,k,3),top10Share:(b,k)=>d(b,k,10),gini:(b,k)=>f(b,k),trimmedMean:(b,k)=>G(h(b,k),.1),winsorizedMean:(b,k)=>S(h(b,k),.1),robustOutliers:(b,k)=>N(h(b,k),3.5),jarqueBera:(b,k)=>I(h(b,k)),variance:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>1?w/(y-1):null},varianceP:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>0?w/y:null},stddev:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>1?Math.sqrt(w/(y-1)):null},stddevP:(b,k)=>{const{n:y,m2:w}=r(h(b,k));return y>0?Math.sqrt(w/y):null},median:(b,k)=>{const y=h(b,k);return y.length?c(y,.5):null},p25:(b,k)=>{const y=h(b,k);return y.length?c(y,.25):null},p75:(b,k)=>{const y=h(b,k);return y.length?c(y,.75):null},p90:(b,k)=>{const y=h(b,k);return y.length?c(y,.9):null},p95:(b,k)=>{const y=h(b,k);return y.length?c(y,.95):null},p99:(b,k)=>{const y=h(b,k);return y.length?c(y,.99):null},iqr:(b,k)=>{const y=h(b,k);if(!y.length)return null;const w=y.slice().sort();return n(w,.75)-n(w,.25)},mad:(b,k)=>{const y=h(b,k);if(!y.length)return null;const w=c(y,.5),O=new Float64Array(y.length);for(let M=0;M<y.length;M++)O[M]=Math.abs(y[M]-w);return c(O,.5)},range:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=1/0,O=-1/0;for(let M=0;M<y.length;M++)y[M]<w&&(w=y[M]),y[M]>O&&(O=y[M]);return O-w},distinct:(b,k)=>{const y=W(b),w=new Set;for(let O=0;O<k.length;O++){const M=y(k[O]);M==null||M===""||w.add(M instanceof Date?M.getTime():M)}return w.size},mode:(b,k)=>{const y=W(b),w=new Map;for(let $=0;$<k.length;$++){const F=y(k[$]);if(F==null||F==="")continue;const C=F instanceof Date?F.getTime():F;w.set(C,(w.get(C)||0)+1)}let O=null,M=1;for(const[$,F]of w)F>M&&(M=F,O=$);return O},skewness:(b,k)=>{const y=h(b,k),{n:w,mean:O,m2:M}=r(y);if(w<3||M<=0)return null;const $=Math.sqrt(M/(w-1));let F=0;for(let C=0;C<y.length;C++)F+=((y[C]-O)/$)**3;return w/((w-1)*(w-2))*F},kurtosis:(b,k)=>{const y=h(b,k),{n:w,mean:O,m2:M}=r(y);if(w<4||M<=0)return null;const $=Math.sqrt(M/(w-1));let F=0;for(let oe=0;oe<y.length;oe++)F+=((y[oe]-O)/$)**4;const C=w*(w+1)/((w-1)*(w-2)*(w-3)),ie=3*(w-1)**2/((w-2)*(w-3));return C*F-ie},geomean:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=0;for(let O=0;O<y.length;O++){if(y[O]<=0)return null;w+=Math.log(y[O])}return Math.exp(w/y.length)},harmean:(b,k)=>{const y=h(b,k);if(!y.length)return null;let w=0;for(let O=0;O<y.length;O++){if(y[O]===0)return null;w+=1/y[O]}return y.length/w},sumSquares:(b,k)=>{const y=h(b,k);let w=0;for(let O=0;O<y.length;O++)w+=y[O]*y[O];return w},passRate:(b,k)=>{const{pass:y,judged:w}=g(b,k);return w?y/w:null},failureCount:(b,k)=>g(b,k).fail}),P=Object.freeze({hhi:"Concentration (HHI)",entropy:"Entropy",evenness:"Evenness",top3Share:"Top 3 share",top10Share:"Top 10 share",gini:"Gini coefficient",trimmedMean:"Trimmed mean",winsorizedMean:"Winsorized mean",robustOutliers:"Outliers (robust)",jarqueBera:"Jarque–Bera",median:"Median",p25:"25th percentile",p75:"75th percentile",p90:"90th percentile",p95:"95th percentile",p99:"99th percentile",iqr:"Interquartile range",mad:"Median absolute deviation",variance:"Variance",varianceP:"Variance (population)",stddev:"Standard deviation",stddevP:"Standard deviation (population)",range:"Range",distinct:"Distinct",mode:"Mode",skewness:"Skewness",kurtosis:"Kurtosis",geomean:"Geometric mean",harmean:"Harmonic mean",sumSquares:"Sum of squares",weightedAvg:"Weighted average",argmin:"Lowest by",argmax:"Highest by",passRate:"Pass rate",failureCount:"Failures"});function q(b,k,y){const w=W(b),O=W(k);let M=0,$=0;for(let F=0;F<y.length;F++){const C=y[F],ie=Number(w(C)),oe=Number(O(C));!Number.isFinite(ie)||!Number.isFinite(oe)||(M+=ie*oe,$+=oe)}return $===0?null:M/$}function L(b,k,y){const w=W(b);let O=null,M=y?-1/0:1/0;for(let $=0;$<k.length;$++){const F=k[$],C=Number(w(F));Number.isFinite(C)&&(y?C>M:C<M)&&(M=C,O=F)}return O}function v(b,k,y){const w=W(b),O=W(k);let M=0,$=0,F=0,C=0,ie=0,oe=0;for(let pe=0;pe<y.length;pe++){const ve=y[pe],Le=Number(w(ve)),we=Number(O(ve));!Number.isFinite(Le)||!Number.isFinite(we)||(M++,$+=Le,F+=we,C+=Le*Le,ie+=we*we,oe+=Le*we)}if(M<2)return null;const ke=M*oe-$*F,je=Math.sqrt((M*C-$*$)*(M*ie-F*F));if(je===0)return null;const Pe=ke/je;return Math.max(-1,Math.min(1,Pe))}function G(b,k=.1){const y=b.length;if(!y)return null;const w=Array.from(b).sort((F,C)=>F-C),O=Math.floor(y*Math.min(.49,Math.max(0,k))),M=w.slice(O,y-O);if(!M.length)return n(w,.5);let $=0;for(const F of M)$+=F;return $/M.length}function S(b,k=.1){const y=b.length;if(!y)return null;const w=Array.from(b).sort((C,ie)=>C-ie),O=Math.floor(y*Math.min(.49,Math.max(0,k))),M=w[O],$=w[y-1-O];let F=0;for(const C of w)F+=Math.min($,Math.max(M,C));return F/y}function N(b,k=3.5){if(!b.length)return null;const w=Array.from(b).sort((C,ie)=>C-ie),O=n(w,.5),M=w.map(C=>Math.abs(C-O)).sort((C,ie)=>C-ie),$=n(M,.5);if($===0)return null;let F=0;for(const C of w)Math.abs(.6745*(C-O)/$)>k&&F++;return F}function I(b){const k=b.length;if(k<8)return null;let y=0;for(const C of b)y+=C;y/=k;let w=0,O=0,M=0;for(const C of b){const ie=C-y;w+=ie*ie,O+=ie*ie*ie,M+=ie*ie*ie*ie}if(w/=k,O/=k,M/=k,w===0)return null;const $=O/w**1.5,F=M/(w*w)-3;return k/6*($*$+F*F/4)}function K(b,k,y){const w=[];let O=0;for(let C=0;C<b.length;C++){const ie=Number(b[C]),oe=Number(k[C]);!Number.isFinite(ie)||!Number.isFinite(oe)||oe<=0||(w.push([ie,oe]),O+=oe)}if(!w.length||O<=0)return null;if(w.sort((C,ie)=>C[0]-ie[0]),w.length===1)return w[0][0];const M=[];let $=0;for(const[,C]of w)M.push(($+C/2)/O),$+=C;const F=Math.max(0,Math.min(1,y));if(F<=M[0])return w[0][0];if(F>=M[M.length-1])return w[w.length-1][0];for(let C=1;C<M.length;C++){if(F>M[C])continue;const ie=M[C]-M[C-1],oe=ie>0?(F-M[C-1])/ie:0;return w[C-1][0]+(w[C][0]-w[C-1][0])*oe}return w[w.length-1][0]}function B(b,k,y){const w=W(b),O=W(k),M=new Float64Array(y.length),$=new Float64Array(y.length);let F=0;for(let C=0;C<y.length;C++){const ie=y[C],oe=Number(w(ie)),ke=Number(O(ie));!Number.isFinite(oe)||!Number.isFinite(ke)||(M[F]=oe,$[F]=ke,F++)}return{xs:M.subarray(0,F),ys:$.subarray(0,F),n:F}}function ee(b,k,y,w=!1){const{xs:O,ys:M,n:$}=B(b,k,y);if($<2)return null;let F=0,C=0;for(let oe=0;oe<$;oe++)F+=O[oe],C+=M[oe];F/=$,C/=$;let ie=0;for(let oe=0;oe<$;oe++)ie+=(O[oe]-F)*(M[oe]-C);return ie/(w?$:$-1)}function J(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2)return null;let $=0,F=0;for(let Le=0;Le<M;Le++)$+=w[Le],F+=O[Le];$/=M,F/=M;let C=0,ie=0,oe=0;for(let Le=0;Le<M;Le++){const we=w[Le]-$,De=O[Le]-F;C+=we*we,ie+=we*De,oe+=De*De}if(C===0)return null;const ke=ie/C,je=F-ke*$,Pe=oe===0?1:Math.max(0,Math.min(1,ie*ie/(C*oe))),pe=Math.max(0,oe-ke*ie),ve=M>2?Math.sqrt(pe/(M-2)/C):0;return{slope:ke,intercept:je,r2:Pe,stdError:ve,n:M}}const ue=new Set(["ols","wls","robust"]),de=new Set(["quantile"]),Oe=new Set(["ridge","lasso","elasticnet","mixed","gls"]),Ae=1.345;function Se(b,k,y){const{xtwx:w,xtwy:O}=T(b,k,y),M=se(w);if(!M)return null;const $=te(M,O),F=H(M),C=D(b,$),ie=k.map((oe,ke)=>oe-C[ke]);return{beta:$,cov:F,fitted:C,residuals:ie}}function D(b,k){return b.map(y=>y.reduce((w,O,M)=>w+O*k[M],0))}function x(b,k){const y=b.length,w=b.map(ie=>ie[k]),O=b.map(ie=>[1,...ie.filter((oe,ke)=>ke!==k)]),M=Se(O,w,null);if(!M)return 1;const $=w.reduce((ie,oe)=>ie+oe,0)/y;let F=0,C=0;for(let ie=0;ie<y;ie++)F+=M.residuals[ie]**2,C+=(w[ie]-$)**2;return C===0?1:Math.max(0,Math.min(1,1-F/C))}function fe(b){const k=[...b].sort((O,M)=>O-M),y=p(k),w=b.map(O=>Math.abs(O-y)).sort((O,M)=>O-M);return p(w)/.6745}function p(b){const k=b.length;if(!k)return 0;const y=Math.floor(k/2);return k%2?b[y]:(b[y-1]+b[y])/2}function Q(b,k,y={}){const w=y.method||"ols";if(Oe.has(w))throw new Error(`[lattice] regression method "${w}" is out of scope; use ols, wls or robust.`);if(de.has(w))throw new Error("[lattice] quantile regression is coming next and not yet available; use ols, wls or robust.");if(!ue.has(w))throw new Error(`[lattice] unknown regression method "${w}"; use ols, wls or robust.`);const O=Array.isArray(k)?k.length:0,M=O&&Array.isArray(b[0])?b[0].length:0,$=M+1;if(!(O>$))return null;for(let Te=0;Te<O;Te++){if(!Number.isFinite(k[Te])||!Array.isArray(b[Te])||b[Te].length!==M)return null;for(let Fe=0;Fe<M;Fe++)if(!Number.isFinite(b[Te][Fe]))return null}let F=null;if(w==="wls"){if(F=y.weights,!Array.isArray(F)||F.length!==O)return null;for(let Te=0;Te<O;Te++)if(!(F[Te]>0)||!Number.isFinite(F[Te]))return null}const C=b.map(Te=>[1,...Te]);let ie,oe=null;if(w==="robust"){if(ie=Se(C,k,null),!ie)return null;for(let Te=0;Te<50;Te++){const Fe=fe(ie.residuals);if(!(Fe>0))break;const Ue=ie.residuals.map(Ge=>{const xe=Math.abs(Ge/Fe);return xe<=Ae?1:Ae/xe}),qe=Se(C,k,Ue);if(!qe)return null;const Je=qe.beta.reduce((Ge,xe,it)=>Math.max(Ge,Math.abs(xe-ie.beta[it])),0);if(ie=qe,oe=Ue,Je<1e-10)break}}else if(ie=Se(C,k,F),!ie)return null;const ke=w==="robust"?oe:F,{beta:je,cov:Pe,fitted:pe,residuals:ve}=ie;let Le=0,we=0,De=0;for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1;Le+=Fe*ve[Te]**2,we+=Fe,De+=Fe*k[Te]}const $e=De/we;let Ke=0;for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1;Ke+=Fe*(k[Te]-$e)**2}const He=O-$,Qe=Le/He,Ve=Ke===0?1:Math.max(0,Math.min(1,1-Le/Ke)),ut=1-(1-Ve)*(O-1)/He,nt=Array.isArray(y.names)&&y.names.length===M?y.names:b[0].map((Te,Fe)=>`x${Fe+1}`),Ze=tt(y.confidence),rt=He>0?_(1-(1-Ze)/2,He):1/0,Lt=je.map((Te,Fe)=>{const Ue=Math.sqrt(Math.max(0,Qe*Pe[Fe][Fe])),qe=Ue>0?Te/Ue:Te===0?0:1/0,Je=Number.isFinite(qe)?2*(1-Z(Math.abs(qe),He)):0,Ge=Number.isFinite(rt)?rt*Ue:null;return{name:Fe===0?"(intercept)":nt[Fe-1],estimate:Te,stdError:Ue,t:qe,p:Math.max(0,Math.min(1,Je)),lower:Ge===null?null:Te-Ge,upper:Ge===null?null:Te+Ge}}),bt=new Array(O),yt=new Array(O);for(let Te=0;Te<O;Te++){const Fe=ke?ke[Te]:1,Ue=Math.max(0,Math.min(1,Fe*V(C[Te],Pe)));bt[Te]=Ue;const qe=(1-Ue)**2;yt[Te]=qe>0&&Qe>0?ve[Te]**2/($*Qe)*(Ue/qe):null}const Ft=b[0].map((Te,Fe)=>{if(M<2)return 1;const Ue=x(b,Fe);return Ue>=1?1/0:1/(1-Ue)});let pt=null;{const Te=ve.map(Ue=>Ue*Ue),Fe=Se(C,Te,null);if(Fe){const Ue=Te.reduce((et,Ct)=>et+Ct,0)/O;let qe=0,Je=0;for(let et=0;et<O;et++)qe+=Fe.residuals[et]**2,Je+=(Te[et]-Ue)**2;const Ge=Je===0?0:Math.max(0,Math.min(1,1-qe/Je)),xe=O*Ge,it=re(xe,M);pt={statistic:xe,df:M,p:it,heteroscedastic:it<.05}}}let wt=null;if(M===1){const Te=b.map((Fe,Ue)=>Ue).sort((Fe,Ue)=>b[Fe][0]-b[Ue][0]);wt={confidence:Ze,points:Te.map(Fe=>{const Ue=C[Fe],qe=Math.sqrt(Math.max(0,Qe*V(Ue,Pe)));return{x:b[Fe][0],yhat:pe[Fe],lower:pe[Fe]-rt*qe,upper:pe[Fe]+rt*qe}})}}return{method:w,coefficients:Lt,r2:Ve,adjR2:ut,n:O,df:He,sigma2:Qe,fitted:pe,residuals:ve,leverage:bt,cooksD:yt,vif:Ft,heteroscedasticity:pt,band:wt,weights:ke?[...ke]:null}}function X(b){const k=b.length,y=Array.from({length:k},(M,$)=>$).sort((M,$)=>b[M]-b[$]),w=new Float64Array(k);let O=0;for(;O<k;){let M=O;for(;M+1<k&&b[y[M+1]]===b[y[O]];)M++;const $=(O+M)/2+1;for(let F=O;F<=M;F++)w[y[F]]=$;O=M+1}return w}const ce=Object.freeze({"1%":-3.9638,"5%":-3.4126,"10%":-3.1279});function le(b){const k=[.01,.05,.1],y=[ce["1%"],ce["5%"],ce["10%"]];if(b<=y[0]){const M=(Math.log(k[1])-Math.log(k[0]))/(y[1]-y[0]);return Math.max(1e-4,Math.min(.01,Math.exp(Math.log(k[0])+M*(b-y[0]))))}if(b>=y[2]){const M=(Math.log(k[2])-Math.log(k[1]))/(y[2]-y[1]);return Math.max(.1,Math.min(.999,Math.exp(Math.log(k[2])+M*(b-y[2]))))}const w=b<y[1]?0:1,O=(b-y[w])/(y[w+1]-y[w]);return Math.exp(Math.log(k[w])+O*(Math.log(k[w+1])-Math.log(k[w])))}function ge(b,k,y,w){const O=y-w,M=w+3,$=new Array(O),F=new Array(O);let C=!0,ie=w;for(let pe=0;pe<O;pe++){const ve=w+pe,Le=new Float64Array(M);Le[0]=1,Le[1]=pe+1,Le[2]=b[ve];for(let we=1;we<=w;we++)Le[2+we]=k[ve-we];for(let we=1;we<M;we++)Number.isFinite(Le[we])||(ie=Math.min(ie,we-3));$[pe]=Le,F[pe]=k[ve],Number.isFinite(F[pe])||(C=!1)}if(!C)return 0;const{xtwx:oe,xtwy:ke}=T($,F,null);let je=0,Pe=1/0;for(let pe=0;pe<=ie;pe++){const ve=pe+3;if(!(O>ve))continue;const Le=new Array(ve);for(let Ve=0;Ve<ve;Ve++)Le[Ve]=oe[Ve].slice(0,ve);const we=se(Le);if(!we)continue;const De=te(we,ke.slice(0,ve));let $e=0;for(let Ve=0;Ve<O;Ve++){const ut=$[Ve];let nt=0;for(let Ze=0;Ze<ve;Ze++)nt+=ut[Ze]*De[Ze];$e+=(F[Ve]-nt)**2}const He=$e/(O-ve)*(O-ve);if(!(He>0))continue;const Qe=O*Math.log(He/O)+2*ve;Qe<Pe&&(Pe=Qe,je=pe)}return je}function Me(b,k={}){const y=[];for(let Pe=0;Pe<b.length;Pe++){const pe=Number(b[Pe]);Number.isFinite(pe)&&y.push(pe)}const w=y.length,O=w-1;if(w<8||O<6)return null;const M=new Array(O);for(let Pe=0;Pe<O;Pe++)M[Pe]=y[Pe+1]-y[Pe];let $=Number.isFinite(k.maxlag)?Math.floor(k.maxlag):Math.ceil(12*(w/100)**.25);$=Math.max(0,Math.min($,Math.floor((O-5)/2)));const F=(Pe,pe)=>{const ve=[],Le=[];for(let we=pe;we<O;we++){const De=[we-pe+1,y[we]];for(let $e=1;$e<=Pe;$e++)De.push(M[we-$e]);ve.push(De),Le.push(M[we])}return Q(ve,Le,{method:"ols"})},C=ge(y,M,O,$),ie=F(C,C);if(!ie||!ie.coefficients[2])return null;const oe=ie.coefficients[2].t,ke=le(oe),je=oe<ce["5%"];return{statistic:oe,usedLag:C,nobs:O-C,criticalValues:{...ce},pValue:ke,pApproximate:!0,stationary:je,verdict:je?"stationary":"non-stationary",regression:"ct"}}function be(b,k={}){const y=[];for(let je=0;je<b.length;je++){const Pe=Number(b[je]);Number.isFinite(Pe)&&y.push(Pe)}const w=y.length;if(w<3)return null;let O=Number.isFinite(k.maxlag)?Math.floor(k.maxlag):Math.min(10,w-1);O=Math.max(1,Math.min(O,w-1));let M=0;for(const je of y)M+=je;M/=w;const $=y.map(je=>je-M);let F=0;for(const je of $)F+=je*je;F/=w;const C=new Array(O+1).fill(0);C[0]=1;for(let je=1;je<=O;je++){let Pe=0;for(let pe=je;pe<w;pe++)Pe+=$[pe]*$[pe-je];C[je]=F>0?Pe/w/F:0}const ie=new Array(O+1).fill(0);ie[0]=1;let oe=[];for(let je=1;je<=O;je++){let Pe=C[je];for(let we=1;we<je;we++)Pe-=oe[we-1]*C[je-we];let pe=1;for(let we=1;we<je;we++)pe-=oe[we-1]*C[we];const ve=pe!==0?Pe/pe:0,Le=new Array(je);for(let we=1;we<je;we++)Le[we-1]=oe[we-1]-ve*oe[je-1-we];Le[je-1]=ve,ie[je]=ve,oe=Le}const ke=1.96/Math.sqrt(w);return{acf:C,pacf:ie,bounds:{upper:ke,lower:-ke},n:w,nlags:O,approximate:!0}}function ye(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2)return null;const $=X(w),F=X(O);let C=0,ie=0;for(let Pe=0;Pe<M;Pe++)C+=$[Pe],ie+=F[Pe];C/=M,ie/=M;let oe=0,ke=0,je=0;for(let Pe=0;Pe<M;Pe++){const pe=$[Pe]-C,ve=F[Pe]-ie;oe+=pe*ve,ke+=pe*pe,je+=ve*ve}return ke===0||je===0?null:Math.max(-1,Math.min(1,oe/Math.sqrt(ke*je)))}function Re(b,k,y){const{xs:w,ys:O,n:M}=B(b,k,y);if(M<2||M>j)return null;let $=0,F=0,C=0,ie=0;for(let je=0;je<M;je++)for(let Pe=je+1;Pe<M;Pe++){const pe=Math.sign(w[je]-w[Pe]),ve=Math.sign(O[je]-O[Pe]),Le=pe*ve;Le>0?$++:Le<0?F++:pe===0&&ve===0||(pe===0?C++:ie++)}const oe=$+F+ie,ke=$+F+C;return oe===0||ke===0?null:($-F)/Math.sqrt(oe*ke)}function Ne(b,k={}){const y=b.length;if(y<2)return null;const w=b[0],O=b[y-1],M=[];for(let we=1;we<y;we++){const De=b[we-1];De!==0&&M.push((b[we]-De)/Math.abs(De))}let $=null;if(M.length>1){let we=0;for(const $e of M)we+=$e;we/=M.length;let De=0;for(const $e of M)De+=($e-we)**2;$=Math.sqrt(De/(M.length-1))}const F=Number(k.periodsPerYear)>0?Number(k.periodsPerYear):null;let C=b[0],ie=0,oe=0,ke=0,je=0;for(let we=1;we<y;we++){if(b[we]>C){C=b[we],ie=we;continue}if(C<=0)continue;const De=(C-b[we])/C;De>oe&&(oe=De,ke=ie,je=we)}let Pe=null;if(y>2){let we=0;for(let Ke=0;Ke<y;Ke++)we+=b[Ke];we/=y;let De=0,$e=0;for(let Ke=0;Ke<y;Ke++){const He=b[Ke]-we;$e+=He*He,Ke>0&&(De+=He*(b[Ke-1]-we))}Pe=$e>0?De/$e:null}let pe=0,ve=0;for(const we of M)we>0?pe++:we<0&&ve++;let Le=null;if(w>0&&O>0){const we=(O/w)**(1/(y-1))-1;Le=F?(1+we)**F-1:we}return{n:y,first:w,last:O,change:O-w,changePercent:w===0?null:(O-w)/Math.abs(w)*100,volatility:$,annualisedVolatility:$!==null&&F?$*Math.sqrt(F):null,growth:Le,maxDrawdown:oe,maxDrawdownFrom:ke,maxDrawdownTo:je,autocorrelation:Pe,upDays:pe,downDays:ve}}const Ee=1.128,Be=3.267;function ze(b){const k=b.length;if(k<2)return null;const y=[];for(let O=1;O<k;O++)y.push(Math.abs(b[O]-b[O-1]));const w=y.reduce((O,M)=>O+M,0)/y.length;return{ranges:y,centre:w,upper:Be*w,lower:0}}function We(b){const k=b.length;if(k<2)return null;let y=0;for(let O=1;O<k;O++)y+=Math.abs(b[O]-b[O-1]);const w=y/(k-1);return{sigma:w/Ee,meanRange:w}}function Xe(b,k){const y=b.length;if(y<2||!k)return null;const w=Number.isFinite(Number(k.lower))?Number(k.lower):null,O=Number.isFinite(Number(k.upper))?Number(k.upper):null;if(w===null&&O===null)return null;let M=0;for(let pe=0;pe<y;pe++)M+=b[pe];M/=y;let $=0;for(let pe=0;pe<y;pe++)$+=(b[pe]-M)**2;const F=Math.sqrt($/(y-1)),C=We(b),ie=C?C.sigma:null,oe=pe=>{if(!pe||pe<=0)return{index:null,k:null};const Le=w!==null&&O!==null?(O-w)/(6*pe):null,we=O!==null?(O-M)/(3*pe):1/0,De=w!==null?(M-w)/(3*pe):1/0;return{index:Le,k:Math.min(we,De)}},ke=oe(ie),je=oe(F);let Pe=0;for(let pe=0;pe<y;pe++){if(w!==null&&b[pe]<w){Pe++;continue}O!==null&&b[pe]>O&&Pe++}return{n:y,mean:M,lower:w,upper:O,target:Number.isFinite(Number(k.target))?Number(k.target):null,sigmaWithin:ie,sigmaOverall:F,cp:ke.index,cpk:ke.k,pp:je.index,ppk:je.k,outOfSpec:Pe,defectRate:y?Pe/y:null}}function Ye(b){const k=b.length;if(k<2)return null;const y=We(b);if(!y||!(y.sigma>0))return null;let w=0;for(let O=0;O<k;O++)w+=b[O];return w/=k,{centre:w,sigma:y.sigma,upper:w+3*y.sigma,lower:w-3*y.sigma}}function Ie(b,k){if(!k||!(k.sigma>0))return[];const y=b.length,{centre:w,sigma:O}=k,M=F=>(b[F]-w)/O,$=[];for(let F=0;F<y;F++){if(Math.abs(M(F))>3&&$.push({index:F,rule:1,description:"beyond three sigma"}),F>=2)for(const C of[1,-1]){let ie=0;for(let oe=F-2;oe<=F;oe++)M(oe)*C>2&&ie++;if(ie>=2){$.push({index:F,rule:2,description:"two of three past two sigma"});break}}if(F>=4)for(const C of[1,-1]){let ie=0;for(let oe=F-4;oe<=F;oe++)M(oe)*C>1&&ie++;if(ie>=4){$.push({index:F,rule:3,description:"four of five past one sigma"});break}}if(F>=7)for(const C of[1,-1]){let ie=!0;for(let oe=F-7;oe<=F;oe++)if(M(oe)*C<=0){ie=!1;break}if(ie){$.push({index:F,rule:4,description:"eight in a row on one side"});break}}}return $}function ft(b,k){if(!k||!(k.sigma>0))return[];const y=b.length,{centre:w,sigma:O}=k,M=C=>(b[C]-w)/O,$=(C,ie,oe,ke)=>{for(const je of[1,-1]){let Pe=0;for(let pe=C;pe<=ie;pe++)M(pe)*je>oe&&Pe++;if(Pe>=ke)return!0}return!1},F=[];for(let C=0;C<y;C++){if(Math.abs(M(C))>3&&F.push({index:C,rule:1,description:"beyond three sigma"}),C>=8)for(const ie of[1,-1]){let oe=!0;for(let ke=C-8;ke<=C;ke++)if(M(ke)*ie<=0){oe=!1;break}if(oe){F.push({index:C,rule:2,description:"nine in a row on one side"});break}}if(C>=5)for(const ie of[1,-1]){let oe=!0;for(let ke=C-4;ke<=C;ke++)if((b[ke]-b[ke-1])*ie<=0){oe=!1;break}if(oe){F.push({index:C,rule:3,description:ie>0?"six rising":"six falling"});break}}if(C>=13){let ie=!0;for(let oe=C-12;oe<=C;oe++){const ke=b[oe]-b[oe-1],je=b[oe+1<=C?oe+1:oe]-b[oe];if(oe+1>C)break;if(ke===0||je===0||ke>0==je>0){ie=!1;break}}ie&&F.push({index:C,rule:4,description:"fourteen alternating"})}if(C>=2&&$(C-2,C,2,2)&&F.push({index:C,rule:5,description:"two of three past two sigma"}),C>=4&&$(C-4,C,1,4)&&F.push({index:C,rule:6,description:"four of five past one sigma"}),C>=14){let ie=!0;for(let oe=C-14;oe<=C;oe++)if(Math.abs(M(oe))>=1){ie=!1;break}ie&&F.push({index:C,rule:7,description:"fifteen within one sigma"})}if(C>=7){let ie=!0;for(let oe=C-7;oe<=C;oe++)if(Math.abs(M(oe))<=1){ie=!1;break}ie&&F.push({index:C,rule:8,description:"eight beyond one sigma"})}}return F}const jt=Object.freeze(["westernElectric","nelson"]);function At(b,k,y="westernElectric"){return String(y)==="nelson"?ft(b,k):Ie(b,k)}function Mt(b,k,y){let w=0;for(let O=0;O<b.length;O++)(b[O]<k||b[O]>y)&&w++;return w}function Pt(b,k,y,w=20){const O=b.length;if(!O)return[];const M=b[0],$=b[O-1];if($===M)return[{from:M,to:$,count:O}];const F=y-k,C=1.5*F;let ie=F>0?Math.max(M,k-C):M,oe=F>0?Math.min($,y+C):$;oe>ie||(ie=M,oe=$);const ke=F>0?2*F/Math.cbrt(O):(oe-ie)/(Math.ceil(Math.log2(O))+1),je=ke>0?Math.min(w,Math.max(1,Math.ceil((oe-ie)/ke))):1,Pe=(oe-ie)/je,pe=[];for(let ve=0;ve<je;ve++)pe.push({from:ie+ve*Pe,to:ie+(ve+1)*Pe,count:0});for(let ve=0;ve<O;ve++){const Le=Math.min(je-1,Math.max(0,Math.floor((b[ve]-ie)/Pe)));pe[Le].count++}return pe[0].from=M,pe[je-1].to=$,pe}const _e=.95;function tt(b){const k=Number(b);return Number.isFinite(k)&&k>0&&k<1?k:_e}function Nt(b,k=_e){const y=b.length;if(y<2)return null;let w=0;for(let oe=0;oe<y;oe++)w+=b[oe];const O=w/y;let M=0;for(let oe=0;oe<y;oe++){const ke=b[oe]-O;M+=ke*ke}const $=Math.sqrt(M/(y-1)),F=tt(k),ie=_(1-(1-F)/2,y-1)*$/Math.sqrt(y);return{mean:O,lower:O-ie,upper:O+ie,margin:ie,n:y,confidence:F}}function St(b,k,y=_e){const w=Number(b),O=Number(k);if(!(O>0)||!(w>=0)||w>O)return null;const M=tt(y),$=E(1-(1-M)/2),F=w/O,C=$*$,ie=1+C/O,oe=(F+C/(2*O))/ie,ke=$/ie*Math.sqrt(F*(1-F)/O+C/(4*O*O));return{proportion:F,lower:Math.max(0,oe-ke),upper:Math.min(1,oe+ke),n:O,confidence:M}}function vt(b,k=_e){if(!b||!(b.n>2)||!Number.isFinite(b.stdError))return null;const y=tt(k),O=_(1-(1-y)/2,b.n-2)*b.stdError;return{slope:b.slope,lower:b.slope-O,upper:b.slope+O,margin:O,confidence:y}}function Tt(b,k,y=_e){const w=Number(b),O=Number(k);if(!Number.isFinite(w)||!(O>1))return null;const M=tt(y),F=E(1-(1-M)/2)*Math.sqrt(1/(9*O)+w*w/(2*(O-1)));return{index:w,lower:w-F,upper:w+F,margin:F,n:O,confidence:M}}function ht(b,k){return!b||!(b.sd>0)||!Number.isFinite(k)||!Number.isFinite(b.mean)?null:(k-b.mean)/b.sd}function dt(b){return Number.isFinite(b)?Math.min(1,Math.max(0,2*z(Math.abs(b)/2)-1)):0}function ot(b,k){const y=new Map,w=W(b);let O=0;for(let M=0;M<k.length;M++){const $=w(k[M]);if($==null||$===""||typeof $=="number"&&Number.isNaN($))continue;const F=$ instanceof Date?$.getTime():typeof $=="object"?String($):$;y.set(F,(y.get(F)||0)+1),O++}return{map:y,total:O}}function mt(b,k,y,w){if(!(k>0)||!(w>0))return null;let O=0;const M=new Set(b.keys());for(const $ of y.keys())M.add($);for(const $ of M){const F=(b.get($)||0)/k,C=(y.get($)||0)/w;O+=Math.abs(F-C)}return O/2}const st=10;function Et(b,k,y){if(y&&y.numeric){const F=h(b,k),{n:C,mean:ie}=r(F),oe=C>0?ht({mean:y.mean,sd:y.sd},ie):null;return{measure:"standardizedMeanDifference",magnitude:oe,distance:oe===null?0:dt(oe),direction:oe===null?0:Math.sign(oe),subsetN:C,populationN:y.n||0,reliable:C>=st}}const{map:O,total:M}=ot(b,k),$=mt(O,M,y.map,y.total);return{measure:"categoricalTotalVariation",magnitude:$,distance:$===null?0:$,direction:0,subsetN:M,populationN:y.total||0,reliable:M>=st}}function gt(b,k){if(b&&(b.kind==="float64"||b.kind==="int32"))return!0;const y=W(b);let w=0,O=0;for(let M=0;M<k.length&&w<200;M++){const $=y(k[M]);if($==null||$==="")continue;if($ instanceof Date)return!1;w++;const F=typeof $=="number"?$:Number($);Number.isFinite(F)&&O++}return w===0?!1:O/w>=.9}function Rt(b,k){if(gt(b,k)){const O=h(b,k),{n:M,mean:$,m2:F}=r(O);return{numeric:!0,mean:$,sd:M>0?Math.sqrt(F/M):0,n:M}}const{map:y,total:w}=ot(b,k);return{numeric:!1,map:y,total:w}}}),Ce("packages/core/src/compute/total.js",function(o,me){"use strict";Object.defineProperty(o,"TOTAL_FNS",{enumerable:!0,get:function(){return h}}),Object.defineProperty(o,"TOTAL_LABELS",{enumerable:!0,get:function(){return u}}),Object.defineProperty(o,"totalLabel",{enumerable:!0,get:function(){return t}}),Object.defineProperty(o,"aggregatesFor",{enumerable:!0,get:function(){return m}}),Object.defineProperty(o,"aggregateAllowed",{enumerable:!0,get:function(){return e}}),Object.defineProperty(o,"collectValues",{enumerable:!0,get:function(){return d}}),Object.defineProperty(o,"total",{enumerable:!0,get:function(){return f}});const ae=me("packages/core/src/internal/util.js"),he=ae.isFunction,W=ae.warnOnce,U=me("packages/core/src/compute/handle.js"),_=U.presenceReader,Z=U.valueComparator,E=U.valueReader,z=me("packages/core/src/compute/statistics.js"),re=z.STAT_FNS,Y=z.STAT_LABELS;function se(r){return!!r&&(r.kind==="float64"||r.kind==="int32")}function te(r,n){const c=n.length;let g=0;if(se(r)){const P=r.values,q=_(r);if(!q){for(let L=0;L<c;L++){const v=P[n[L]];Number.isNaN(v)||(g+=v)}return g}for(let L=0;L<c;L++){const v=n[L];if(q(v)===1){const G=P[v];Number.isNaN(G)||(g+=G)}}return g}const A=E(r);for(let P=0;P<c;P++){const q=s(A(n[P]));q!==null&&(g+=q)}return g}te.kernel=!0;function H(r,n){const c=n.length;let g=0;if(se(r)){const P=r.values,q=_(r);if(!q){for(let L=0;L<c;L++)Number.isNaN(P[n[L]])||g++;return g}for(let L=0;L<c;L++){const v=n[L];q(v)===1&&!Number.isNaN(P[v])&&g++}return g}const A=E(r);for(let P=0;P<c;P++){const q=A(n[P]);q!=null&&!(typeof q=="number"&&Number.isNaN(q))&&g++}return g}H.kernel=!0;function T(r,n){return n.length}T.kernel=!0;function V(r,n){const c=H(r,n);return c===0?null:te(r,n)/c}V.kernel=!0;function ne(r,n,c,g){const A=n.length;if(se(r)){const v=r.values,G=_(r);let S=null;if(!G){for(let N=0;N<A;N++){const I=v[n[N]];Number.isNaN(I)||(S===null||(c<0?I<S:I>S))&&(S=I)}return S}for(let N=0;N<A;N++){const I=n[N];if(G(I)===0)continue;const K=v[I];Number.isNaN(K)||(S===null||(c<0?K<S:K>S))&&(S=K)}return S}const P=E(r),q=Z(g);let L=null;for(let v=0;v<A;v++){const G=P(n[v]);G==null||typeof G=="number"&&Number.isNaN(G)||(L===null||(c<0?q(G,L)<0:q(G,L)>0))&&(L=G)}return L}function R(r,n,c){return ne(r,n,-1,c&&c.locale)}R.kernel=!0;function j(r,n,c){return ne(r,n,1,c&&c.locale)}j.kernel=!0;function i(r,n){return n.length===0?null:E(r)(n[0])}i.kernel=!0;function a(r,n){return n.length===0?null:E(r)(n[n.length-1])}a.kernel=!0;function s(r){if(typeof r=="number")return Number.isNaN(r)?null:r;if(r==null||r===""||typeof r=="boolean")return null;if(r instanceof Date)return r.getTime();const n=Number(r);return Number.isNaN(n)?null:n}const h={sum:te,min:R,max:j,avg:V,count:T,first:i,last:a,countValues:H,...re},u=Object.freeze({...Y,sum:"Sum",avg:"Average",min:"Min",max:"Max",count:"Count",countValues:"Count of values",first:"First",last:"Last"});function t(r){return r?typeof r=="string"?u[r]||r:"Total":""}const l=Object.freeze(["sum","avg","min","max","count","countValues","first","last"]);function m(r){const n=r&&r.dataType&&r.dataType.totals&&r.dataType.totals.supported;if(Array.isArray(n))return n.slice();const c=l.filter(g=>g in h);for(const g of Object.keys(h))c.includes(g)||c.push(g);return c}function e(r,n){return typeof n!="string"?!0:m(r).includes(n)}function d(r,n){const c=E(r),g=[];for(let A=0;A<n.length;A++){const P=c(n[A]);P!=null&&g.push(P)}return g}function f(r,n,c,g){const A=n||[];if(typeof c=="string"){const P=h[c];return P?P(r,A,g):(W(`total:${c}`,`unknown total function "${c}"; register it in config.totalFns`),null)}return he(c)?c.kernel===!0?c(r,A,g):c(d(r,A),g||{}):null}}),Ce("packages/core/src/compute/pivot.js",function(o,me){"use strict";Object.defineProperty(o,"KEY_DELIMITER",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"pivotKey",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"joinPath",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"resolvePivotKeys",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"pivot",{enumerable:!0,get:function(){return j}});const he=me("packages/core/src/internal/util.js").warnOnce,U=me("packages/core/src/compute/handle.js").valueComparator,Z=me("packages/core/src/compute/group.js").packKeys,z=me("packages/core/src/compute/total.js").total,re="|",Y="/",se=2e3;function te(s,h,u){return`${s}${re}${h}${re}${u}`}function H(s,h){let u="";for(let t=0;t<s.length;t++){const l=s[t];u+=(t===0?"":h)+(l==null?"":String(l))}return u}function T(s,h,u={}){const t=u.separator||Y,l=h.length,{keyOf:m,readers:e}=Z(s,h,0),d=new Map,f=[],r=[];for(let L=0;L<l;L++){const v=h[L],G=m(v);if(d.has(G))continue;d.set(G,f.length),r.push(G);const S=new Array(e.length);for(let N=0;N<e.length;N++)S[N]=e[N](v);f.push(S)}const n=U(u.locale),c=f.map((L,v)=>v);c.sort((L,v)=>{const G=f[L],S=f[v];for(let N=0;N<G.length;N++){const I=V(G[N],S[N],n);if(I!==0)return I}return L-v});const g=new Array(c.length),A=new Array(c.length),P=new Map;for(let L=0;L<c.length;L++){const v=c[L];g[L]=f[v],A[L]=H(f[v],t),P.set(r[v],L)}return{keys:g,paths:A,idOf:L=>{const v=P.get(m(L));return v===void 0?-1:v}}}function V(s,h,u){const t=s==null,l=h==null;return t||l?t&&l?0:t?1:-1:u(s,h)}function ne(s){const h=s.values||s.totals||[];if(h.length&&typeof h[0]=="object"&&h[0]!==null)return h.filter(m=>m&&m.handle);const u=typeof s.handle=="function"?s.handle:null;if(!u)return h.length&&he("pivot:handles","pivot was given total column ids but no handle(colId) resolver, so no cell values were reduced. Pass values: [{ colId, handle, fn }] or opts.handle."),[];const t=typeof s.totalOf=="function"?s.totalOf:null,l=[];for(const m of h){const e=u(m);e&&l.push({colId:m,handle:e,fn:t?t(m):"sum"})}return l}function R(s,h,u){if(Array.isArray(s)){const t=u||{};return{...t,pivotHandles:s,order:h||null,groups:t.groups||null}}return s||{}}function j(s,h,u){const t=R(s,h,u),l=t.separator||Y,m=ne(t),e=t.maxColumns===void 0?se:t.maxColumns,d=t.groups&&t.groups.buckets?t.groups:null,f=d?d.buckets:[t.order||new Uint32Array(0)],r=t.groupPaths||(d?d.keys.map(G=>H(G,l)):[""]),n=a(f),{keys:c,paths:g,idOf:A}=T(t.pivotHandles||[],n,t),P=g.length*Math.max(1,m.length),q=i(g,m,l);if(e&&P>e){const G=new Map;return{keys:c,paths:g,fields:q,groupPaths:r,columns:P,values:G,cells:G,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${P} columns, above pivot.maxColumns of ${e}. Narrow the pivot columns or raise the limit.`,columns:P,maxColumns:e}}}const L=new Map,v=g.length;for(let G=0;G<f.length;G++){const S=f[G],N=r[G]===void 0?"":r[G],I=S.length;if(I===0)continue;const K=new Int32Array(I),B=new Uint32Array(v+1);for(let ue=0;ue<I;ue++){const de=A(S[ue]);K[ue]=de,de>=0&&B[de+1]++}for(let ue=0;ue<v;ue++)B[ue+1]+=B[ue];const ee=new Uint32Array(I),J=B.slice(0,v);for(let ue=0;ue<I;ue++){const de=K[ue];de>=0&&(ee[J[de]++]=S[ue])}for(let ue=0;ue<v;ue++){const de=B[ue],Oe=B[ue+1];if(Oe===de)continue;const Ae=ee.subarray(de,Oe);for(let Se=0;Se<m.length;Se++){const D=m[Se],x=z(D.handle,Ae,D.fn,t.totalContext||{locale:t.locale});L.set(te(N,g[ue],D.colId),x)}}}return{keys:c,paths:g,fields:q,groupPaths:r,columns:P,values:L,cells:L,error:null}}function i(s,h,u){if(h.length===0)return s.slice();const t=[];for(const l of s)for(const m of h)t.push(`${l}${u}${m.colId}`);return t}function a(s){if(s.length===1)return s[0]||new Uint32Array(0);let h=0;for(const l of s)h+=l?l.length:0;const u=new Uint32Array(h);let t=0;for(const l of s)!l||l.length===0||(u.set(l,t),t+=l.length);return u}}),Ce("packages/core/src/compute/pivotmatrix.js",function(o,me){"use strict";Object.defineProperty(o,"GRAND_PATH",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"resolveAxis",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"pivotMatrix",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"cellKey",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"marginKey",{enumerable:!0,get:function(){return j}});const he=me("packages/core/src/compute/handle.js").valueComparator,U=me("packages/core/src/compute/total.js").total,Z=me("packages/core/src/compute/group.js").packKeys,E=me("packages/core/src/compute/pivot.js"),z=E.joinPath,re=E.DEFAULT_PATH_SEPARATOR,Y=E.DEFAULT_MAX_COLUMNS,se="";function te(i,a,s={}){const h=s.separator||re,u=i||[],t=a instanceof Uint32Array?a:Uint32Array.from(a||[]),l=t.length;if(u.length===0)return{tuples:[[]],paths:[se],buckets:[t]};const{keyOf:m,readers:e}=Z(u,t,0),d=new Map,f=[],r=[],n=[];for(let L=0;L<l;L++){const v=t[L],G=m(v);let S=d.get(G);if(S===void 0){S=f.length,d.set(G,S),r.push(G);const N=new Array(e.length);for(let I=0;I<e.length;I++)N[I]=e[I](v);f.push(N),n.push([])}n[S].push(v)}const c=he(s.locale),g=f.map((L,v)=>v);g.sort((L,v)=>{const G=f[L],S=f[v];for(let N=0;N<G.length;N++){const I=H(G[N],S[N],c);if(I!==0)return I}return L-v});const A=new Array(g.length),P=new Array(g.length),q=new Array(g.length);for(let L=0;L<g.length;L++){const v=g[L];A[L]=f[v],P[L]=z(f[v],h),q[L]=Uint32Array.from(n[v])}return{tuples:A,paths:P,buckets:q}}function H(i,a,s){const h=i==null,u=a==null;return h||u?h&&u?0:h?1:-1:s(i,a)}function T(i,a,s){const h=[];for(let u=0;u<i.length;u++)s.has(i[u])&&h.push(i[u]);return Uint32Array.from(h)}function V(i,a,s,h){return{value:a.length?U(i,a,s,h):null,leaves:a,count:a.length}}function ne(i){const a=i&&i.opts||{},s=a.separator||re,h=a.totalContext||{locale:a.locale},u=(i.measures||[]).filter(P=>P&&P.handle),t=i.leaves instanceof Uint32Array?i.leaves:Uint32Array.from(i.leaves||[]),l=te(i.rowHandles||[],t,{...a,separator:s}),m=te(i.columnHandles||[],t,{...a,separator:s}),e=a.maxColumns===void 0?Y:a.maxColumns,d=m.paths.length*Math.max(1,u.length),f=new Map;if(e&&d>e)return{rowAxis:l,columnAxis:m,measures:u.map(P=>({colId:P.colId,fn:P.fn})),body:f,rowMargin:f,columnMargin:f,grand:f,columns:d,error:{code:"pivot-max-columns",message:`[lattice] pivot would generate ${d} columns, above pivot.maxColumns of ${e}. Narrow the pivot columns or raise the limit.`,columns:d,maxColumns:e}};const r=new Map,n=new Map,c=new Map,g=new Map,A=m.buckets.map(P=>new Set(P));for(let P=0;P<m.paths.length;P++){const q=m.buckets[P],L=m.paths[P];for(const v of u)c.set(j(L,v.colId),V(v.handle,q,v.fn,h))}for(let P=0;P<l.paths.length;P++){const q=l.buckets[P],L=l.paths[P];for(const v of u)n.set(j(L,v.colId),V(v.handle,q,v.fn,h));for(let v=0;v<m.paths.length;v++){const G=T(q,m.buckets[v],A[v]);if(G.length===0)continue;const S=m.paths[v];for(const N of u)r.set(R(L,S,N.colId),V(N.handle,G,N.fn,h))}}for(const P of u)g.set(P.colId,V(P.handle,t,P.fn,h));return{rowAxis:l,columnAxis:m,measures:u.map(P=>({colId:P.colId,fn:P.fn})),body:r,rowMargin:n,columnMargin:c,grand:g,columns:d,error:null}}function R(i,a,s){return`${i}\\0${a}\\0${s}`}function j(i,a){return`${i}\\0${a}`}}),Ce("packages/core/src/compute/reference.js",function(o,me){"use strict";Object.defineProperty(o,"referenceValue",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"referenceSort",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"referenceFilter",{enumerable:!0,get:function(){return H}}),Object.defineProperty(o,"referencePasses",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"referenceGroup",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"referenceTotal",{enumerable:!0,get:function(){return ne}});const he=me("packages/core/src/internal/util.js").getPath,W=me("packages/core/src/compute/handle.js"),U=W.isMissing,_=W.valueComparator,E=me("packages/core/src/compute/filter.js").testValue,z="",re="\\0";function Y(i,a){const s=a.includes(".")?he(i,a):i?.[a];return s===void 0?null:s}function se(i,a,s={}){const h=a||[];let u=i.map((t,l)=>l);if(h.length===0)return u;for(let t=h.length-1;t>=0;t--)u=te(i,u,h[t],s);return u}function te(i,a,s,h){const u=s.locale!==void 0?s.locale:h.locale,t=_(u),l=s.descending!==void 0?!!s.descending:s.dir==="desc",m=[],e=[];for(const r of a){const n=Y(i[r],s.col);U(n)?e.push(r):m.push(r)}const d=new Map;for(let r=0;r<m.length;r++)d.set(m[r],r);const f=(r,n)=>{const c=Y(i[r],s.col),g=Y(i[n],s.col);let A;return typeof s.compare=="function"?(A=s.compare(c,g,i[r],i[n],l),l&&(A=-A)):A=l?t(g,c):t(c,g),A!==0?A:d.get(r)-d.get(n)};return m.sort(f),s.nullsFirst?e.concat(m):m.concat(e)}function H(i,a,s={}){const h=[];for(let u=0;u<i.length;u++)T(i[u],a,s,u)&&h.push(u);return h}function T(i,a,s,h){if(!a)return!0;if(Array.isArray(a.conditions)){const u=a.conditions.filter(l=>l!=null);if(u.length===0)return!0;if(a.op==="or")return u.some(l=>T(i,l,s,h));const t=u.every(l=>T(i,l,s,h));return a.op==="not"?!t:t}return a.col===void 0&&typeof s.custom=="function"?!!s.custom(a,i,h):E(Y(i,a.col),a,s.locale)}function V(i,a,s,h){const u=s||i.map((e,d)=>d),t=new Map,l=[],m=[];for(const e of u){const d=a.map((n,c)=>{const g=Y(i[e],n);return h&&h[c]?h[c](g):g}),f=d.map(n=>n==null?re:String(n)).join(z);let r=t.get(f);r===void 0&&(r=l.length,t.set(f,r),l.push(d),m.push([])),m[r].push(e)}return{keys:l,buckets:m}}function ne(i,a,s={}){const h=_(s.locale),u=i.filter(l=>!U(l)),t=u.map(R).filter(l=>l!==null);switch(a){case"count":return i.length;case"countValues":return u.length;case"sum":return t.reduce((l,m)=>l+m,0);case"avg":return u.length===0?null:t.reduce((l,m)=>l+m,0)/u.length;case"min":return u.length===0?null:u.reduce((l,m)=>h(m,l)<0?m:l);case"max":return u.length===0?null:u.reduce((l,m)=>h(m,l)>0?m:l);case"first":return i.length===0?null:j(i[0]);case"last":return i.length===0?null:j(i[i.length-1]);default:return null}}function R(i){if(typeof i=="number")return Number.isNaN(i)?null:i;if(i==null||i===""||typeof i=="boolean")return null;if(i instanceof Date)return i.getTime();const a=Number(i);return Number.isNaN(a)?null:a}function j(i){return i===void 0?null:i}}),Ce("packages/core/src/compute/windowed.js",function(o,me){"use strict";Object.defineProperty(o,"Window",{enumerable:!0,get:function(){return W}}),Object.defineProperty(o,"WINDOW_KINDS",{enumerable:!0,get:function(){return U}}),Object.defineProperty(o,"openWindow",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return Z}});const he=me("packages/core/src/compute/sketch.js").Welford;class W{#t;#e;#n=[];#r;#i;constructor(z,re=0,Y=Date.now){if(z!=="count"&&z!=="time"&&z!=="session")throw new RangeError(`unknown window kind: ${z}`);if((z==="count"||z==="time")&&!(re>0))throw new RangeError(`a ${z} window needs a positive span`);this.#t=z,this.#e=Math.floor(re),this.#r=Y,this.#i=Y()}get size(){return this.#n.length}push(z,re=this.#r()){Number.isFinite(z)&&(this.#n.push({t:re,v:z}),this.#s(re))}#s(z){if(this.#t==="count")for(;this.#n.length>this.#e;)this.#n.shift();else if(this.#t==="time"){const re=z-this.#e;for(;this.#n.length&&this.#n[0].t<re;)this.#n.shift()}}spec(){const z=this.#t==="session"?this.#r()-this.#i:this.#e;return{kind:this.#t,span:z,size:this.#n.length}}values(){return this.#n.map(z=>z.v)}aggregate(){const z=this.spec();if(!this.#n.length)return{over:z,count:0,sum:null,mean:null,min:null,max:null,variance:null,stddev:null};const re=new he;let Y=0,se=1/0,te=-1/0;for(const{v:H}of this.#n)Y+=H,H<se&&(se=H),H>te&&(te=H),re.add(H);return{over:z,count:this.#n.length,sum:Y,mean:re.mean(),min:se,max:te,variance:re.variance(),stddev:re.stddev()}}reduce(z){const re=this.aggregate(),Y={sum:re.sum,avg:re.mean,mean:re.mean,min:re.min,max:re.max,count:re.count,variance:re.variance,stddev:re.stddev};if(!(z in Y))throw new RangeError(`unknown windowed aggregate: ${z}`);return{value:Y[z],over:re.over}}}const U=Object.freeze(["count","time","session"]);function _(E,z=Date.now){const re=E.kind==="time"&&E.minutes!=null?E.minutes*6e4:E.span??0;return new W(E.kind,re,z)}const Z={Window:W,WINDOW_KINDS:U,openWindow:_}}),Ce("packages/core/src/compute/anomaly.js",function(o,me){"use strict";Object.defineProperty(o,"MAD_SCALE",{enumerable:!0,get:function(){return _}}),Object.defineProperty(o,"DEFAULT_MODIFIED_Z_THRESHOLD",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"DEFAULT_IQR_K",{enumerable:!0,get:function(){return E}}),Object.defineProperty(o,"DEFAULT_CHI_SQUARE_P",{enumerable:!0,get:function(){return z}}),Object.defineProperty(o,"ANOMALY_METHODS",{enumerable:!0,get:function(){return re}}),Object.defineProperty(o,"robustSpread",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(o,"modifiedZScores",{enumerable:!0,get:function(){return se}}),Object.defineProperty(o,"iqrFences",{enumerable:!0,get:function(){return te}}),Object.defineProperty(o,"chiSquareCdf",{enumerable:!0,get:function(){return T}}),Object.defineProperty(o,"chiSquareQuantile",{enumerable:!0,get:function(){return V}}),Object.defineProperty(o,"mahalanobis",{enumerable:!0,get:function(){return j}}),Object.defineProperty(o,"DEFAULT_ROLLING_WINDOW",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"rollingAnomalies",{enumerable:!0,get:function(){return s}}),Object.defineProperty(o,"anomalyCondition",{enumerable:!0,get:function(){return h}});const he=me("packages/core/src/compute/statistics.js").quantileSorted,U=me("packages/core/src/compute/special.js").logGamma,_=.6745,Z=3.5,E=1.5,z=.975,re=Object.freeze(["modifiedZScore","iqr","mahalanobis"]);function Y(u){if(!u.length)return null;const l=Array.from(u,Number).sort((f,r)=>f-r),m=he(l,.5),e=l.map(f=>Math.abs(f-m)).sort((f,r)=>f-r),d=he(e,.5);return{median:m,mad:d}}function se(u,t={}){const l=Number.isFinite(t.threshold)?t.threshold:Z,m=u.length,e=new Array(m).fill(null),d=new Array(m).fill(!1),f=[];for(let c=0;c<m;c++){const g=Number(u[c]);Number.isFinite(g)&&f.push(g)}if(!f.length)return{median:null,mad:null,threshold:l,scores:e,flags:d,flagged:0};const r=Y(f);if(r.mad===0)return{median:r.median,mad:0,threshold:l,scores:e,flags:d,flagged:0};let n=0;for(let c=0;c<m;c++){const g=Number(u[c]);if(!Number.isFinite(g))continue;const A=_*(g-r.median)/r.mad;e[c]=A,Math.abs(A)>l&&(d[c]=!0,n++)}return{median:r.median,mad:r.mad,threshold:l,scores:e,flags:d,flagged:n}}function te(u,t={}){const l=Number.isFinite(t.k)?t.k:E,m=[];for(let n=0;n<u.length;n++){const c=Number(u[n]);Number.isFinite(c)&&m.push(c)}if(!m.length)return null;const e=m.sort((n,c)=>n-c),d=he(e,.25),f=he(e,.75),r=f-d;return{q1:d,q3:f,iqr:r,lower:d-l*r,upper:f+l*r,k:l}}function H(u,t){if(t<=0)return 0;const l=U(u);if(t<u+1){let c=u,g=1/u,A=g;for(let P=0;P<1e3&&(c+=1,A*=t/c,g+=A,!(Math.abs(A)<Math.abs(g)*1e-15));P++);return g*Math.exp(-t+u*Math.log(t)-l)}const m=1e-300;let e=t+1-u,d=1/m,f=1/e,r=f;for(let c=1;c<1e3;c++){const g=-c*(c-u);e+=2,f=g*f+e,Math.abs(f)<m&&(f=m),d=e+g/d,Math.abs(d)<m&&(d=m),f=1/f;const A=f*d;if(r*=A,Math.abs(A-1)<1e-15)break}return 1-Math.exp(-t+u*Math.log(t)-l)*r}function T(u,t){return u<=0?0:H(t/2,u/2)}function V(u,t=z){if(!(t>0)||!(t<1))return NaN;let l=0,m=Math.max(1,u);for(;T(m,u)<t;)m*=2;for(let e=0;e<200;e++){const d=(l+m)/2;if(T(d,u)<t?l=d:m=d,m-l<1e-10)break}return(l+m)/2}function ne(u){const t=u.length,l=u.map((m,e)=>{const d=m.slice();for(let f=0;f<t;f++)d.push(e===f?1:0);return d});for(let m=0;m<t;m++){let e=m;for(let f=m+1;f<t;f++)Math.abs(l[f][m])>Math.abs(l[e][m])&&(e=f);if(Math.abs(l[e][m])<1e-12)return null;if(e!==m){const f=l[e];l[e]=l[m],l[m]=f}const d=l[m][m];for(let f=0;f<2*t;f++)l[m][f]/=d;for(let f=0;f<t;f++){if(f===m)continue;const r=l[f][m];if(r!==0)for(let n=0;n<2*t;n++)l[f][n]-=r*l[m][n]}}return l.map(m=>m.slice(t))}function R(u,t){const l=u.length,m=new Array(t).fill(0);for(const f of u)for(let r=0;r<t;r++)m[r]+=f[r];for(let f=0;f<t;f++)m[f]/=l;const e=Array.from({length:t},()=>new Array(t).fill(0));for(const f of u)for(let r=0;r<t;r++){const n=f[r]-m[r];for(let c=r;c<t;c++)e[r][c]+=n*(f[c]-m[c])}const d=l>1?l-1:1;for(let f=0;f<t;f++)for(let r=f;r<t;r++)e[f][r]/=d,e[r][f]=e[f][r];return{mean:m,cov:e}}function j(u,t={}){const l=Number.isFinite(t.p)?t.p:z,m=Number.isFinite(t.ridge)?t.ridge:1e-6,e=u.length;if(!e)return null;const d=u[0].length;if(!d)return null;const f=new Array(e).fill(null),r=new Array(e).fill(null),n=new Array(e).fill(!1),c=[],g=[];for(let N=0;N<e;N++){const I=u[N];let K=I.length===d;const B=new Array(d);for(let ee=0;K&&ee<d;ee++){const J=Number(I[ee]);Number.isFinite(J)?B[ee]=J:K=!1}K&&(c.push(N),g.push(B))}const A=d,P=V(A,l);if(g.length<=d)return{center:[],df:A,cutoff:P,singular:!0,used:g.length,distances:f,squared:r,flags:n,flagged:0};const{mean:q,cov:L}=R(g,d);let v=ne(L),G=!1;if(!v){G=!0;let N=0;for(let B=0;B<d;B++)N+=L[B][B];const I=N/d*m||m,K=L.map((B,ee)=>B.map((J,ue)=>ee===ue?J+I:J));if(v=ne(K),!v)return{center:q,df:A,cutoff:P,singular:!0,used:g.length,distances:f,squared:r,flags:n,flagged:0}}let S=0;for(let N=0;N<g.length;N++){const I=g[N],K=new Array(d);for(let J=0;J<d;J++)K[J]=I[J]-q[J];let B=0;for(let J=0;J<d;J++){let ue=0;for(let de=0;de<d;de++)ue+=v[J][de]*K[de];B+=K[J]*ue}B<0&&(B=0);const ee=c[N];r[ee]=B,f[ee]=Math.sqrt(B),B>P&&(n[ee]=!0,S++)}return{center:q,df:A,cutoff:P,singular:G,used:g.length,distances:f,squared:r,flags:n,flagged:S}}const i=20,a=Object.freeze(["rollingModifiedZScore","rollingIqr"]);function s(u,t={}){const l=t.method==="rollingIqr"?"rollingIqr":"rollingModifiedZScore",m=Number.isFinite(t.windowLen)&&t.windowLen>=1?Math.floor(t.windowLen):i,e=Number.isFinite(t.threshold)?t.threshold:Z,d=Number.isFinite(t.k)?t.k:E,f=Number.isFinite(t.minPeriods)&&t.minPeriods>=1?Math.floor(t.minPeriods):m,r=u.length,n=new Array(r).fill(null),c=new Array(r).fill(!1);let g=0;for(let A=0;A<r;A++){const P=Number(u[A]);if(!Number.isFinite(P))continue;const q=Math.max(0,A-m+1),L=[];for(let v=q;v<=A;v++){const G=Number(u[v]);Number.isFinite(G)&&L.push(G)}if(!(L.length<f))if(l==="rollingIqr"){const v=te(L,{k:d});if(!v)continue;(P<v.lower||P>v.upper)&&(c[A]=!0,g++)}else{const v=Y(L);if(!v||v.mad===0)continue;const G=_*(P-v.median)/v.mad;n[A]=G,Math.abs(G)>e&&(c[A]=!0,g++)}}return{method:l,windowLen:m,minPeriods:f,threshold:e,k:d,scores:n,flags:c,flagged:g}}function h(u={}){const t=u||{},l=t.field;if(typeof l!="string"||!l)throw new TypeError("[lattice] anomalyCondition: a string `field` naming the numeric property to monitor is required");const m=t.method||"modifiedZScore";if(!(re.includes(m)||a.includes(m))||m==="mahalanobis")throw new RangeError(`[lattice] anomalyCondition: unknown or unsupported method \'${m}\'`);const d=typeof t.orderBy=="string"?t.orderBy:null,f=t.latest===!0,r=a.includes(m),n=c=>Number(c==null?NaN:c[l]);return c=>{const g=Array.isArray(c)?c.slice():[...c];d&&g.sort((v,G)=>{const S=v?.[d],N=G?.[d];return S===N?0:S==null?-1:N==null?1:S<N?-1:1});const A=g.map(n);let P,q;if(r)({flags:P,scores:q}=s(A,{method:m,windowLen:t.windowLen,threshold:t.threshold,k:t.k,minPeriods:t.minPeriods}));else if(m==="iqr"){const v=te(A,{k:t.k});P=A.map(G=>v?Number.isFinite(G)&&(G<v.lower||G>v.upper):!1),q=A.map(()=>null)}else({flags:P,scores:q}=se(A,{threshold:t.threshold}));if(f){const v=P.length-1;return v<0||!P[v]?!1:{method:m,field:l,flagged:[{row:g[v],score:q[v]}]}}const L=[];for(let v=0;v<P.length;v++)P[v]&&L.push({row:g[v],score:q[v]});return L.length?{method:m,field:l,flagged:L}:!1}}}),Ce("packages/core/src/compute/forecast.js",function(o,me){"use strict";Object.defineProperty(o,"FORECAST_METHODS",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(o,"forecast",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return u}});const ae=me("packages/core/src/compute/special.js"),he=ae.normalQuantile,W=ae.studentTQuantile,_=me("packages/core/src/internal/util.js").warnOnce,Z=Object.freeze(["movingAverage","ses","holt","holtWinters","linear"]),E=1e-4,z=1-1e-4;function re(t){const l=[];for(let m=0;m<t.length;m++){const e=t[m];if(e!==null&&typeof e=="object"){const d=Number.isFinite(e.at)?e.at:m,f=Number.isFinite(e.value)?e.value:null;l.push({at:d,value:f})}else l.push({at:m,value:Number.isFinite(e)?Number(e):null})}return l}function Y(t){const l=t.filter(r=>r.value!==null),m=l[0],e=l[l.length-1],d=e.at-m.at,f=l.length>1&&d>0?d/(l.length-1):1;return{lastAt:e.at,step:f}}function se(t){return Math.min(z,Math.max(E,t))}function te(t,l=E,m=z,e=80){const d=(Math.sqrt(5)-1)/2;let f=l,r=m,n=r-d*(r-f),c=f+d*(r-f),g=t(n),A=t(c);for(let P=0;P<e;P++)g<A?(r=c,c=n,A=g,n=r-d*(r-f),g=t(n)):(f=n,n=c,g=A,c=f+d*(r-f),A=t(c));return(f+r)/2}function H(t,l){let m=null,e=0,d=0;for(let f=0;f<t.length;f++){const r=t[f];if(r!==null){if(m===null){m=r;continue}e+=(r-m)**2,d+=1,m=l*r+(1-l)*m}}return{level:m,sse:e,m:d}}function T(t,l,m){let e=null,d=null,f=0,r=0;for(let n=0;n<t.length;n++){const c=t[n];if(c===null){e!==null&&d!==null&&(e+=d);continue}if(e===null){e=c;continue}d===null&&(d=c-e);const g=e+d;f+=(c-g)**2,r+=1;const A=e;e=l*c+(1-l)*(A+d),d=m*(e-A)+(1-m)*d}return{level:e,trend:d,sse:f,m:r}}function V(t,l,m,e,d){const f=t.length;if(f<2*l)return null;const r=G=>{let S=0,N=0;for(let I=G;I<G+l&&I<f;I++)t[I]!==null&&(S+=t[I],N+=1);return N?S/N:null},n=r(0),c=r(l);if(n===null||c===null)return null;let g=n,A=(c-n)/l;const P=new Array(l).fill(0);for(let G=0;G<l;G++)P[G]=t[G]===null?0:t[G]-g;const q=P.reduce((G,S)=>G+S,0)/l;for(let G=0;G<l;G++)P[G]-=q;let L=0,v=0;for(let G=l;G<f;G++){const S=G%l,N=P[S],I=t[G];if(I===null){g+=A;continue}const K=g+A+N;L+=(I-K)**2,v+=1;const B=g;g=m*(I-N)+(1-m)*(g+A),A=e*(g-B)+(1-e)*A,P[S]=d*(I-g)+(1-d)*N}return{level:g,trend:A,season:P,phase:(f-1)%l,sse:L,count:v}}function ne(t,l,m){let e=1;for(const f of l)e+=f*f;const d=Math.sqrt(t*e);return{se:d,margin:m*d}}function R(t,l={}){if(!t||typeof t.length!="number"||t.length===0)return null;const m=Z.includes(l.method)?l.method:"linear",e=Math.max(1,Math.floor(Number(l.horizon)||1)),d=Number.isFinite(l.confidence)&&l.confidence>0&&l.confidence<1?l.confidence:.95,f=1-(1-d)/2,r=re(t),n=r.map(L=>L.value),c=n.filter(L=>L!==null),g=c.length,{lastAt:A,step:P}=g?Y(r):{lastAt:0,step:1},q=L=>A+L*P;return m==="linear"?j(r,g,e,d,f,q):m==="movingAverage"?i(c,g,e,d,f,l,q):m==="ses"?a(n,g,e,d,f,l,q):m==="holt"?s(n,g,e,d,f,l,q):h(n,g,e,d,f,l,q)}function j(t,l,m,e,d,f){if(l<2)return null;let r=0,n=0;for(const I of t)I.value!==null&&(r+=I.at,n+=I.value);r/=l,n/=l;let c=0,g=0,A=0;for(const I of t){if(I.value===null)continue;const K=I.at-r,B=I.value-n;c+=K*K,g+=K*B,A+=B*B}if(c===0)return null;const P=g/c,q=n-P*r,L=A===0?1:Math.max(0,Math.min(1,g*g/(c*A))),v=Math.max(0,A-P*g),G=l>2?Math.sqrt(v/(l-2)):null,S=l>2?W(d,l-2):null,N=[];for(let I=1;I<=m;I++){const K=f(I),B=q+P*K;let ee=null,J=null,ue=null,de=null,Oe=null;if(G!==null){const Ae=1/l+(K-r)**2/c,Se=G*Math.sqrt(1+Ae),D=G*Math.sqrt(Ae);Oe=Se,ee=B-S*Se,J=B+S*Se,ue=B-S*D,de=B+S*D}N.push({step:I,at:K,mean:B,lower:ee,upper:J,lowerMean:ue,upperMean:de,se:Oe})}return{method:"linear",horizon:m,confidence:e,n:l,sigma:G,r2:L,params:{slope:P,intercept:q},points:N}}function i(t,l,m,e,d,f,r){if(l<1)return null;const n=Math.max(1,Math.min(l,Math.floor(Number(f.windowLen)||l))),c=t.slice(l-n);let g=0;for(const G of c)g+=G;const A=g/n;let P=null,q=null;if(n>1){let G=0;for(const N of c)G+=(N-A)**2;P=Math.sqrt(G/(n-1))*Math.sqrt(1+1/n),q=W(d,n-1)}const L=P===null?null:q*P,v=[];for(let G=1;G<=m;G++)v.push({step:G,at:r(G),mean:A,lower:L===null?null:A-L,upper:L===null?null:A+L,se:P});return{method:"movingAverage",horizon:m,confidence:e,n:l,sigma:P===null?null:P,params:{windowLen:n},points:v}}function a(t,l,m,e,d,f,r){if(l<1)return null;let n=Number.isFinite(f.alpha)?se(f.alpha):null;n===null&&(n=te(q=>H(t,q).sse));const c=H(t,n),g=he(d),A=c.m>0?c.sse/c.m:null,P=[];for(let q=1;q<=m;q++){const L=c.level;let v=null,G=null,S=null;if(A!==null){const N=[];for(let K=1;K<q;K++)N.push(n);const I=ne(A,N,g);S=I.se,v=L-I.margin,G=L+I.margin}P.push({step:q,at:r(q),mean:L,lower:v,upper:G,se:S})}return{method:"ses",horizon:m,confidence:e,n:l,sigma:A===null?null:Math.sqrt(A),params:{alpha:n},points:P}}function s(t,l,m,e,d,f,r){if(l<2)return null;let n=Number.isFinite(f.alpha)?se(f.alpha):null,c=Number.isFinite(f.beta)?se(f.beta):null;if(n===null||c===null){let v=n===null?.5:n,G=c===null?.5:c;for(let S=0;S<6;S++)n===null&&(v=te(N=>T(t,N,G).sse)),c===null&&(G=te(N=>T(t,v,N).sse));n=n===null?v:n,c=c===null?G:c}const g=T(t,n,c),A=he(d),P=g.m>0?g.sse/g.m:null,q=n*c,L=[];for(let v=1;v<=m;v++){const G=g.level+v*g.trend;let S=null,N=null,I=null;if(P!==null){const K=[];for(let ee=1;ee<v;ee++)K.push(n+ee*q);const B=ne(P,K,A);I=B.se,S=G-B.margin,N=G+B.margin}L.push({step:v,at:r(v),mean:G,lower:S,upper:N,se:I})}return{method:"holt",horizon:m,confidence:e,n:l,sigma:P===null?null:Math.sqrt(P),params:{alpha:n,beta:c},points:L}}function h(t,l,m,e,d,f,r){const n=Math.floor(Number(f.period));if(!(n>=2))return _("forecast.holtWinters.period","forecast: holtWinters needs a period (opts.period >= 2)"),null;if(l<2*n)return null;let c=Number.isFinite(f.alpha)?se(f.alpha):null,g=Number.isFinite(f.beta)?se(f.beta):null,A=Number.isFinite(f.gamma)?se(f.gamma):null;const P=(I,K,B)=>{const ee=V(t,n,I,K,B);return ee?ee.sse:1/0};if(c===null||g===null||A===null){let I=c===null?.5:c,K=g===null?.5:g,B=A===null?.5:A;for(let ee=0;ee<8;ee++)c===null&&(I=te(J=>P(J,K,B))),g===null&&(K=te(J=>P(I,J,B))),A===null&&(B=te(J=>P(I,K,J)));c=c===null?I:c,g=g===null?K:g,A=A===null?B:A}const q=V(t,n,c,g,A);if(!q)return null;const L=he(d),v=q.count>0?q.sse/q.count:null,G=c*g,S=A*(1-c),N=[];for(let I=1;I<=m;I++){const K=q.season[(q.phase+I)%n],B=q.level+I*q.trend+K;let ee=null,J=null,ue=null;if(v!==null){const de=[];for(let Ae=1;Ae<I;Ae++)de.push(c+Ae*G+(Ae%n===0?S:0));const Oe=ne(v,de,L);ue=Oe.se,ee=B-Oe.margin,J=B+Oe.margin}N.push({step:I,at:r(I),mean:B,lower:ee,upper:J,se:ue})}return{method:"holtWinters",horizon:m,confidence:e,n:l,sigma:v===null?null:Math.sqrt(v),params:{alpha:c,beta:g,gamma:A,period:n},points:N}}const u={FORECAST_METHODS:Z,forecast:R}}),Ce("packages/core/src/compute/index.js",function(o,me){"use strict";const ae=me("packages/core/src/compute/sort.js");Object.defineProperty(o,"sortColumn",{enumerable:!0,get:function(){return ae.sortColumn}}),Object.defineProperty(o,"sortMulti",{enumerable:!0,get:function(){return ae.sortMulti}}),Object.defineProperty(o,"radixSortFloat64",{enumerable:!0,get:function(){return ae.radixSortFloat64}}),Object.defineProperty(o,"radixSortInt32",{enumerable:!0,get:function(){return ae.radixSortInt32}}),Object.defineProperty(o,"rankSortDictionary",{enumerable:!0,get:function(){return ae.rankSortDictionary}}),Object.defineProperty(o,"mergeSortComparator",{enumerable:!0,get:function(){return ae.mergeSortComparator}}),Object.defineProperty(o,"collateStringRanks",{enumerable:!0,get:function(){return ae.collateStringRanks}}),Object.defineProperty(o,"rankSortStrings",{enumerable:!0,get:function(){return ae.rankSortStrings}});const he=me("packages/core/src/compute/sortspec.js");Object.defineProperty(o,"collationDescriptor",{enumerable:!0,get:function(){return he.collationDescriptor}}),Object.defineProperty(o,"isPortableSort",{enumerable:!0,get:function(){return he.isPortableSort}}),Object.defineProperty(o,"isPortableSortSet",{enumerable:!0,get:function(){return he.isPortableSortSet}}),Object.defineProperty(o,"describeSortEntry",{enumerable:!0,get:function(){return he.describeSortEntry}}),Object.defineProperty(o,"describeSort",{enumerable:!0,get:function(){return he.describeSort}});const W=me("packages/core/src/compute/filter.js");Object.defineProperty(o,"evaluateFilters",{enumerable:!0,get:function(){return W.evaluateFilters}}),Object.defineProperty(o,"evaluateCondition",{enumerable:!0,get:function(){return W.evaluateCondition}}),Object.defineProperty(o,"compact",{enumerable:!0,get:function(){return W.compact}}),Object.defineProperty(o,"testValue",{enumerable:!0,get:function(){return W.testValue}}),Object.defineProperty(o,"compilePredicate",{enumerable:!0,get:function(){return W.compilePredicate}}),Object.defineProperty(o,"releaseMask",{enumerable:!0,get:function(){return W.releaseMask}}),Object.defineProperty(o,"pruneColumn",{enumerable:!0,get:function(){return W.pruneColumn}}),Object.defineProperty(o,"mentionsColumn",{enumerable:!0,get:function(){return W.mentionsColumn}});const U=me("packages/core/src/compute/group.js");Object.defineProperty(o,"groupByColumns",{enumerable:!0,get:function(){return U.groupByColumns}}),Object.defineProperty(o,"packKeys",{enumerable:!0,get:function(){return U.packKeys}});const _=me("packages/core/src/compute/facet.js");Object.defineProperty(o,"facet",{enumerable:!0,get:function(){return _.facet}}),Object.defineProperty(o,"computeBounds",{enumerable:!0,get:function(){return _.computeBounds}}),Object.defineProperty(o,"countInto",{enumerable:!0,get:function(){return _.countInto}}),Object.defineProperty(o,"bucketOf",{enumerable:!0,get:function(){return _.bucketOf}}),Object.defineProperty(o,"facetKind",{enumerable:!0,get:function(){return _.facetKind}}),Object.defineProperty(o,"cardinalityOf",{enumerable:!0,get:function(){return _.cardinalityOf}}),Object.defineProperty(o,"pickGranularity",{enumerable:!0,get:function(){return _.pickGranularity}}),Object.defineProperty(o,"floorTo",{enumerable:!0,get:function(){return _.floorTo}}),Object.defineProperty(o,"advance",{enumerable:!0,get:function(){return _.advance}}),Object.defineProperty(o,"STRATEGIES",{enumerable:!0,get:function(){return _.STRATEGIES}}),Object.defineProperty(o,"GRANULARITIES",{enumerable:!0,get:function(){return _.GRANULARITIES}}),Object.defineProperty(o,"DEFAULT_BUCKETS",{enumerable:!0,get:function(){return _.DEFAULT_BUCKETS}}),Object.defineProperty(o,"DEFAULT_CARDINALITY_LIMIT",{enumerable:!0,get:function(){return _.DEFAULT_CARDINALITY_LIMIT}}),Object.defineProperty(o,"QUANTILE_SAMPLE",{enumerable:!0,get:function(){return _.QUANTILE_SAMPLE}});const Z=me("packages/core/src/compute/total.js");Object.defineProperty(o,"TOTAL_FNS",{enumerable:!0,get:function(){return Z.TOTAL_FNS}}),Object.defineProperty(o,"TOTAL_LABELS",{enumerable:!0,get:function(){return Z.TOTAL_LABELS}}),Object.defineProperty(o,"totalLabel",{enumerable:!0,get:function(){return Z.totalLabel}}),Object.defineProperty(o,"total",{enumerable:!0,get:function(){return Z.total}}),Object.defineProperty(o,"collectValues",{enumerable:!0,get:function(){return Z.collectValues}});const E=me("packages/core/src/compute/pivot.js");Object.defineProperty(o,"pivot",{enumerable:!0,get:function(){return E.pivot}}),Object.defineProperty(o,"resolvePivotKeys",{enumerable:!0,get:function(){return E.resolvePivotKeys}}),Object.defineProperty(o,"pivotKey",{enumerable:!0,get:function(){return E.pivotKey}}),Object.defineProperty(o,"joinPath",{enumerable:!0,get:function(){return E.joinPath}}),Object.defineProperty(o,"KEY_DELIMITER",{enumerable:!0,get:function(){return E.KEY_DELIMITER}}),Object.defineProperty(o,"DEFAULT_PATH_SEPARATOR",{enumerable:!0,get:function(){return E.DEFAULT_PATH_SEPARATOR}}),Object.defineProperty(o,"DEFAULT_MAX_COLUMNS",{enumerable:!0,get:function(){return E.DEFAULT_MAX_COLUMNS}});const z=me("packages/core/src/compute/pivotmatrix.js");Object.defineProperty(o,"pivotMatrix",{enumerable:!0,get:function(){return z.pivotMatrix}}),Object.defineProperty(o,"resolveAxis",{enumerable:!0,get:function(){return z.resolveAxis}}),Object.defineProperty(o,"cellKey",{enumerable:!0,get:function(){return z.cellKey}}),Object.defineProperty(o,"marginKey",{enumerable:!0,get:function(){return z.marginKey}}),Object.defineProperty(o,"GRAND_PATH",{enumerable:!0,get:function(){return z.GRAND_PATH}});const re=me("packages/core/src/compute/reference.js");Object.defineProperty(o,"referenceSort",{enumerable:!0,get:function(){return re.referenceSort}}),Object.defineProperty(o,"referenceFilter",{enumerable:!0,get:function(){return re.referenceFilter}}),Object.defineProperty(o,"referenceGroup",{enumerable:!0,get:function(){return re.referenceGroup}}),Object.defineProperty(o,"referenceTotal",{enumerable:!0,get:function(){return re.referenceTotal}}),Object.defineProperty(o,"referencePasses",{enumerable:!0,get:function(){return re.referencePasses}}),Object.defineProperty(o,"referenceValue",{enumerable:!0,get:function(){return re.referenceValue}});const Y=me("packages/core/src/compute/handle.js");Object.defineProperty(o,"identity",{enumerable:!0,get:function(){return Y.identity}}),Object.defineProperty(o,"rowCount",{enumerable:!0,get:function(){return Y.rowCount}}),Object.defineProperty(o,"presenceReader",{enumerable:!0,get:function(){return Y.presenceReader}}),Object.defineProperty(o,"bitReader",{enumerable:!0,get:function(){return Y.bitReader}}),Object.defineProperty(o,"valueReader",{enumerable:!0,get:function(){return Y.valueReader}}),Object.defineProperty(o,"valueComparator",{enumerable:!0,get:function(){return Y.valueComparator}}),Object.defineProperty(o,"numericTotalOrder",{enumerable:!0,get:function(){return Y.numericTotalOrder}}),Object.defineProperty(o,"dictRanks",{enumerable:!0,get:function(){return Y.dictRanks}}),Object.defineProperty(o,"dictSize",{enumerable:!0,get:function(){return Y.dictSize}}),Object.defineProperty(o,"dictValue",{enumerable:!0,get:function(){return Y.dictValue}}),Object.defineProperty(o,"multiValue",{enumerable:!0,get:function(){return Y.multiValue}}),Object.defineProperty(o,"isMissing",{enumerable:!0,get:function(){return Y.isMissing}});const se=me("packages/core/src/compute/sketch.js");Object.defineProperty(o,"Welford",{enumerable:!0,get:function(){return se.Welford}}),Object.defineProperty(o,"Reservoir",{enumerable:!0,get:function(){return se.Reservoir}}),Object.defineProperty(o,"HyperLogLog",{enumerable:!0,get:function(){return se.HyperLogLog}}),Object.defineProperty(o,"SpaceSaving",{enumerable:!0,get:function(){return se.SpaceSaving}}),Object.defineProperty(o,"KLL",{enumerable:!0,get:function(){return se.KLL}}),Object.defineProperty(o,"hash32",{enumerable:!0,get:function(){return se.hash32}}),Object.defineProperty(o,"SKETCH_BOUNDS",{enumerable:!0,get:function(){return se.SKETCH_BOUNDS}});const te=me("packages/core/src/compute/windowed.js");Object.defineProperty(o,"Window",{enumerable:!0,get:function(){return te.Window}}),Object.defineProperty(o,"WINDOW_KINDS",{enumerable:!0,get:function(){return te.WINDOW_KINDS}}),Object.defineProperty(o,"openWindow",{enumerable:!0,get:function(){return te.openWindow}});const H=me("packages/core/src/compute/statistics.js");Object.defineProperty(o,"MAINTENANCE",{enumerable:!0,get:function(){return H.MAINTENANCE}}),Object.defineProperty(o,"APPROXIMATE",{enumerable:!0,get:function(){return H.APPROXIMATE}}),Object.defineProperty(o,"maintenanceOf",{enumerable:!0,get:function(){return H.maintenanceOf}});const T=me("packages/core/src/compute/anomaly.js");Object.defineProperty(o,"ANOMALY_METHODS",{enumerable:!0,get:function(){return T.ANOMALY_METHODS}}),Object.defineProperty(o,"modifiedZScores",{enumerable:!0,get:function(){return T.modifiedZScores}}),Object.defineProperty(o,"iqrFences",{enumerable:!0,get:function(){return T.iqrFences}}),Object.defineProperty(o,"mahalanobis",{enumerable:!0,get:function(){return T.mahalanobis}}),Object.defineProperty(o,"ROLLING_ANOMALY_METHODS",{enumerable:!0,get:function(){return T.ROLLING_ANOMALY_METHODS}}),Object.defineProperty(o,"rollingAnomalies",{enumerable:!0,get:function(){return T.rollingAnomalies}}),Object.defineProperty(o,"anomalyCondition",{enumerable:!0,get:function(){return T.anomalyCondition}});const V=me("packages/core/src/compute/forecast.js");Object.defineProperty(o,"FORECAST_METHODS",{enumerable:!0,get:function(){return V.FORECAST_METHODS}}),Object.defineProperty(o,"forecast",{enumerable:!0,get:function(){return V.forecast}})}),Ce("packages/worker/src/kernel.js",function(o,me){"use strict";Object.defineProperty(o,"loadCompute",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(o,"setCompute",{enumerable:!0,get:function(){return R}}),Object.defineProperty(o,"dispatch",{enumerable:!0,get:function(){return i}}),Object.defineProperty(o,"handleMessage",{enumerable:!0,get:function(){return a}}),Object.defineProperty(o,"installKernel",{enumerable:!0,get:function(){return s}});const ae=me("packages/worker/src/transport.js"),he=ae.PROTOCOL,W=ae.OPS,U=ae.CONTROL,_=ae.ERRORS,Z=ae.unpackHandle,E=ae.unpackHandles,z=ae.createMaskPool,re=ae.collectTransfers,Y=me("packages/core/src/store/columnpack.js"),se=Y.packChunk,te=Y.packedTransfers;let H=null,T=null,V=null;async function ne(h){if(H)return H;if(!T){const u=h||(()=>Promise.resolve(me("packages/core/src/compute/index.js")));T=Promise.resolve().then(u).then(t=>(H=t,t)).catch(t=>(V=t,H=null,null))}return T}function R(h){H=h,T=h?Promise.resolve(h):null,V=h?null:V}function j(h,u,t){const l=new Map;for(const m of h)m&&l.set(m.id,m);return{handle(m){return l.get(m)},count:u,pool:z(),locale:t}}function i(h,u){const{op:t,args:l}=h;if(t===W.COLUMNIZE)return se(l.schema||[],l.rows||[],l.opts||{});const m=u[t];if(typeof m!="function"){const e=new Error(`[lattice] compute kernel \'${t}\' is not exported`);throw e.code=_.NO_KERNEL,e}switch(t){case W.COLLATE_STRING_RANKS:return m(l.table||[],(l.table||[]).length,l.locale);case W.SORT_COLUMN:return m(Z(l.handle),l.order??null,l.opts||{});case W.SORT_MULTI:{const e=E(l.handles||[]),d=(l.entries||[]).map(f=>({...f,handle:e[f.index]}));return m(e,d,l.order??null)}case W.EVALUATE_FILTERS:return m(l.filters,j(E(l.handles||[]),l.count,l.locale));case W.COMPACT:return m(l.mask,l.count,void 0);case W.GROUP_BY_COLUMNS:return m(E(l.handles||[]),l.order??null,l.opts||{});case W.TOTAL:return m(Z(l.handle),l.indices??null,l.fn);case W.PIVOT:return m(E(l.handles||[]),l.order??null,l.opts||{});case W.FACET:return m(Z(l.handle),l.indices??null,l.count,l.opts||{});default:{const e=new Error(`[lattice] unknown worker op \'${t}\'`);throw e.code=_.PROTOCOL,e}}}async function a(h,u={}){if(!h||h.lattice!==he)return null;const{id:t,op:l}=h;if(l===U.CANCEL)return u.cancelled?.add(h.target),null;if(l===U.PING)return{reply:{lattice:he,id:t,ok:!0,result:"pong"},transfer:[]};if(l===W.COLUMNIZE){if(u.cancelled?.has(t))return u.cancelled.delete(t),null;try{const e=se(h.args.schema||[],h.args.rows||[],h.args.opts||{});return u.cancelled?.has(t)?(u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]}):{reply:{lattice:he,id:t,ok:!0,result:e},transfer:te(e)}}catch(e){const d=e;return{reply:{lattice:he,id:t,ok:!1,error:{code:d.code||_.KERNEL,message:d.message||String(e),stack:d.stack}},transfer:[]}}}const m=await ne(u.loader);if(!m)return{reply:{lattice:he,id:t,ok:!1,error:{code:_.NO_COMPUTE,message:`[lattice] compute kernels unavailable in worker: ${V?V.message:"module not found"}`}},transfer:[]};if(u.cancelled?.has(t))return u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]};try{const e=i(h,m);return u.cancelled?.has(t)?(u.cancelled.delete(t),{reply:{lattice:he,id:t,ok:!1,error:{code:_.ABORTED,message:"[lattice] request superseded"}},transfer:[]}):{reply:{lattice:he,id:t,ok:!0,result:e},transfer:re(e)}}catch(e){const d=e;return{reply:{lattice:he,id:t,ok:!1,error:{code:d.code||_.KERNEL,message:d.message||String(e),stack:d.stack}},transfer:[]}}}function s(h,u={}){const t=new Set,l=async m=>{const e=await a(m.data,{loader:u.loader,cancelled:t});e&&h.postMessage(e.reply,e.transfer)};return h.addEventListener("message",l),ne(u.loader).then(m=>{h.postMessage({lattice:he,id:0,op:U.READY,compute:!!m})}),()=>h.removeEventListener("message",l)}});var kt=at("packages/worker/src/kernel.js");Ot.__latticeKernel=kt})(typeof globalThis<"u"?globalThis:this);\n\n__latticeKernel.installKernel(self);\n',{type:"classic"})}catch{}var xn=Rn("packages/modules/htmx/index.js");typeof module=="object"&&module.exports?module.exports=xn:typeof define=="function"&&define.amd?define(function(){return xn}):mr.LatticeGridHtmx=xn})(typeof globalThis<"u"?globalThis:this);
|
|
312
312
|
|
|
313
313
|
//# sourceMappingURL=htmx.min.js.map
|